Flutter

Dartの繰り返し処理|for・for-in・while・do-whileの使い方

Dartの繰り返し処理を初心者向けに解説します。通常のfor、for-in、while、do-while、break/continueの使い分けと、FlutterでListからWidgetを作る考え方を整理します。

この記事の目次
  1. この記事の結論
  2. 基本のfor文
  3. for-inでListを回す
  4. whileで条件が続く間くり返す
  5. do-whileで最低1回実行する
  6. breakとcontinue
  7. FlutterでWidgetリストへ変換する
  8. 実装後に確認すること
  9. よくあるつまずき
  10. 次に読む記事
  11. まとめ

Dartの繰り返し処理には、回数が決まっているときのfor、リストを順番に回すfor-in、条件が続く間くり返すwhile、最低1回実行するdo-whileがあります。FlutterではListのデータからWidgetを作るときに繰り返しの考え方をよく使います。

この記事の結論

回数が決まっているなら通常のfor、リストの中身を順番に使うならfor-in、終了条件だけが決まっているならwhileを選びます。まずはこの3つとbreak/continueを押さえれば十分です。

基本のfor文

カウンターを増やしながら決まった回数だけ処理を繰り返します。

for (var i = 0; i < 3; i++) {
  print(i);
}

for-inでListを回す

Listの要素を順番に取り出すだけなら、インデックスを使わないfor-inが読みやすいです。

final names = ["Sato", "Suzuki", "Tanaka"];
for (final name in names) {
  print(name);
}

whileで条件が続く間くり返す

回数ではなく「条件がtrueの間」くり返したいときはwhileを使います。条件がfalseにならないと無限ループになるので、必ず状態を変化させます。

var count = 0;
while (count < 3) {
  print(count);
  count++;
}

do-whileで最低1回実行する

条件の判定が後ろにあるため、中身が必ず1回は実行されます。入力を受け取ってから判定する場面に向きます。

var input = "";
do {
  input = readInput();
} while (input.isEmpty);

breakとcontinue

breakでループを途中で抜け、continueでその回だけスキップします。

for (final n in [1, 2, 3, 4, 5]) {
  if (n == 4) break;      // 4で終了
  if (n.isEven) continue; // 偶数はスキップ
  print(n);               // 1, 3
}

FlutterでWidgetリストへ変換する

実際のFlutterでは、明示的なforよりmapでListをWidgetのListへ変換する書き方をよく使います。

final widgets = names.map((name) => Text(name)).toList();

実装後に確認すること

  • 回数固定ならfor、条件依存ならwhileを選べているか
  • whileで状態を更新し、無限ループを避けているか
  • 単純なList処理はmapやwhereで書けないか検討したか
  • Flutterで一覧を作るときの変換方法を説明できるか

よくあるつまずき

  • whileの条件を更新し忘れて無限ループになる
  • for文のオフバイワン(<と<=の取り違え)で1件多い/少ない
  • breakとcontinueの挙動を取り違える
  • mapで済む変換を無理にforで書いて読みにくくする

次に読む記事

まとめ

Dartの繰り返しは、for・for-in・while・do-whileの使い分けとbreak/continueで整理できます。単純なList処理はmapやwhereも検討しつつ、FlutterのWidgetリスト作成へつなげましょう。