跳到主要内容

super_formal_parameter_without_associated_positional

没有关联的位置超类构造函数参数。

描述

#

当构造函数中存在位置超参数,并且隐式或显式调用的超类构造函数在相应索引位置没有位置参数时,分析器会产生此诊断信息。

位置超参数通过其索引与超类构造函数中的位置参数关联。也就是说,第一个超参数与超类构造函数中的第一个位置参数关联,第二个与第二个关联,依此类推。

示例

#

以下代码会产生此诊断信息,因为 B 中的构造函数有一个位置超参数,但 A 中的超类构造函数没有位置参数

dart
class A {
  A({int? x});
}

class B extends A {
  B(super.x);
}

以下代码会产生此诊断信息,因为 B 中的构造函数有两个位置超参数,但 A 中的超类构造函数只有一个位置参数,这意味着没有与 y 对应的参数

dart
class A {
  A(int x);
}

class B extends A {
  B(super.x, super.y);
}

常见修复方法

#

如果超类构造函数应该有一个与超参数相对应的位置参数,那么请适当更新超类构造函数

dart
class A {
  A(int x, int y);
}

class B extends A {
  B(super.x, super.y);
}

如果超类构造函数正确,或者无法更改,那么将超参数转换为普通参数

dart
class A {
  A(int x);
}

class B extends A {
  B(super.x, int y);
}