Question #115MediumDart Basics

Enum data upper case or lower case

#dart

Answer

Overview

Dart enum members can technically be named in any case, but there are clear conventions based on Dart's style guide.


Dart Style Guide — Enum Convention

Starting from Dart 2.17+, enum members should use

text
lowerCamelCase
(not
text
UPPER_CASE
).

dart
// ✅ CORRECT — Modern Dart style (lowerCamelCase)
enum Status {
  pending,
  inProgress,
  completed,
  failed,
}

enum Direction {
  north,
  south,
  east,
  west,
}

// ❌ OLD style (avoid in modern Dart)
enum OldStyle {
  PENDING,   // Avoid — this is C/Java style
  IN_PROGRESS,
  COMPLETED,
}

Enhanced Enums (Dart 2.17+)

dart
enum Priority {
  low(1, 'Low Priority', Colors.green),
  medium(2, 'Medium Priority', Colors.orange),
  high(3, 'High Priority', Colors.red),
  critical(4, 'Critical!', Colors.purple);

  const Priority(this.level, this.label, this.color);

  final int level;
  final String label;
  final Color color;

  bool get isUrgent => level >= 3;

  static Priority fromLevel(int level) =>
      values.firstWhere((e) => e.level == level);
}

// Usage
final current = Priority.high;
print(current.label);    // High Priority
print(current.isUrgent); // true
print(current.color);    // Colors.red

Enum with switch (Dart 3 exhaustive)

dart
enum AppTheme { light, dark, system }

String getThemeLabel(AppTheme theme) {
  return switch (theme) {
    AppTheme.light => 'Light Mode',
    AppTheme.dark => 'Dark Mode',
    AppTheme.system => 'System Default',
  };
}

Common Enum Properties

dart
enum Fruit { apple, banana, cherry }

void main() {
  print(Fruit.apple.name);   // 'apple' (String)
  print(Fruit.apple.index);  // 0
  print(Fruit.values);       // [Fruit.apple, Fruit.banana, Fruit.cherry]

  // Parse from string
  final f = Fruit.values.byName('banana'); // Fruit.banana
}

Convention Summary

StyleExampleRecommendation
lowerCamelCase
text
pending
,
text
inProgress
Dart standard
UPPER_CASE
text
PENDING
,
text
IN_PROGRESS
❌ Old — avoid
PascalCase
text
Pending
,
text
InProgress
❌ Not conventional

Answer: Use

text
lowerCamelCase
for enum members in Dart (e.g.,
text
Status.inProgress
, not
text
Status.IN_PROGRESS
). This follows the official Dart style guide.