field_initialized_in_parameter_and_initializer 진단: 매개변수 목록과 초기화 리스트에서 동시에 초기화하면 안 돼요

field_initialized_in_parameter_and_initializer 진단: 매개변수 목록과 초기화 리스트에서 동시에 초기화하면 안 돼요

Dart 분석기가 내보내는 진단에는 이름이 있어요. field_initialized_in_parameter_and_initializer필드가 생성자의 매개변수 목록에서 초기화되면서 동시에 초기화 리스트에서도 초기화될 때 분석기가 알려주는 진단이에요.

출처: field_initialized_in_parameter_and_initializer

본문

설명

필드가 매개변수 목록(초기화 형식 매개변수, this.f처럼 쓰는 것)에서 초기화되고 생성자의 초기화 리스트에서도 초기화되면 이 진단이 나와요. 한 필드를 두 자리에서 초기화하는 건 허용되지 않아요.

예시

다음 코드는 필드 f를 초기화 형식 매개변수와 초기화 리스트에서 모두 초기화해서 이 진단이 나와요.

class C {
  int f;
  C(this.f) : f = 0;
}

흔한 해결 방법

필드를 매개변수로 초기화하고 싶다면 초기화 리스트 쪽의 초기화를 빼요.

class C {
  int f;
  C(this.f);
}

필드를 초기화 리스트에서 초기화하고 매개변수가 필요 없다면 매개변수를 빼요.

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

필드를 초기화 리스트에서 초기화하되 매개변수도 필요하다면 일반 매개변수로 바꿔요.

class C {
  int f;
  C(int g) : f = g * 2;
}

더 알아보기