跳到主要内容

non_generative_constructor

期望的是生成式构造函数 '{0}',但找到了工厂构造函数。

描述

#

当构造函数的初始化列表调用超类的构造函数,并且被调用的构造函数是工厂构造函数时,分析器会生成此诊断信息。在初始化列表中只能调用生成式构造函数。

示例

#

下面的代码会生成此诊断信息,因为调用构造函数 super.one() 是调用了工厂构造函数

dart
class A {
  factory A.one() = B;
  A.two();
}

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

常见修复方法

#

将 super 调用更改为调用生成式构造函数

dart
class A {
  factory A.one() = B;
  A.two();
}

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

如果生成式构造函数是无名构造函数,并且没有传递任何参数,则可以删除 super 调用。