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

無効な仮想アノテーション

'@nonVirtual' アノテーションは、具体的なインスタンスメンバーにのみ適用できます。

説明

#

nonVirtual アノテーションが、クラス、ミックスイン、または enum のメンバー以外の宣言、あるいはメンバーが具体的なインスタンスメンバーでない場合に、アナライザーはこの診断を生成します。

#

次のコードは、アノテーションがクラス内のメンバーではなくクラス宣言にあるため、この診断を生成します。

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

@nonVirtual
class C {}

次のコードは、メソッド m が抽象メソッドであるため、この診断を生成します。

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

abstract class C {
  @nonVirtual
  void m();
}

次のコードは、メソッド m が静的メソッドであるため、この診断を生成します。

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

abstract class C {
  @nonVirtual
  static void m() {}
}

一般的な修正

#

宣言がクラス、ミックスイン、または enum のメンバーでない場合は、アノテーションを削除してください。

dart
class C {}

メンバーを具体的なインスタンスメンバーにする場合は、そのようにしてください。

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

abstract class C {
  @nonVirtual
  void m() {}
}

メンバーを具体的なインスタンスメンバーにする意図がない場合は、アノテーションを削除してください。

dart
abstract class C {
  static void m() {}
}