この記事では、DartのasMap()メソッドの使い方について書いていきます。
サンプル
void main() {
List<String> fruits = ['りんご', 'ぶどう', 'みかん'];
// ListをMapに変換
Map<int, String> fruitMap = fruits.asMap();
print(fruitMap);
// 出力: {0: りんご, 1: ぶどう, 2: みかん}
}
解説
asMap() メソッドは、List(配列)を Map(連想配列)に変換するためのメソッドです。変換すると、元のListの「インデックス(添え字)」がMapのキーに、「要素」がMapの値になります。
よく使う例
Flutterでよく使う例は、map ループ処理の中でインデックス(番目)も一緒に使いたい場合だと思います。
そのような場合は以下を参照してください。
void main() {
List<String> users = ['佐藤', '鈴木', '田中'];
// asMap() して entries を使うことで、key(インデックス) と value(要素) を同時に扱える
List<String> textList = users.asMap().entries.map((entry) {
int index = entry.key;
String name = entry.value;
return '${index + 1}番目のユーザーは$nameさんです';
}).toList();
print(textList);
// 出力: [1番目のユーザーは佐藤さんです, 2番目のユーザーは鈴木さんです, 3番目のユーザーは田中さんです]
}
まとめ
- List.asMap() は、インデックスをキーにしたMapを作る
- asMap().entries.map(…) の形を覚えておくと、要素と一緒にインデックス(entry.key)が使えて非常に便利
