`final_initialized_in_declaration_and_constructor`: final 필드를 두 번 초기화하면 안 돼요

final_initialized_in_declaration_and_constructor: final 필드를 두 번 초기화하면 안 돼요

Dart 분석기가 내는 final_initialized_in_declaration_and_constructor 진단에 대해 알아볼게요. final 필드가 선언하는 곳과 생성자 매개변수에서 각각 초기화되면 이 진단이 나와요.

출처: final_initialized_in_declaration_and_constructor

본문

final 필드가 두 번 초기화되면 — 한 번은 선언하는 자리에서, 한 번은 생성자의 매개변수로 — 분석기가 이 진단을 만들어요. final 필드는 값을 한 번만 정할 수 있으니까요.

예시

다음 코드는 필드 f가 두 번 초기화되기 때문에 이 진단을 만들어요.

class C {
  final int f = 0;

  C(this.f);
}

자주 쓰는 해결 방법

모든 인스턴스에서 필드가 같은 값을 가져야 한다면, 매개변수 목록에서 초기화를 빼면 돼요.

class C {
  final int f = 0;

  C();
}

필드가 인스턴스마다 다른 값을 가질 수 있다면, 선언 자리에서 초기화를 빼면 돼요.

class C {
  final int f;

  C(this.f);
}

더 알아보기