초기화가 보장되지 않는 final 변수를 읽을 때

초기화가 보장되지 않는 final 변수를 읽을 때 (read_potentially_unassigned_final)

선언 시점에 초기화되지 않은 final 변수는, 읽는 시점에 값이 항상 할당되어 있다는 게 보장되지 않으면 읽을 수 없어요. 이 진단은 그 상황을 알려줘요.

출처: read_potentially_unassigned_final

본문

Dart 분석기(analyzer)는 final 지역 변수(local variable)가 선언 시점에 초기화되지 않았는데, 그 변수가 참조되기 전에 항상 초기화된다는 것을 컴파일러가 증명할 수 없는 지점에서 그 변수를 읽을 때 이 진단을 내요.

예시

아래 코드는 final 지역 변수 x가 아직 초기화되지 않았을 수도 있는데(3번 줄) 그걸 읽어서 이 진단이 발생해요.

int f() {
  final int x;
  return x;
}

일반적인 해결 방법

변수를 읽기 전에 반드시 초기화되도록 해 주면 돼요. 아래처럼 모든 분기에서 값을 할당하면 되죠.

int f(bool b) {
  final int x;
  if (b) {
    x = 0;
  } else {
    x = 1;
  }
  return x;
}

더 알아보기