やりかた
Dart で条件一致したコレクション要素を取得する場合は、firstWhereまたはfirstWhereOrNullを使用する。
基本的には、firstWhereOrNullを使用した方がよい。
このメソッドはboolを返す関数を引数にとり、そこに条件式を定義していく。
final list = ["apple", "banana", "melon"];
final target = list.firstWhereOrNull(
(ele) => ele == "apple"
);
println(target); //appleと出力要素がない場合もあるので、使用する際にはnullチェックも忘れずに!
containsメソッドとの違い
似たものに、containsメソッドが存在するが、こちらはそちらより柔軟なマッチングを行うことができる。
例えば、クラスのプロパティの比較など。
final list = [
Person("tarou", 15),
Person("hanako", 16),
Person("john", 17)
Person("itirou", 18)
Person("zirou", 17)
];
final target = list.firstWhereOrNull(
(ele) => ele.name == "tarou"
);
//targetにはPerson("tarou", 15)が格納される。複数の値をマッチングさせたい場合
条件に合致した複数の値が欲しい場合はwhereメソッドを使用する。
final list = [
Person("tarou", 15),
Person("hanako", 16),
Person("john", 17)
Person("itirou", 18)
Person("zirou", 17)
];
final targets = list.where(
(ele) => ele.age == 18
).toList();
//targetには
//[ Person("john", 17), Person("zirou", 17) ]
//が格納される。