Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Flutter中ListView 动态数据生成列表

Flutter中ListView 动态数据生成列表

作者头像
越陌度阡
发布于 2022-05-06 06:55:50
发布于 2022-05-06 06:55:50
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

1. 循环数据,生成列表效果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'package:flutter/material.dart';

void main(){
    runApp(MyApp());
}

// 抽离成一个单独的组件
class MyApp extends StatelessWidget{
    @override
    Widget build(BuildContext context) {
        return MaterialApp(
            home: Scaffold(
                // 导航条
                appBar:AppBar(title:Text('Flutter App')),
                // 主体
                body:HomeContent(),
            ),
            theme: ThemeData(primarySwatch:Colors.yellow),
        );
    }
}

// 循环动态生成的数据,生成列表
class HomeContent extends StatelessWidget{
    // 私有方法
    List<Widget> _getData(){
        List<Widget> list = new List();
        for(int i =0;i<20;i++){
            list.add(ListTile(
                title:Text("我是$i列表")
            ));
        }
        return list;  
    }
    @override
    Widget build(BuildContext context) {
        return ListView(
            children:this._getData()
        ); 
    }
}

效果图如下:

2. 循环本地模拟数据,生成列表效果。

新建一个文件,放置本地模拟数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// lib/res/listData.dart

List listData = [
    {
        "title": 'Candy Shop',
        "author": 'Mohamed Chahin',
        "imageUrl": 'https://www.itying.com/images/flutter/1.png',
    },
    {
        "title": 'Childhood in a picture',
        "author": 'Google',
        "imageUrl": 'https://www.itying.com/images/flutter/2.png',
    },
    {
        "title": 'Alibaba Shop',
        "author": 'Alibaba',
        "imageUrl": 'https://www.itying.com/images/flutter/3.png',
    },
    {
        "title": 'Candy Shop',
        "author": 'Mohamed Chahin',
        "imageUrl": 'https://www.itying.com/images/flutter/4.png',
    },
    {
        "title": 'Tornado',
        "author": 'Mohamed Chahin',
        "imageUrl": 'https://www.itying.com/images/flutter/5.png',
    },
    {
        "title": 'Undo',
        "author": 'Mohamed Chahin',
        "imageUrl": 'https://www.itying.com/images/flutter/6.png',
    },
    {
        "title": 'white-dragon',
        "author": 'Mohamed Chahin',
        "imageUrl": 'https://www.itying.com/images/flutter/7.png',
    }
];

导入本地模拟的数据,循环生成列表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'package:flutter/material.dart';
import 'package:my_app/res/listData.dart';

void main(){
    runApp(MyApp());
}

// 抽离成一个单独的组件
class MyApp extends StatelessWidget{
    @override
    Widget build(BuildContext context) {
        return MaterialApp(
            home: Scaffold(
                // 导航条
                appBar:AppBar(title:Text('Flutter App')),
                // 主体
                body:HomeContent(),
            ),
            theme: ThemeData(primarySwatch:Colors.yellow),
        );
    }
}

// 导入本地模拟的数据,循环生成列表
class HomeContent extends StatelessWidget{
    // 获取列表的私有方法
    List<Widget> _getData(){
        var list = listData.map((obj){
            return ListTile(
                leading: Image.network(obj["imageUrl"]),
                title:Text(obj["title"]),
                subtitle: Text(obj["author"])
            );
        });
        return list.toList();
    }
    @override
    Widget build(BuildContext context) {
        return ListView(
            children:this._getData()
        ); 
    }
}

效果图如下:

3. 用flutter的builder方法生成列表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'package:flutter/material.dart';
import 'package:my_app/res/listData.dart';

void main(){
    runApp(MyApp());
}

// 抽离成一个单独的组件
class MyApp extends StatelessWidget{
    @override
    Widget build(BuildContext context) {
        return MaterialApp(
            home: Scaffold(
                // 导航条
                appBar:AppBar(title:Text('Flutter App')),
                // 主体
                body:HomeContent(),
            ),
            theme: ThemeData(primarySwatch:Colors.yellow),
        );
    }
}


// 用flutter的builder方法生成列表
class HomeContent extends StatelessWidget{
    Widget _getListData(context,index){
        return ListTile(
            title:Text(listData[index]["title"]),
            leading: Image.network(listData[index]['imageUrl']),
            subtitle: Text(listData[index]["author"]),
        );
    }
    @override
    Widget build(BuildContext context) {
        // 列表构造器
        return ListView.builder(
            // 列表数量
            itemCount:listData.length,
            // 遍历生成列表
            itemBuilder: this._getListData
        );
    }
}

效果图如下:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Flutter中命名路由模块化及传参
上面的代码中分别引入了三个页面:Form.dart 和 Search.dart 以及 Tabs.dart。
越陌度阡
2020/12/28
1.6K0
8.Flutter学习之AspectRatio、Card组件
AspectRatio的作用是根据设置调整子元素child的宽高比 AspectRatio首先会在布局限制条件允许的范围内尽可能的扩展,widget的高度是由宽度和比率确定的,按照固定比例去尽量占满区域。 在满足所有限制条件后无法找到一个可行的尺寸,AspectRatio最终将会去优先适应布局限制条件,而忽略所设置的比例。
易帜
2022/02/09
6780
8.Flutter学习之AspectRatio、Card组件
Flutter 中 Padding、Row 、Column 、Expanded 组件详解
在 html 中常见的布局标签都可以使用 padding 属性,但是 Flutter 中很多 Widget 是没有 padding 属 性,这个时候我们可以用 Padding 组件处理容器与子元素直接的间距。
越陌度阡
2020/12/22
1.8K0
Flutter 中 Padding、Row 、Column 、Expanded 组件详解
Flutter 中 image 图片组件
1. alignment 对齐方式 。值为Alignment类型,如:Alignment.topCenter;
越陌度阡
2020/12/18
1.6K0
Flutter 中 image 图片组件
Flutter中AspectRatio、Card 卡片组件
AspectRatio 首先会在布局限制条件允许的范围内尽可能的扩展,widget 的高度是由宽度和比率决定的,类似于 BoxFit 中的 contain,按照固定比率去尽量占满区域。
越陌度阡
2020/12/23
1.8K0
Flutter中AspectRatio、Card 卡片组件
Flutter 中 ListView 垂直列表组件、水平列表组件
列表布局是项目开发中最常用的一种布局方式,Flutter 中我们可以通过 ListView 来定义列表项,支持垂直和水平方向展示。
越陌度阡
2020/12/21
2K0
Flutter 中 ListView 垂直列表组件、水平列表组件
Flutter入门(一)
Flutter的sdk地址https://flutter.dev/docs/development/tools/sdk/releases
用户3112896
2019/12/27
7170
Flutter入门(一)
Flutter中Wrap组件
Wrap 可以实现流布局,单行的 Wrap 跟 Row 表现几乎一致,单列的 Wrap 则跟 Column 表 现几乎一致。但 Row 与 Column 都是单行单列的,Wrap 则突破了这个限制,mainAxis 上空间不足时,则向 crossAxis 上去扩展显示。
越陌度阡
2022/05/06
4300
Flutter中Wrap组件
Flutter中ListView 垂直列表组件、水平列表组件
列表布局是项目开发中最常用的一种布局方式,Flutter 中我们可以通过 ListView 来定义列表项,支持垂直和水平方向展示。
越陌度阡
2022/05/06
1.6K0
Flutter中ListView 垂直列表组件、水平列表组件
Flutter 中 Wrap组件
Wrap 可以实现流布局,单行的 Wrap 跟 Row 表现几乎一致,单列的 Wrap 则跟 Row 表 现几乎一致。但 Row 与 Column 都是单行单列的,Wrap 则突破了这个限制,mainAxis 上空 间不足时,则向 crossAxis 上去扩展显示。
越陌度阡
2020/12/23
1K0
Flutter 中 Wrap组件
Flutter中Stack层叠组件以及与Align、Positioned组件实现定位布局
1. Stack 组件 Stack 表示堆的意思,用此组件修饰的子组件会“堆”在一起。 常见属性: 1. alignment 对齐方式。值的类型为Alignment; 2. children 子组件。值的类型为Widget; 代码示例: import 'package:flutter/material.dart'; void main(){ runApp(MyApp()); } // 抽离成一个单独的组件 class MyApp extends StatelessWidget{ @ov
越陌度阡
2020/12/22
1.1K0
Flutter中Stack层叠组件以及与Align、Positioned组件实现定位布局
Flutter中GridView网格列表组件的使用
当数据量很大的时候用矩阵方式排列比较清晰,此时我们可以用网格列表组件 GridView 实现布局。
越陌度阡
2022/05/06
3.6K0
Flutter中GridView网格列表组件的使用
Flutter开发:Gridview的使用
Flutter开发中,表格组件是经常要用到的,表格展示数据也是App开发过程中不可缺少的需求的功能,其实Gridview的属性和ListView的属性很接近,那么本篇文章就来聊聊Flutter开发中表格组件Gridview的简单使用。
三掌柜
2022/04/12
7360
Flutter开发:Gridview的使用
Flutter 中 GridView网格列表组件的使用
当数据量很大的时候用矩阵方式排列比较清晰,此时我们可以用网格列表组件 GridView 实现布局。
越陌度阡
2020/12/22
3.7K0
Flutter 中 GridView网格列表组件的使用
利用Flutter中的ListView进行动态卡片布局
真香!本来觉得用以前的java就能做的为啥还用flutter,但是最近接触flutter之后感觉这才是写移动应用的神器啊! 尤其是用java写的listView,各种适配器传参简直了
徐建国
2021/07/31
2.1K0
flutter基础布局代码
骨灰级别的基础代码,只是做个简单的记录,方便以后看 都是用dart写的,都在flutter项目下的lib文件夹下 import 'package:flutter/material.dart'; import './tomFont.dart'; void main() { runApp( MaterialApp( theme: ThemeData( primarySwatch: Colors.yellow, ), home: Scaffold(
Tom2Code
2023/02/14
7210
flutter基础布局代码
Flutter的目录结构以及基本架构
可以看到,除了Flutter自身的代码、资源、配置和依赖以外,Flutter工程还包含了Android和iOS的工程目录。
拉维
2019/08/12
5.9K0
Flutter的目录结构以及基本架构
Flutter 构建完整应用手册-列表 顶
显示数据列表是移动应用程序的基本模式。 Flutter包含ListView部件,使列表变得轻而易举!
南郭先生
2018/08/14
2.7K0
Flutter 构建完整应用手册-列表
                                                    顶
4.Flutter中的ListView的用法。
我们先来看看代码,从代码中可以看到我们只给Contaniner组件设置宽高,按照我们所想,应该呈现出来的是宽高为100的一个正方形Item,但是该代码运行结果如下图所示:
易帜
2022/02/09
1.7K0
4.Flutter中的ListView的用法。
Flutter入门(二)
* Padding(个人感觉和Container很像)(下面的代码很难看,重要的是思路)
用户3112896
2019/12/27
5970
Flutter入门(二)
相关推荐
Flutter中命名路由模块化及传参
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验