invalid_non_virtual_annotation 진단: @nonVirtual 어노테이션은 구체적인 인스턴스 멤버에만 쓸 수 있어요

invalid_non_virtual_annotation 진단: @nonVirtual 어노테이션은 구체적인 인스턴스 멤버에만 쓸 수 있어요

Dart 분석기가 내보내는 진단에는 이름이 있어요. invalid_non_virtual_annotation@nonVirtual 어노테이션이 클래스·mixin·enum의 멤버가 아닌 선언, 또는 구체적인(concrete) 인스턴스 멤버가 아닌 곳에 붙어 있을 때 분석기가 알려주는 컴파일 타임 진단이에요. @nonVirtual은 오버라이드를 허용하지 않는 멤버에 붙이는 어노테이션이라, 실제 구현이 있는 인스턴스 멤버에만 적용할 수 있어요.

출처: invalid_non_virtual_annotation

본문

설명

분석기는 nonVirtual 어노테이션이 클래스, mixin, enum의 멤버가 아닌 선언에서 발견되거나, 그 멤버가 구체적인 인스턴스 멤버가 아닐 때 이 진단을 만들어요.

예시

다음 코드는 메서드 m이 추상(abstract) 메서드이기 때문에 이 진단을 만들어요.

import 'package:meta/meta.dart';

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

흔한 해결 방법

멤버가 구체적인 인스턴스 멤버가 되도록 의도한 것이라면 그렇게 만들어요.

import 'package:meta/meta.dart';

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

더 알아보기