跳到主要内容

undefined_enum_constructor

枚举没有名为 '{0}' 的构造函数。

枚举没有未命名的构造函数。

描述

#

当用于初始化枚举值的构造函数不存在时,分析器会生成此诊断信息。

示例

#

以下代码会生成此诊断信息,因为枚举值 c 正由未命名的构造函数初始化,但在 E 中没有定义未命名的构造函数

dart
enum E {
  c();

  const E.x();
}

以下代码会生成此诊断信息,因为枚举值 c 正由名为 x 的构造函数初始化,但在 E 中没有定义名为 x 的构造函数

dart
enum E {
  c.x();

  const E.y();
}

常见修复

#

如果枚举值正由未命名的构造函数初始化,并且应该使用其中一个命名构造函数,则添加构造函数的名称

dart
enum E {
  c.x();

  const E.x();
}

如果枚举值正由未命名的构造函数初始化,并且现有命名构造函数都不合适,则定义未命名的构造函数

dart
enum E {
  c();

  const E();
}

如果枚举值正由命名构造函数初始化,并且应该使用其中一个现有构造函数,则更改被调用的构造函数的名称(如果应该使用未命名的构造函数,则删除该名称)

dart
enum E {
  c.y();

  const E();
  const E.y();
}

如果枚举值正由命名构造函数初始化,并且现有构造函数都不应该使用,则定义一个具有所使用名称的构造函数

dart
enum E {
  c.x();

  const E.x();
}