1. .filterメソッドの基本
.filterメソッドは、リスト内の要素を特定の条件に基づいて絞り込みます。基本的な構文は以下の通りです。
List<T> filteredList = originalList.where((element) => /* 条件式 */).toList();
これにより、条件を満たす要素だけが新しいリストに残ります。例えば、数値のリストから偶数だけを抽出する場合は次のようになります。
List<int> numbers = [1, 2, 3, 4, 5];
List<int> evenNumbers = numbers.where((number) => number % 2 == 0).toList();
print(evenNumbers); // [2, 4]
2. .filterメソッドのチェイン
.filterメソッドは複数の条件を連結して使用することができ、これによりリストのデータを複雑な条件で絞り込むことができます。
List<int> numbers = [1, 2, 3, 4, 5];
List<int> filteredNumbers = numbers
.where((number) => number > 2)
.where((number) => number % 2 != 0)
.toList();
print(filteredNumbers); // [3, 5]
3. .filterメソッドとオブジェクト
.filterメソッドは、数値だけでなく、オブジェクトのリストにも適用できます。例えば、Personクラスのリストから特定の条件を満たす要素を抽出することができます。
class Person {
String name;
int age;
Person(this.name, this.age);
}
List<Person> people = [
Person('Alice', 25),
Person('Bob', 30),
Person('Charlie', 22),
];
List<Person> adults = people.where((person) => person.age >= 25).toList();
print(adults); // [Person{name: 'Alice', age: 25}, Person{name: 'Bob', age: 30}]
4. .filterメソッドと組み合わせる
.filterメソッドは他のリストメソッドと組み合わせて使用することができます。例えば、.mapメソッドと組み合わせて、条件を満たす要素だけを変換することができます。
List<int> numbers = [1, 2, 3, 4, 5];
List<int> squaredEvenNumbers = numbers
.where((number) => number % 2 == 0)
.map((evenNumber) => evenNumber * evenNumber)
.toList();
print(squaredEvenNumbers); // [4, 16]
まとめ
Flutterの.filterメソッドは、リストデータの柔軟で効果的な絞り込みを可能にします。条件に基づいてデータを選択し、コードをシンプルで読みやすく保つために活用しましょう。これにより、アプリケーションのパフォーマンスを向上させ、ユーザーエクスペリエンスを向上させることができます。是非、プロジェクトで積極的に利用してみてください。