跳至主要内容

invalid_reference_to_generative_enum_constructor

生成式枚举构造函数只能用作重定向的目标。

描述

#

当在枚举中定义的生成式构造函数被用于创建枚举常量以外的任何地方,或未用作同一枚举中其他构造函数的重定向目标时,分析器会产生此诊断信息。

示例

#

以下代码产生此诊断信息,因为枚举 E 的构造函数被用于在函数 f 中创建一个实例:

dart
enum E {
  a(0);

  const E(int x);
}

E f() => const E(2);

常见修复方法

#

如果存在具有相同值的枚举常量,或者如果你添加了这样的常量,请直接引用该常量。

dart
enum E {
  a(0), b(2);

  const E(int x);
}

E f() => E.b;

如果你需要使用构造函数调用,请使用工厂构造函数。

dart
enum E {
  a(0);

  const E(int x);

  factory E.c(int x) => a;
}

E f() => E.c(2);