Dartのswitch文は、1つの値に対して複数の候補を分岐したい時に便利です。Flutterでは、状態、画面種別、メニュー選択、enumごとの表示切り替えで使えます。
この記事の結論
if文は自由な条件に向き、switch文は1つの値の候補ごとに処理を分ける時に向きます。enumと組み合わせると、状態ごとの表示を読みやすく整理できます。
基本のswitch文
final status = "loading";
switch (status) {
case "loading":
print("読み込み中");
case "success":
print("成功");
case "error":
print("エラー");
default:
print("不明");
}
if文との使い分け
範囲や複雑な条件はif文が向きます。固定の値や状態ごとの分岐はswitch文が読みやすくなります。
- 点数が80以上ならA:if文が向く
- statusがloading/success/errorのどれか:switch文が向く
- 権限や画面種別をenumで分ける:switch文が向く
enumと組み合わせる
文字列よりenumを使うと、入力ミスを減らせます。状態が決まっている場合はenumを検討します。
enum LoadState { loading, success, error }
String message(LoadState state) {
switch (state) {
case LoadState.loading:
return "読み込み中";
case LoadState.success:
return "完了";
case LoadState.error:
return "失敗";
}
}
FlutterでWidgetを切り替える例
Widget buildBody(LoadState state) {
switch (state) {
case LoadState.loading:
return const CircularProgressIndicator();
case LoadState.success:
return const Text("データを表示します");
case LoadState.error:
return const Text("読み込みに失敗しました");
}
}
switch式の考え方
Dartでは値を返すswitch式も使えます。短い変換処理では、関数全体をすっきり書けます。
String label(LoadState state) => switch (state) {
LoadState.loading => "読み込み中",
LoadState.success => "完了",
LoadState.error => "失敗",
};
Flutterで使うときの考え方
Flutterで状態ごとにWidgetを出し分ける場合、switch文やswitch式を使うと「どの状態で何を表示するか」が見えやすくなります。状態が増えたらenumと組み合わせると保守しやすいです。
よくあるつまずき
- 複雑な範囲条件までswitchに詰め込む
- 文字列の打ち間違いで分岐が動かない
- 状態が増えたのに分岐を更新し忘れる
- UIとデータ取得処理を同じswitchに混ぜる
次に読む記事
- Dartのif文|条件分岐の書き方とFlutterでの使いどころ — Dartのif文を初心者向けに解説します。if、else if、else、比較演算子、null判定、Flutterで表示を切り替える考え方を整理します。
- Dartのデータ型|int・double・String・bool・null安全を初心者向けに解説 — Dartの基本データ型を初心者向けに解説します。int、double、String、bool、List、Map、null安全、型推論の使い分けを確認します。
- Dartの文字列|Stringの作り方・埋め込み・改行・数値変換を解説 — DartのStringを初心者向けに解説します。文字列の作り方、変数埋め込み、複数行文字列、数値変換、FlutterのText表示で使う基本を整理します。
- Flutter初心者の学習順|環境構築からアプリ公開までのロードマップ — Flutter初心者向けに、学習順を環境構築、Dart基礎、UI、状態管理、API、Firebase、公開まで段階別に整理します。
まとめ
Dartのswitch文は、状態や種類ごとの分岐を読みやすくする構文です。if文との使い分け、enum、FlutterでのWidget切り替えをセットで覚えましょう。