deferred 라이브러리의 상수는 기본 파라미터 값으로 쓸 수 없어요
deferred 라이브러리의 상수는 기본 파라미터 값으로 쓸 수 없어요
Dart 분석기가 옵션 파라미터의 기본값이 deferred import로 가져온 라이브러리의 상수를 사용할 때 이 진단을 내보내요. 기본값은 컴파일 타임에 준비되어 있어야 하는데, deferred 라이브러리의 상수는 컴파일 타임에 사용할 수 없기 때문이에요.
본문
아래처럼 a.dart 파일이 상수 zero를 정의하고 있다고 해볼게요.
const zero = 0;
그런데 zero가 deferred import로 가져온 라이브러리에 선언되어 있으면 이 진단이 발생해요.
import 'a.dart' deferred as a;
void f({int x = a.zero}) {}
흔한 해결 방법
가져온 라이브러리의 상수를 참조해야 한다면 deferred 키워드를 빼면 돼요.
import 'a.dart' as a;
void f({int x = a.zero}) {}
상수를 따로 참조할 필요가 없다면 기본값을 다른 값으로 바꾸면 돼요.
void f({int x = 0}) {}