invalid_super_formal_parameter_location
super 参数只能用于非重定向生成构造函数。
描述
#当 super 参数被用于非重定向生成构造函数以外的任何地方时,分析器会产生此诊断。
示例
#以下代码产生此诊断,因为 super 参数 x
在一个重定向生成构造函数中
dart
class A {
A(int x);
}
class B extends A {
B.b(super.x) : this._();
B._() : super(0);
}
以下代码产生此诊断,因为 super 参数 x
不在一个生成构造函数中
dart
class A {
A(int x);
}
class C extends A {
factory C.c(super.x) => C._();
C._() : super(0);
}
以下代码产生此诊断,因为 super 参数 x
在一个方法中
dart
class A {
A(int x);
}
class D extends A {
D() : super(0);
void m(super.x) {}
}
常见修复
#如果包含 super 参数的函数可以更改为非重定向生成构造函数,则进行更改
dart
class A {
A(int x);
}
class B extends A {
B.b(super.x);
}
如果包含 super 参数的函数无法更改为非重定向生成构造函数,则移除 super
dart
class A {
A(int x);
}
class D extends A {
D() : super(0);
void m(int x) {}
}