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 {}