简单介绍几种常用循环组件生成的方法
列表循环的原数据
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'}
- 遍历获取List的索引值来生成列表
ListView(
children:tabs.asMap().keys.map((index) {
return ........;
}).toList(),
)
等价于
var ls = tab .map((e) => Text(e)).toList();
ListView(
children:ls ,
)
- flutter组件自带功能,
//以ListView.builder举例,并不代表只有这一种组件
ListView.builder(
itemBuilder: (context, index) {
return .......;
},
itemCount: tabs.length,
),
- 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;
}
- 这种方式用的比较少,但是也可以达到目的
ListView(
children: <Widget>[
...listview.map(
(e) => Text(e),
)
],
),
- 数据循环 (是否有索引值)
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(),