const_constructor_with_field_initialized_by_non_const 진단: const 생성자인데 필드가 상수로 초기화되지 않아요

const_constructor_with_field_initialized_by_non_const 진단: const 생성자인데 필드가 상수로 초기화되지 않아요

const_constructor_with_field_initialized_by_non_const 진단은 생성자에 const 키워드가 붙어 있는데, 클래스 안 어떤 필드가 상수가 아닌 값으로 초기화되어 있을 때 Dart 분석기가 알려주는 컴파일 타임 진단이에요. const 생성자는 모든 값이 컴파일 타임 상수여야 하니까, 그렇지 않은 필드가 있으면 문제가 되는 거죠.

출처: const_constructor_with_field_initialized_by_non_const

본문

설명

분석기는 생성자에 const 키워드가 있지만, 그 클래스 안 어떤 필드가 상수가 아닌 값으로 초기화될 때 이 진단을 만들어요.

예시

다음 코드는 필드 s가 상수가 아닌 값으로 초기화되기 때문에 이 진단이 나와요.

String x = '3';

class C {
  final String s = x;
  const C();
}

흔한 해결 방법

필드를 상수 값으로 초기화할 수 있다면, 초기화식을 상수 표현식으로 바꿔요.

class C {
  final String s = '3';
  const C();
}

필드를 상수 값으로 초기화할 수 없다면, 생성자에서 const 키워드를 제거해요.

String x = '3';

class C {
  final String s = x;
  C();
}

더 알아보기