跳到主要内容

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