Enums and Enhanced Enums
Dot shorthands (Dart 3.10): when the type is known, you can write .green instead of Color.green (e.g., Color c = .green;, case .red:). Check your SDK version.
enum Color { red, green, blue }
void main() {
const c = Color.green;
print((c, c.name, c.index)); // (Color.green, green, 1)
print(Color.values);
print(Color.values.byName('blue'));
switch (c) { // exhaustive switch over enum values
case Color.red: print('Stop');
case Color.green: print('Go');
case Color.blue: print('Calm');
}
}
// Enhanced enums (Dart 2.17): fields, constructors, methods, interfaces, mixins
enum Planet implements Comparable<Planet> {
mercury(mass: 3.303e+23, radius: 2.4397e6),
earth(mass: 5.976e+24, radius: 6.37814e6),
jupiter(mass: 1.9e+27, radius: 7.1492e7);
const Planet({required this.mass, required this.radius});
final double mass;
final double radius;
static const double G = 6.67300E-11;
double get surfaceGravity => G * mass / (radius * radius);
bool get isGiant => this == jupiter;
@override
int compareTo(Planet other) => mass.compareTo(other.mass);
}
enum HttpStatus {
ok(200, 'OK'),
notFound(404, 'Not Found'),
serverError(500, 'Internal Server Error');
const HttpStatus(this.code, this.message);
final int code;
final String message;
static HttpStatus fr
…