跳到主要内容

no_generative_constructors_in_superclass

类 '{0}' 不能继承 '{1}',因为 '{1}' 只有工厂构造函数(没有生成式构造函数),而 '{0}' 至少有一个生成式构造函数。

描述

#

分析器在类拥有至少一个生成式构造函数(无论是显式的还是隐式的),但其超类没有任何生成式构造函数时产生此诊断。每个生成式构造函数,除了在 Object 中定义的那个,都会显式或隐式地调用其超类中的一个生成式构造函数。

示例

#

以下代码会产生此诊断,因为类 B 有一个隐式生成式构造函数,它无法调用 A 的生成式构造函数,因为 A 没有生成式构造函数

dart
class A {
  factory A.none() => throw '';
}

class B extends A {}

常见修复方法

#

如果超类应该有一个生成式构造函数,则添加一个

dart
class A {
  A();
  factory A.none() => throw '';
}

class B extends A {}

如果子类不应该有生成式构造函数,则通过添加工厂构造函数来移除它

dart
class A {
  factory A.none() => throw '';
}

class B extends A {
  factory B.none() => throw '';
}

如果子类必须有一个生成式构造函数但超类不能有,则改为实现超类

dart
class A {
  factory A.none() => throw '';
}

class B implements A {}