有没有办法在map / forEach中标识当前索引

时间:2019-07-26 21:18:32

标签: dictionary flutter dart

大多数语言都提供类似apples.map((apple, index) => {})的内容。 Dart等同于识别地图或forEach中的索引是什么?

有人提供了apples.asMap().map((apple, index) => {}),但返回的是地图的不可修改版本,当我试图映射列表以在列表的.toList()中生成小部件children:时,这是不合适的Column

2 个答案:

答案 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)

我不确定我是否完全理解您要做什么,但是mapforEach是在Iterable上定义的,并且Interable的元素不一定是有序的,因此请提供每个元素的索引不一定有意义。例如,如果Iterable是Set,则元素没有顺序。

我不太明白为什么在特定示例中需要索引。如果您扩展示例,也许我会理解。