positional_super_formal_parameter_with_positional_argument
当超级构造函数的调用包含位置参数时,不能使用位置超级参数。
描述
#当提供给超类构造函数的部分(但不是全部)位置参数使用了超级参数时,分析器会产生此诊断。
位置超级参数通过索引与超级构造函数中的位置参数关联。也就是说,第一个超级参数与超级构造函数中的第一个位置参数关联,第二个与第二个关联,依此类推。这对于位置参数也是如此。同时使用位置超级参数和位置参数意味着超类构造函数中同一个参数关联了两个值,因此这是不允许的。
示例
#以下代码会产生此诊断,因为构造函数 B.new
使用了一个超级参数来将其中一个必需的位置参数传递给 A
中的超级构造函数,但在超级构造函数调用中又显式地传递了另一个参数
dart
class A {
A(int x, int y);
}
class B extends A {
B(int x, super.y) : super(x);
}
常见修复方法
#如果所有位置参数都可以是超级参数,则将普通位置参数转换为超级参数。
dart
class A {
A(int x, int y);
}
class B extends A {
B(super.x, super.y);
}
如果某些位置参数不能是超级参数,则将超级参数转换为普通参数。
dart
class A {
A(int x, int y);
}
class B extends A {
B(int x, int y) : super(x, y);
}