跳到主要內容

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() {}
}