跳到主要内容

invalid_override_of_non_virtual_member

成员 '{0}' 在 '{1}' 中被声明为非虚成员,不能在子类中覆盖。

描述

#

当类、mixin 或枚举的成员覆盖带有 @nonVirtual 注解的成员时,分析器会产生此诊断信息。

示例

#

以下代码会产生此诊断信息,因为 B 中的方法 m 覆盖了 A 中的方法 m,而 A 中的方法 m 带有 @nonVirtual 注解

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

class A {
  @nonVirtual
  void m() {}
}

class B extends A {
  @override
  void m() {}
}

常见修复方法

#

如果超类中方法上的注解是正确的(超类中的方法不应被覆盖),则移除或重命名覆盖方法

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

class A {
  @nonVirtual
  void m() {}
}

class B extends A {}

如果超类中的方法旨在被覆盖,则移除 @nonVirtual 注解

dart
class A {
  void m() {}
}

class B extends A {
  @override
  void m() {}
}