flutter 循环组件生成方法

本文介绍了如何通过遍历、ListView构建、for循环和静态列表生成法在Flutter中创建常用循环组件。实例涵盖了列表数据处理、ListView的动态生成以及不同循环方式的应用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单介绍几种常用循环组件生成的方法

列表循环的原数据

List listViewTabs = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] ;
list tabs=[{},{},{}];
list tab = ['A','B','C','D','E'}
  1. 遍历获取List的索引值来生成列表
ListView(
	children:tabs.asMap().keys.map((index) {
	return ........;
	}).toList(),
)

等价于

var ls = tab .map((e) => Text(e)).toList();

ListView(
	children:ls ,
)

  1. flutter组件自带功能,
//以ListView.builder举例,并不代表只有这一种组件
ListView.builder(
      itemBuilder: (context, index) {
        return .......;
      },
      itemCount: tabs.length,
    ),
  1. for循环生成
//这种最适合封装起来做公共组件使用
static List<Widget> _listData(){
        List<Widget> list = new List();
        for(int i =0;i<20;i++){
            list.add(ListTile(
                title:Text("$i")
            ));
        }
        return list;  
    }
  1. 这种方式用的比较少,但是也可以达到目的
ListView(
          children: <Widget>[
            ...listview.map(
              (e) => Text(e),
            )
          ],
        ),
        
  1. 数据循环 (是否有索引值)
 GridView.count(
              shrinkWrap: true,
              padding:
                  EdgeInsets.symmetric(horizontal: 25.rpx, vertical: 20.rpx),
              crossAxisCount: 2,
              mainAxisSpacing: 15.rpx,
              crossAxisSpacing: 15.rpx,
              children: poolList.asMap().entries.map((entry) {
                final index = entry.key; // 索引值 (0, 1, 2...)
                final item = entry.value; // 单个池形状数据

                return poolShapeWidget(
                  index, // 传递索引
                  item["shape"], // 图形资源
                  item["title"], // 标题
                );
              }).toList(),
            ),


//拿索引值来区分使用
poolList.asMap().entries.map((entry) {
                final index = entry.key; // 索引值 (0, 1, 2...)
                final item = entry.value; // 单个池形状数据

                return poolShapeWidget(
                  index, // 传递索引
                  item["shape"], // 图形资源
                  item["title"], // 标题
                );
              }).toList(),



poolList.map((e) => poolShapeWidget(e["shape"], e["title"]))
                  .toList(),

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值