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

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