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
…