Skip to main content

no_default_cases

Learn about the no_default_cases linter rule.

Experimental

No default cases.

Details

#

Switches on enums and enum-like classes should not use a default clause.

Enum-like classes are defined as concrete (non-abstract) classes that have:

  • only private non-factory constructors
  • two or more static const fields whose type is the enclosing class and
  • no subclasses of the class in the defining library

DO define default behavior outside switch statements.

BAD:

dart
 switch (testEnum) {  case TestEnum.A:  return '123';  case TestEnum.B:  return 'abc';  default:  return null;  } 

GOOD:

dart
 switch (testEnum) {  case TestEnum.A:  return '123';  case TestEnum.B:  return 'abc';  }  // Default here.  return null; 

Enable

#

To enable the no_default_cases rule, add no_default_cases under linter > rules in your analysis_options.yaml file:

analysis_options.yaml
yaml
linter:  rules:  - no_default_cases 

If you're instead using the YAML map syntax to configure linter rules, add no_default_cases: true under linter > rules:

analysis_options.yaml
yaml
linter:  rules:  no_default_cases: true