Dart Analyze logoDart Analyze/
DRT-W1429

The annotation '@nonVirtual' can only be applied to a concrete instance memberDRT-W1429

Major severityMajor
Bug Risk categoryBug Risk

The analyzer produces this diagnostic when the nonVirtual annotation is found on a declaration other than a member of a class, mixin, or enum, or if the member isn't a concrete instance member.

Examples

The following code produces this diagnostic because the annotation is on a class declaration rather than a member inside the class:

import 'package:meta/meta.dart';

@nonVirtual
class C {}

The following code produces this diagnostic because the method m is an abstract method:

import 'package:meta/meta.dart';

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

The following code produces this diagnostic because the method m is a static method:

import 'package:meta/meta.dart';

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

Common fixes

If the declaration isn't a member of a class, mixin, or enum, then remove the annotation:

class C {}

If the member is intended to be a concrete instance member, then make it so:

import 'package:meta/meta.dart';

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

If the member is not intended to be a concrete instance member, then remove the annotation:

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