deferred 라이브러리의 상수는 기본 파라미터 값으로 쓸 수 없어요

deferred 라이브러리의 상수는 기본 파라미터 값으로 쓸 수 없어요

Dart 분석기가 옵션 파라미터의 기본값이 deferred import로 가져온 라이브러리의 상수를 사용할 때 이 진단을 내보내요. 기본값은 컴파일 타임에 준비되어 있어야 하는데, deferred 라이브러리의 상수는 컴파일 타임에 사용할 수 없기 때문이에요.

출처: non_constant_default_value_from_deferred_library

본문

아래처럼 a.dart 파일이 상수 zero를 정의하고 있다고 해볼게요.

const zero = 0;

그런데 zerodeferred 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}) {}

더 알아보기