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