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