跳到主要內容

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