跳到主要内容

redeclare_on_non_redeclaring_member

成员 {0} 未重新声明超接口中声明的 {0}。

描述

#

当扩展类型的某个成员使用 `@redeclare` 进行注解,但其实现的接口中没有同名成员时,分析器会生成此诊断。

示例

#

以下代码会生成此诊断,因为扩展类型 `E` 中声明的成员 `n` 使用了 `@redeclare` 注解,但 `C` 没有名为 `n` 的成员

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

class C {
  void m() {}
}

extension type E(C c) implements C {
  @redeclare
  void n() {}
}

常见修复方法

#

如果带注解的成员名称正确,则移除注解

dart
class C {
  void m() {}
}

extension type E(C c) implements C {
  void n() {}
}

如果带注解的成员旨在替换实现的接口中的成员,则更改带注解成员的名称以匹配被替换的成员

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

class C {
  void m() {}
}

extension type E(C c) implements C {
  @redeclare
  void m() {}
}