cast_from_nullable_always_fails 진단: 값이 할당되지 않은 nullable 변수를 캐스팅할 때

cast_from_nullable_always_fails 진단: 값이 할당되지 않은 nullable 변수를 캐스팅할 때

nullable 타입의 지역 변수가 아직 할당되지 않았는데 null이 아닌 타입으로 캐스팅되면, 그 변수는 아직 기본값인 null을 가지므로 캐스팅이 예외를 던져요. Dart 분석기가 이런 경우 cast_from_nullable_always_fails 진단을 알려줘요.

출처: cast_from_nullable_always_fails

본문

설명

분석기는 nullable 타입을 가진 지역 변수가 아직 할당되지 않았는데 null이 아닌 타입으로 캐스팅될 때 이 진단을 만들어요. 변수가 아직 할당되지 않았으므로 기본값인 null을 가지기 때문에, 캐스팅이 예외를 던지게 돼요.

예시

다음 코드는 변수 xnull 값을 가진다고 알려져 있는데도 null이 아닌 타입인 int로 캐스팅되기 때문에 이 진단을 만들어요.

void f() {
  num? x;
  x as int;
  print(x);
}

흔한 해결 방법

캐스팅 전에 변수가 값을 가질 것으로 기대한다면, 초기화나 대입을 추가해요.

void f() {
  num? x = 3;
  x as int;
  print(x);
}

변수가 할당될 것으로 기대하지 않는다면, 캐스팅을 제거해요.

void f() {
  num? x;
  print(x);
}

더 알아보기