FlutterやDartによるアプリケーション開発において、最も頻繁に利用されるデータ構造の一つが「List(リスト/配列)」です。
DartのListクラスには、要素の追加や削除といった基本的な操作だけでなく、関数型プログラミングのような高度なコレクション操作(フィルタリング、マッピング、集約処理など)をスマートに記述できる豊富なメソッドが用意されています。
しかし、メソッドの数が非常に多いため、「目的の処理をどのメソッドで書くのが最適か」迷ってしまうことも少なくありません。
本記事は、当ブログで解説しているDartの List 関連記事を目的別に分かりやすく体系化した解説マップ(ピラーページ)です。日々のコーディングや実装時の逆引きリファレンスとしてご活用ください!
Listの生成とプロパティ(基本編)
まずはListオブジェクトを生成するコンストラクタと、リストの長さや状態を確認するための主要プロパティです。
- Listの生成(コンストラクタ)
➔ Listクラスのコンストラクタ(空リスト、固定長、初期化生成) / toListメソッド(Iterableから新しいListを生成) - 状態や情報の取得(プロパティ)
➔ Listクラスの主要プロパティ(length, first, last, isEmpty, isNotEmpty, reversedなど)
要素の追加・挿入
リストの末尾に新しい要素を追加したり、特定の位置に差し込むためのメソッド群です。
- addメソッド(末尾に単一の要素を追加)
- addAllメソッド(末尾に別のコレクションをまとめて追加)
- insertメソッド(指定したインデックス位置に単一要素を挿入)
- insertAllメソッド(指定したインデックス位置に複数要素を挿入)
- followedByメソッド(後続に別のコレクションを連結したIterableを生成)
要素の削除・クリア
リストから不要な要素を取り除いたり、一括でクリアするためのメソッドです。値の一致による削除やインデックス指定、条件式による絞り込み削除など用途に応じて使い分けます。
- removeメソッド(指定した値と一致する最初の要素を削除)
- removeAtメソッド(指定インデックス位置の要素を削除して返す)
- removeLastメソッド(末尾の要素を取り出して削除)
- removeRangeメソッド(指定した範囲の要素をまとめて削除)
- removeWhereメソッド(条件に一致した要素をすべて削除)
- retainWhereメソッド(条件に一致する要素のみを残し他を削除)
- clearメソッド(リスト内のすべての要素を削除して空にする)
要素の取得・置換・更新
特定の位置にある要素を取り出したり、範囲を指定して上書き・穴埋めを行うためのメソッドです。
- elementAtメソッド(インデックス位置の要素を取得)
- replaceRangeメソッド(指定範囲を別のコレクションで置換)
- fillRangeメソッド(指定範囲を特定の値で埋め尽くす)
- setRangeメソッド(別コレクションの一部を指定範囲へコピー)
- setAllメソッド(指定位置から別コレクションの要素を順番に上書き)
要素の検索と条件判定
特定の値が含まれているか判定したり、条件に一致する位置(インデックス)を探索するメソッド群です。
- containsメソッド(指定した値が含まれているか真偽値で確認)
- indexOfメソッド(指定した値と最初に一致するインデックスを検索)
- lastIndexOfメソッド(末尾側から逆順に一致するインデックスを検索)
- indexWhereメソッド(条件に最初に合致するインデックスを検索)
- lastIndexWhereメソッド(末尾側から条件に合致するインデックスを検索)
- anyメソッド(少なくとも1つの要素が条件を満たすか判定)
- everyメソッド(すべての要素が条件を満たすか判定)
要素のフィルタリング・範囲抽出
条件に適合する要素だけを抽出したり、先頭や末尾から指定した件数だけを切り出すメソッドです。
- whereメソッド(条件を満たす要素のみを抽出)
- whereTypeメソッド(特定の型に一致する要素のみを抽出・キャスト)
- firstWhereメソッド(条件に合致する最初の要素を取得)
- lastWhereメソッド(条件に合致する最後の要素を取得)
- singleWhereメソッド(条件に合致する唯一の要素を安全に取得)
- takeメソッド(先頭から指定件数の要素を取り出す)
- takeWhileメソッド(条件を満たしている間だけ先頭から取り出す)
- skipメソッド(先頭から指定件数を読み飛ばす)
- skipWhileメソッド(条件を満たしている間スキップし以降を取り出す)
- getRangeメソッド(指定した開始〜終了範囲の要素を抽出)
要素の変換・並べ替え・集約
リストの各要素を別の形に加工したり、累積計算(合計値や最大値など)を行って単一の値にまとめるための強力なメソッド群です。
- mapメソッド(各要素を別の値や型へ1対1で変換)
- expandメソッド(1つの要素から複数の要素を展開・平坦化)
- foldメソッド(初期値を指定して全要素を累積・集約)
- reduceメソッド(リスト先頭を起点に全要素を累積・集約)
- joinメソッド(区切り文字を挟んで文字列として結合)
- shuffleメソッド(リスト内の要素の順序をランダムに並び替え)
- asMapメソッド(インデックスをキーとしたMapに変換)
- castメソッド(リストの型パラメータを新しい型にキャスト)
- forEachメソッド(各要素に対して順番に関数を実行)
リストの結合と比較(演算子)
Dartの構文としてリスト同士をスマートに操作できる演算子メソッドです。
まとめと実践的な使い分けのポイント
DartのListクラスは、単純なデータ格納用配列にとどまらず、map、where、fold などを組み合わせることで、複雑なロジックを簡潔かつ宣言的に記述できる設計となっています。
各メソッドの詳細な使い方や注意点、サンプルコードについては、上記のリンク先記事で詳しく解説しています。開発作業中に「あれ、どう書くんだっけ?」と思った際は、ぜひ本マップをブックマークしてリファレンスとしてご活用ください。

コメント