field_initializer_not_assignable 진단: 초기화 값의 타입이 필드 타입에 맞지 않아요
field_initializer_not_assignable 진단: 초기화 값의 타입이 필드 타입에 맞지 않아요
Dart 분석기가 내보내는 진단에는 이름이 있어요. field_initializer_not_assignable은 생성자의 초기화 리스트가 필드에 할당할 수 없는 값으로 필드를 초기화할 때 분석기가 알려주는 진단이에요. const 생성자에서는 "초기화 값의 타입 '{0}'을 필드 타입 '{1}'에 할당할 수 없어요(The initializer type '{0}' can't be assigned to the field type '{1}' in a const constructor)"로, 일반 생성자에서는 "초기화 값의 타입 '{0}'은(는) 필드 타입 '{1}'에 할당할 수 없어요(The initializer type '{0}' can't be assigned to the field type '{1}')"로 표시돼요.
본문
설명
생성자의 초기화 리스트가 필드에 할당할 수 없는 값으로 필드를 초기화하면 이 진단이 나와요.
예시
다음 코드는 0이 int 타입이고, int를 String 타입의 필드에 할당할 수 없기 때문에 이 진단이 나와요.
class C {
String s;
C() : s = 0;
}
흔한 해결 방법
필드의 타입이 맞다면, 할당하는 값을 타입이 유효한 값으로 바꿔요.
class C {
String s;
C() : s = '0';
}
값의 타입이 맞다면, 그 할당을 허용하도록 필드의 타입을 바꿔요.
class C {
int s;
C() : s = 0;
}