- google到的文章都是一把抄,真是无力吐槽;
- 先说我的结论:
List().asMap().entries.map
- List类:
/**
* Returns an unmodifiable [Map] view of `this`.
*
* The map uses the indices of this list as keys and the corresponding objects
* as values. The `Map.keys` [Iterable] iterates the indices of this list
* in numerical order.
*
* List<String> words = ['fee', 'fi', 'fo', 'fum'];
* Map<int, String> map = words.asMap();
* map[0] + map[1]; // 'feefi';
* map.keys.toList(); // [0, 1, 2, 3]
*/
Map<int, E> asMap();
/**
* The map entries of [this].
*/
Iterable<MapEntry<K, V>> get entries;
-
List
通过asMap
返回的是一个Map
对象,而Map
对象有一个entries
属性,通过entries
的map
方法就可以同时拿到key
和value
了(也就是List
的index
和value
)
一般写法直接使用map方法:
- 只能获取到
value
,无法获取到下标,这里肯定有人要说使用list
的indexOf
也可以获取到下标,那当然可以,这里不讨论这种写法
["北京", "成都", "深圳", "上海", "杭州"]
.map((e) => PopupMenuItem(child: Text(e)))
.toList();
同时获取index和value的写法
["北京", "成都", "深圳", "上海", "杭州"]
.asMap()
.entries
.map((e) => PopupMenuItem(
child: Text(e.value),
value: e.key,
))
.toList();