跳到主要內容

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