メインコンテンツにスキップ

super_formal_parameter_without_associated_positional

対応する位置指定されたスーパーコンストラクタパラメータがありません。

説明

#

コンストラクタに位置指定されたスーパーパラメータがあり、暗黙的または明示的に呼び出されるスーパーコンストラクタに対応するインデックスに位置指定されたパラメータがない場合に、アナライザはこの診断を生成します。

位置指定されたスーパーパラメータは、インデックスによってスーパーコンストラクタの位置指定されたパラメータに関連付けられます。つまり、最初のスーパーパラメータはスーパーコンストラクタの最初 の位置指定されたパラメータに関連付けられ、2番目は2番目などとなります。

#

次のコードは、B のコンストラクタには位置指定されたスーパーパラメータがありますが、A のスーパーコンストラクタには位置指定されたパラメータがないため、この診断を生成します。

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

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

次のコードは、B のコンストラクタには2つの位置指定されたスーパーパラメータがありますが、A のスーパーコンストラクタには位置指定されたパラメータが1つしかないため、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);
}