一、前言
我們常常用dart中的map方法遍歷List,但是直接用map,只能取到value,得不到index,這是因爲map方法就只給了一個value,map的實現如下圖:
下面就看看獲取index的方法吧~(#^.^#)~
提醒:想直接知道怎麼寫,看最後總結就行了。
二、asMap()方法
試一試:
final List<String> _testList = ['a', 'b', 'c'];
print(_testList.asMap()); // {0: a, 1: b, 2: c}
print(_testList.asMap()[0]); // a
print(_testList.asMap().keys); // (0, 1, 2) print(_testList.asMap().values); // (a, b, c) print(_testList.asMap().entries); // (MapEntry(0: a), MapEntry(1: b), MapEntry(2: c))
三、總結
- 通過 .asMap().entries, 得到一個可迭代對象 entries(Iterable<MapEntry<int, String>>);
- 遍歷entries,得到MapEntry類型的對象;
- 然後可以用 .value,.key 分別獲取value和index。
一個例子:
final List<String> _testList = ['a', 'b', 'c'];
_testList.asMap().entries.map((entry) { String item = entry.value; int index = entry.key; return Padding( padding: EdgeInsets.only(top: index == 0 ? 0 : 10), child: Text(item), ); });
END---------------------------------