跳到主要内容

unnecessary_overrides

稳定
核心
提供修复

不要为了使用相同参数调用父类方法而重写方法。

详情

#

不要 为了使用相同参数调用父类方法而重写方法。

错误示例

dart
class A extends B {
  @override
  void foo() {
    super.foo();
  }
}

正确示例

dart
class A extends B {
  @override
  void foo() {
    doSomethingElse();
  }
}

在以下情况下重写成员是有效的

  • 如果类型(返回类型或参数类型)与父类成员不完全相同,
  • 如果在其中一个参数中添加了 covariant 关键字,
  • 如果成员存在文档注释,
  • 如果成员有除了 @override 之外的注解,
  • 如果成员没有使用 @protected 注解,而父类成员使用了该注解。

noSuchMethod 是一个特殊方法,本规则不会检查它。

启用

#

要启用 unnecessary_overrides 规则,请在你的 analysis_options.yaml 文件中的 linter > rules 下添加 unnecessary_overrides

analysis_options.yaml
yaml
linter:
  rules:
    - unnecessary_overrides

如果你改为使用 YAML 映射语法配置 linter 规则,请在 linter > rules 下添加 unnecessary_overrides: true

analysis_options.yaml
yaml
linter:
  rules:
    unnecessary_overrides: true