Switch-Case Statement
🎯 Mục tiêu: Pattern matching với switch-case trong Dart 3.
💡 Switch cổ điển
Phần tiêu đề “💡 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+)
Phần tiêu đề “⚡ 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+)
Phần tiêu đề “🎯 Pattern Matching (Dart 3+)”// Type patternsObject 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 patternsvar 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
Phần tiêu đề “📱 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
Phần tiêu đề “✅ Checklist”- Dùng
breaktrong switch cổ điển - Dùng switch expression cho Dart 3+
- Sử dụng pattern matching với sealed classes