跳到主要内容

unnecessary_no_such_method

不必要的 'noSuchMethod' 声明。

描述

#

当声明了 noSuchMethod,且该声明唯一做的事情是调用被覆盖的声明,并且被覆盖的声明不是 Object 中的声明时,分析器会生成此诊断。

覆盖 ObjectnoSuchMethod 的实现(无论该实现做什么)会向分析器发出信号,表明不应对在该类中未实现的任何继承的抽象方法进行标记。即使覆盖实现是从超类继承的,这也会起作用,因此在子类中再次声明它是没有价值的。

示例

#

以下代码会产生此诊断,因为 AnoSuchMethod 的声明使得 BnoSuchMethod 的声明成为不必要的

dart
class A {
  @override
  dynamic noSuchMethod(x) => super.noSuchMethod(x);
}
class B extends A {
  @override
  dynamic noSuchMethod(y) {
    return super.noSuchMethod(y);
  }
}

常见修复方法

#

移除不必要的声明

dart
class A {
  @override
  dynamic noSuchMethod(x) => super.noSuchMethod(x);
}
class B extends A {}