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}')"로 표시돼요.

출처: field_initializer_not_assignable

본문

설명

생성자의 초기화 리스트가 필드에 할당할 수 없는 값으로 필드를 초기화하면 이 진단이 나와요.

예시

다음 코드는 0int 타입이고, intString 타입의 필드에 할당할 수 없기 때문에 이 진단이 나와요.

class C {
  String s;
  C() : s = 0;
}

흔한 해결 방법

필드의 타입이 맞다면, 할당하는 값을 타입이 유효한 값으로 바꿔요.

class C {
  String s;
  C() : s = '0';
}

값의 타입이 맞다면, 그 할당을 허용하도록 필드의 타입을 바꿔요.

class C {
  int s;
  C() : s = 0;
}

더 알아보기