大多数语言都提供类似apples.map((apple, index) => {})
的内容。 Dart等同于识别地图或forEach中的索引是什么?
有人提供了apples.asMap().map((apple, index) => {})
,但返回的是地图的不可修改版本,当我试图映射列表以在列表的.toList()
中生成小部件children:
时,这是不合适的Column
。
答案 0 :(得分:1)
使用列表项的索引和值的一种方法是使用新的collection for构造。代码看起来像这样:
Widget build(BuildContext context) {
final list = ['Mango', 'Orange', 'Apple'];
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Column(
children: <Widget>[
for (int i = 0; i < list.length; i++)
ListTile(title: Text('${list[i]} has index $i')),
],
),
);
}
要执行此操作,您需要像这样:pubspec.yaml
中更新最低Dart SDK版本:
environment:
sdk: ">=2.3.0 <3.0.0"
答案 1 :(得分:-1)
我不确定我是否完全理解您要做什么,但是map
和forEach
是在Iterable上定义的,并且Interable的元素不一定是有序的,因此请提供每个元素的索引不一定有意义。例如,如果Iterable是Set,则元素没有顺序。
我不太明白为什么在特定示例中需要索引。如果您扩展示例,也许我会理解。