use_enums 
            
            Use enums rather than classes that behave like enums.
This rule is available as of Dart 2.17.0.
This rule has a quick fix available.
Details
Classes that look like enumerations should be declared as enums.
DO use enums where appropriate.
Candidates for enums are classes that:
- are concrete,
- are private or have only private generative constructors,
- have two or more static const fields with the same type as the class,
- have generative constructors that are only invoked at the top-level of the initialization expression of these static fields,
- do not define hashCode,==,valuesorindex,
- do not extend any class other than Object, and
- have no subclasses declared in the defining library.
BAD:
class LogPriority {
  static const error = LogPriority._(1, 'Error');
  static const warning = LogPriority._(2, 'Warning');
  static const log = LogPriority._unknown('Log');
  final String prefix;
  final int priority;
  const LogPriority._(this.priority, this.prefix);
  const LogPriority._unknown(String prefix) : this._(-1, prefix);
}
GOOD:
enum LogPriority {
  error(1, 'Error'),
  warning(2, 'Warning'),
  log.unknown('Log');
  final String prefix;
  final int priority;
  const LogPriority(this.priority, this.prefix);
  const LogPriority.unknown(String prefix) : this(-1, prefix);
}
Usage
To enable the use_enums rule,
add use_enums under linter > rules in your
analysis_options.yaml
file:
linter:
  rules:
    - use_enums