跳到主要內容

const_constructor_with_non_const_super

常量建構函式不能呼叫“{0}”的非常量父類建構函式。

描述

#

當標記為 const 的建構函式呼叫其父類中未標記為 const 的建構函式時,分析器會生成此診斷。

示例

#

以下程式碼會產生此診斷,因為 B 中的 const 建構函式呼叫了類 A 中的 nonConst 建構函式,而父類建構函式不是 const 建構函式:

dart
class A {
  const A();
  A.nonConst();
}

class B extends A {
  const B() : super.nonConst();
}

常見修復

#

如果當前呼叫的父類建構函式並非必需,則呼叫父類中的常量建構函式。

dart
class A {
  const A();
  A.nonConst();
}

class B extends A {
  const B() : super();
}

如果當前建構函式的呼叫是必需的,並且您可以修改它,則在父類中的建構函式前新增 const

dart
class A {
  const A();
  const A.nonConst();
}

class B extends A {
  const B() : super.nonConst();
}

如果當前建構函式的呼叫是必需的,並且您無法修改它,則從子類中的建構函式前移除 const

dart
class A {
  const A();
  A.nonConst();
}

class B extends A {
  B() : super.nonConst();
}