跳到主要内容

unnecessary_overrides

不必要的重写。

描述

#

当实例成员重写继承的成员,但仅使用完全相同的参数调用被重写的成员时,分析器会生成此诊断信息。

示例

#

以下代码会生成此诊断信息,因为方法 D.m 除了调用被重写的方法外,没有做其他任何事情

dart
class C {
  int m(int x) => x;
}

class D extends C {
  @override
  int m(int x) => super.m(x);
}

常见修正

#

如果方法应该做的不仅仅是被重写方法所做的事情,那么实现缺失的功能

dart
class C {
  int m(int x) => x;
}

class D extends C {
  @override
  int m(int x) => super.m(x) + 1;
}

如果应通过更改返回类型或一个或多个参数类型、使其中一个参数为 covariant、添加文档注释或附加注解来修改被重写的方法,请更新代码

dart
import 'package:meta/meta.dart';

class C {
  int m(int x) => x;
}

class D extends C {
  @mustCallSuper
  @override
  int m(int x) => super.m(x);
}

如果重写方法没有改变或增强代码的语义,则将其移除

dart
class C {
  int m(int x) => x;
}

class D extends C {}