지연 라이브러리의 상수는 애너테이션으로 사용할 수 없음
지연 라이브러리의 상수는 애너테이션으로 사용할 수 없음 (invalid_annotation_from_deferred_library)
이 문서는 Dart 분석기(analyzer)가 만들어 내는 invalid_annotation_from_deferred_library 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. 간단히 말하면, deferred(지연) import로 가져온 라이브러리의 상수(constant)를 애너테이션으로 사용했을 때 분석기가 이 진단을 알려 줘요. 어디에 어떤 문제가 있는지 차근차근 살펴볼게요.
본문
진단 메시지
Constant values from a deferred library can't be used as annotations.
지연(deferred) 라이브러리의 상수 값은 애너테이션으로 사용할 수 없어요.
설명
분석기는 deferred import를 사용해 가져온 라이브러리의 상수를 애너테이션으로 사용하면 이 진단을 만들어 내요. 애너테이션은 컴파일 타임에 평가되는데, 지연 라이브러리의 상수는 컴파일 타임에 사용할 수 없기 때문이에요.
더 자세한 내용은 Lazily loading a library 문서를 확인해 주세요.
예시
dart:math 라이브러리를 deferred로 import 하면서 상수 pi를 애너테이션으로 사용하고 있기 때문에 다음 코드는 이 진단을 만들어 내요.
import 'dart:math' deferred as math;
@math.pi
void f() {}
일반적인 해결 방법
상수를 애너테이션으로 사용해야 한다면, import에서 deferred 키워드를 제거해 주세요.
import 'dart:math' as math;
@math.pi
void f() {}
만약 다른 상수를 애너테이션으로 사용할 수 있다면, 애너테이션을 다른 상수로 바꿔 주세요.
@Deprecated('...')
void f() {}
더 알아보기
- Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
- 지연 로딩(lazy loading)의 자세한 내용은 Lazily loading a library 문서를 참고해요.