본문 바로가기
모바일/Flutter

[Dart] null 오류 해결 / not_initialized_non_nullable_variable

by 푸_푸 2023. 1. 5.
728x90

[구현 코드]

자동차 클래스 구현 - BMW를 세번 할인하는 함수 호출, 가격 출력

void main() {
  Car bmw = Car(320, 100000, 'BMW');
  Car benz = Car(250,70000, 'BENZ');
  Car ford = Car(200, 80000, 'FORD');

  bmw.saleCar();
  bmw.saleCar();
  bmw.saleCar();
  print(bmw.price);
}
class Car {
  int maxSpeed;
  num price;
  String name;

  Car(int maxSpeed, num price, String name) {
    this.maxSpeed = maxSpeed;
    this.price = price;
    this.name = name;
  }
  num saleCar() {
    price = price*0.9;
    return price;
  }
}

 

[오류코드]

not_initialized_non_nullable_variable

→ null을 허용하지 않는 변수를 초기화해야 한다.

 

[오류 해결]

1) 필드 또는 변수를 로 초기화할 수 없는 경우 null이 아닌 값으로 설정하는 이니셜라이저를 추가

class C {
  static int f = 0;
}

2) 필드 또는 변수를 로 초기화해야 null하는 경우 유형을 nullable로 변경

int? v;

3) 선언에서 필드 또는 변수를 초기화할 수 없지만 참조되기 전에 항상 초기화되는 경우 late

class C {
  static late int f;
}

 

코드

void main() {
  Car bmw = Car(320, 100000, 'BMW');
  Car benz = Car(250,70000, 'BENZ');
  Car ford = Car(200, 80000, 'FORD');

  bmw.saleCar();
  bmw.saleCar();
  bmw.saleCar();
  print(bmw.price);
}
class Car {
  late int maxSpeed;
  late num price;
  late String name;

  Car(int maxSpeed, num price, String name) {
    this.maxSpeed = maxSpeed;
    this.price = price;
    this.name = name;
  }
  num saleCar() {
    price = price*0.9;
    return price;
  }
}

결과

 

728x90

댓글