跳到主要内容

invalid_override

'{1}.{0}' ('{2}') 不是 '{3}.{0}' ('{4}') 的有效覆盖。

setter '{1}.{0}' ('{2}') 不是 '{3}.{0}' ('{4}') 的有效覆盖。

描述

#

当类中的成员覆盖了其超类型中的成员,且该覆盖无效时,分析器会产生此诊断。当满足以下所有条件时,覆盖有效:

  • 它允许被覆盖成员所允许的所有参数。
  • 它不需要被覆盖成员未要求的任何参数。
  • 被覆盖成员的每个参数类型可赋值给覆盖成员对应的参数。
  • 覆盖成员的返回类型可赋值给被覆盖成员的返回类型。

示例

#

以下代码会产生此诊断,因为参数 s (String) 的类型不可赋值给参数 i (int) 的类型

dart
class A {
  void m(int i) {}
}

class B extends A {
  void m(String s) {}
}

常见修复方法

#

如果该无效方法意图覆盖超类中的方法,则修改使其符合要求

dart
class A {
  void m(int i) {}
}

class B extends A {
  void m(int i) {}
}

如果它并非意图覆盖超类中的方法,则重命名它

dart
class A {
  void m(int i) {}
}

class B extends A {
  void m2(String s) {}
}