跳到主要內容

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 呼叫。