今回はDartでリストに要素が含まれるか検索する方法についてです。
Dart(Flutter)で開発をしていると、「このリストに特定の値が含まれているか調べたい」という場面はよくあります。
例えば、次のようなケースです。
- Todoリストに同じ項目を追加しないようにしたい
- APIから取得したデータに特定の値が含まれているか確認したい
- ユーザー入力がリスト内に存在するか判定したい
この記事では、Dartでリストに要素が含まれるかを検索する方法を、Flutterでも使えるコード例付きで解説します。
※ 載せているコードはFlutter 3.29.3 / Dart 3.7.2で動作を確認しています。
結論:containsメソッドを使うのが基本
Dartでリストに特定の要素が含まれているかを調べるには、
containsメソッドを使うのが最もシンプルです。
final list = ['apple', 'banana', 'orange'];
final result = list.contains('banana');
print(result); // true
この例ではlistという文字列のリストを作っています。
その次の処理で、containsメソッドを使って、引数で含むか調べたい値を渡しています。
結果渡した「banana」が含まれるのでtrueが返ってきます。
なぜcontainsメソッドが使われるのか
containsメソッドは、リスト内に指定した値が1つでも存在するかを true / false で返します。
- 書き方がシンプル
- 可読性が高い
- Flutterでもそのまま使える
そのため、完全一致での存在チェックにはまずこの方法を使うのが定番です。
完全一致じゃない場合は、falseになるので、containsメソッドに渡す引数には注意しましょう。
例えば、「Banana」と「banana」のように大文字・小文字が違う場合も一致しないので注意が必要です。
実践例:Flutterでの使用シーン
例えば、ボタンを押したときに
すでに存在するアイテムなら追加しない、という処理は次のように書けます。
final items = ['A', 'B', 'C'];
void addItem(String value) {
if (!items.contains(value)) {
items.add(value);
}
}
addItemというメソッドがボタンに紐づいて動作するとします。
このメソッドの処理では、画面から渡された文字列変数valueが含まれていなかった(false)なら、itemsリストに追加するようにしています。
このように、containsメソッドは重複チェックや入力バリデーションでも使われます。
条件付きで検索したい場合は where / any を使う
「完全一致ではなく、条件に合うかを調べたい」という場合はwhereメソッドやanyメソッドを使います。
anyメソッドを使う例(1件でも一致すればOK)
anyメソッドは条件にひとつでも一致すればtrue、一致しなければfalseを返します。
final numbers = [10, 20, 30];
final exists = numbers.any((n) => n > 25);
print(exists); // true
numbersリストを作成して、次の処理でanyメソッドを使って要素を「25」と比較しています。
リストには30が含まれ、一致する要素があるのでtrueが返ってきます。
whereメソッドを使う例(一致する要素を取得)
whereメソッドは条件に一致する要素を全て取得します。
final result = numbers.where((n) => n > 25).toList();
print(result); // [30]
先ほどのnumbersリストに対して、whereメソッドを使用しています。
whereメソッドの戻り値は Iterable 型のため、そのままではリストとして扱えません。
そのため、.toListを書くことで、リストとして返しています。
「25」以上の要素は30なので、30のみがひとつだけ入ったリストが返ってきます。
条件にあう値が複数あった場合は、複数の値が入ったリストが返ってきます。
単純に条件一致する要素があるかだけでなく、一致する要素を使う場合に使用すると良いです。
contains / any / where の使い分け
| 方法 | 用途 |
|---|---|
| contains | 完全一致の存在チェック |
| any | 条件に一致する要素があるか |
| where | 条件に一致する要素一覧を取得 |
まとめ
Dartでリストに要素が含まれるかを調べる方法は、次のとおりです。
- 完全一致(完全一致する要素があるか) →
contains() - 条件付きチェック(条件に合う値があるか) →
any() - 条件付き抽出(要素を取り出したい) →
where()
まずはcontainsメソッドを基本として覚えて、用途に応じて他のメソッドを使い分けていきましょう。

コメント