Skip to Content
Dart📘 Ngôn ngữ DartSwitch-Case Statement

Switch-Case trong Dart

🎯 Mục tiêu: Pattern matching với switch-case trong Dart 3.


💡 Switch cổ điển

String day = "Monday"; switch (day) { case "Monday": case "Tuesday": case "Wednesday": case "Thursday": case "Friday": print("Weekday"); break; case "Saturday": case "Sunday": print("Weekend"); break; default: print("Unknown"); }

⚡ Switch Expression (Dart 3+)

String day = "Monday"; String type = switch (day) { "Monday" || "Tuesday" || "Wednesday" || "Thursday" || "Friday" => "Weekday", "Saturday" || "Sunday" => "Weekend", _ => "Unknown" };

🎯 Pattern Matching (Dart 3+)

// Type patterns Object value = 42; String result = switch (value) { int i when i < 0 => "Negative", int i when i > 0 => "Positive", int() => "Zero", String s => "String: $s", _ => "Unknown" }; // Record patterns var point = (x: 10, y: 20); var description = switch (point) { (x: 0, y: 0) => "Origin", (x: var x, y: 0) => "On x-axis at $x", (x: 0, y: var y) => "On y-axis at $y", (x: var x, y: var y) => "Point($x, $y)" };

📱 Trong Flutter - UI State

sealed class UiState {} class Loading extends UiState {} class Success extends UiState { final String data; Success(this.data); } class Error extends UiState { final String message; Error(this.message); } Widget build(BuildContext context) { return switch (state) { Loading() => CircularProgressIndicator(), Success(:var data) => Text(data), Error(:var message) => Text("Error: $message"), }; }

✅ Checklist

  • Dùng break trong switch cổ điển
  • Dùng switch expression cho Dart 3+
  • Sử dụng pattern matching với sealed classes

Last updated on