一尘不染

枚举或映射带有Dart中索引和值的列表

flutter

在dart中,有任何等同于普通的东西:

enumerate(List) -> Iterator((index, value) => f)
or 
List.enumerate()  -> Iterator((index, value) => f)
or 
List.map() -> Iterator((index, value) => f)

看来这是最简单的方法,但仍然不存在此功能似乎很奇怪。

Iterable<int>.generate(list.length).forEach( (index) => {
  newList.add(list[index], index)
});

编辑:

感谢@ hemanth-raj,我能够找到我想要的解决方案。我将把它放在这里,供需要执行类似操作的任何人使用。

List<Widget> _buildWidgets(List<Object> list) {
    return list
        .asMap()
        .map((index, value) =>
            MapEntry(index, _buildWidget(index, value)))
        .values
        .toList();
}

或者,您可以创建一个同步生成器函数以返回一个可迭代

Iterable<MapEntry<int, T>> enumerate<T>(Iterable<T> items) sync* {
  int index = 0;
  for (T item in items) {
    yield MapEntry(index, item);
    index = index + 1;
  }
}

//and use it like this.
var list = enumerate([0,1,3]).map((entry) => Text("index: ${entry.key}, value: ${entry.value}"));

阅读 442

收藏
2020-08-13

共1个答案

一尘不染

有一种asMap方法可以将列表转换为映射,其中键是索引,值是索引中的元素。请在这里看一下文档。

例:

List _sample = ['a','b','c'];
_sample.asMap().forEach((index, value) => f);

希望这可以帮助!

2020-08-13