メインコンテンツにスキップ

無効な_オーバーライド_非_仮想_メンバー

'{1}' で非仮想として宣言されたメンバー '{0}' は、サブクラスでオーバーライドできません。

説明

#

この診断は、クラス、ミックスイン、または列挙型のメンバーが @nonVirtual アノテーションが付いたメンバーをオーバーライドする場合に、アナライザーによって生成されます。

#

次のコードは、B のメソッド mA のメソッド 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() {}
}