やりかた

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) ]
//が格納される。