メインコンテンツにスキップ

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