内容

use_enums

使用枚举而不是行为类似枚举的类。

此规则从 Dart 2.17 开始可用。

此规则有一个可用的快速修复

详情

#

看起来像枚举的类应该声明为 enum

**应该**在适当的情况下使用枚举。

枚举的候选者是:

  • 具体类,
  • 私有类或只有私有生成构造函数的类,
  • 具有两个或多个与类类型相同的静态 const 字段的类,
  • 生成构造函数仅在这些静态字段的初始化表达式的顶层被调用的类,
  • 没有定义 hashCode==valuesindex 的类,
  • 没有扩展除 Object 之外的任何类的类,以及
  • 在定义库中没有声明子类的类。

要了解有关创建和使用这些枚举的更多信息,请查看声明增强枚举

错误

dart
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);
}

正确

dart
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);
}

用法

#

要启用 use_enums 规则,请在你的analysis_options.yaml 文件中的**linter > 规则**下添加 use_enums

analysis_options.yaml
yaml
linter:
  rules:
    - use_enums