어노테이션은 const 생성자만 호출할 수 있어요

어노테이션은 const 생성자만 호출할 수 있어요

Dart 분석기가 어노테이션으로 존재하는 생성자를 호출하고 있는데, 그 생성자가 const 생성자가 아닐 때 이 진단을 내보내요. 어노테이션은 컴파일 타임에 평가되어야 하기 때문에 반드시 상수 표현식이어야 하죠.

출처: non_constant_annotation_constructor

본문

아래 코드는 C의 생성자가 const 생성자가 아니라서 이 진단이 발생해요.

@C()
void f() {}

class C {
  C();
}

흔한 해결 방법

클래스가 const 생성자를 가질 수 있다면, 어노테이션에 사용할 const 생성자를 만들어주면 돼요.

@C()
void f() {}

class C {
  const C();
}

클래스가 const 생성자를 가질 수 없다면, 어노테이션을 제거하거나 다른 클래스를 어노테이션에 사용하면 돼요.

더 알아보기