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

暗黙的なスーパーイニシャライザ引数不足

'{0}' から暗黙的に呼び出された名前のないコンストラクタには、必須パラメータがあります。

説明

#

この診断は、コンストラクタがスーパークラスの名前のないコンストラクタを暗黙的に呼び出し、スーパークラスの名前のないコンストラクタに必須パラメータがあり、その必須パラメータに対応するスーパーパラメータがない場合に、アナライザによって生成されます。

#

以下のコードは、クラス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();
}

一般的な修正

#

サブクラスのコンストラクタにパラメータを追加できる場合は、スーパークラスのコンストラクタの必須パラメータに対応するスーパーパラメータを追加します。新しいパラメータは必須にすることができます。

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});
}

サブクラスのコンストラクタにパラメータを追加できない場合は、必須引数を持つ明示的なスーパーコンストラクタ呼び出しを追加します。

dart
class A {
  A(int x);
}

class B extends A {
  B() : super(0);
}