跳至主要內容

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