const_constructor_param_type_mismatch 진단: const 생성자의 파라미터 타입이 안 맞아요

const_constructor_param_type_mismatch 진단: const 생성자의 파라미터 타입이 안 맞아요

const_constructor_param_type_mismatch 진단은 const 생성자에 넘긴 상수 값의 런타임 타입이, 그 생성자 파라미터의 정적 타입에 할당될 수 없을 때 Dart 분석기가 알려주는 컴파일 타임 진단이에요.

출처: const_constructor_param_type_mismatch

본문

설명

분석기는 어떤 상수 값의 런타임 타입이 const 생성자 파라미터의 정적 타입에 할당될 수 없을 때 이 진단을 만들어요. const 식이므로 컴파일 타임에 값이 결정되는데, 타입이 맞지 않으면 컴파일 타임 오류가 되는 거예요.

예시

다음 코드는 i의 런타임 타입이 int인데, s의 정적 타입 String에 할당될 수 없기 때문에 이 진단이 나와요.

class C {
  final String s;

  const C(this.s);
}

const dynamic i = 0;

void f() {
  const C(i);
}

흔한 해결 방법

생성자에 올바른 타입의 값을 넘기면 돼요.

class C {
  final String s;

  const C(this.s);
}

const dynamic i = 0;

void f() {
  const C('$i');
}

더 알아보기