implicit_super_initializer_missing_arguments
隐式调用的来自“{0}”的未命名构造函数具有必填参数。
描述
#当一个构造函数隐式调用超类的未命名构造函数,且超类的未命名构造函数具有必填参数,并且没有与该必填参数对应的 super 参数时,分析器会产生此诊断信息。
示例
#以下代码会产生此诊断信息,因为类 B
中的未命名构造函数隐式调用了类 A
中的未命名构造函数,但类 A
中的构造函数有一个名为 x
的必填位置参数。
dart
class A {
A(int x);
}
class B extends A {
B();
}
以下代码会产生此诊断信息,因为类 B
中的未命名构造函数隐式调用了类 A
中的未命名构造函数,但类 A
中的构造函数有一个名为 x
的必填命名参数。
dart
class A {
A({required int x});
}
class B extends A {
B();
}
常见修复方法
#如果你可以在子类构造函数中添加参数,那么添加一个与超类构造函数中必填参数对应的 super 参数。新参数可以是必填参数
dart
class A {
A({required int x});
}
class B extends A {
B({required super.x});
}
也可以是可选参数
dart
class A {
A({required int x});
}
class B extends A {
B({super.x = 0});
}
如果你不能在子类构造函数中添加参数,那么添加一个带有必填参数的显式 super 构造函数调用。
dart
class A {
A(int x);
}
class B extends A {
B() : super(0);
}