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
breaktrong switch cổ điển - Dùng switch expression cho Dart 3+
- Sử dụng pattern matching với sealed classes
Last updated on