跳到主内容

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