FLUTTER

flutter - Null Safety

춘행이 2023. 12. 5. 12:30
728x90

Null safety

null 관련 에러를 runTime이 아닌 edit time에 체크해서 코드가 작성될 때 null 에러가 발생할 수 없게 해 줍니다

즉 모든 변수는 null이 될 수 없고(non-nullable) null이 들어가려면 선언 시? 를 사용하여 nullable 변수로 선언한다

 

void main() {
  int ageNull;
  int? ageNullable;
  
  print(ageNull);//error: The non-nullable local variable 'ageNull' must be assigned before it can be used.
  print(ageNullable);
}

이렇던?를 붙이지 않으면 위처럼 non-nullable을 사용하려면 초기화를 시켜줘야 한다

 

void main() {
  int ageNull=10;
  int? ageNullable;

  print(ageNull); //10
  print(ageNullable);//null
}

위처럼 초기화를 시켜주면 잘 컴파일되고? 가 붙은 nullable은 null이 나온다

 

또! 가있는데 null check operator로 값이 null이 아니라고 보장해 주고 판단해 줍니다

void main() {
  int? age=10;
  print(age);
  
  age=null;
  print(age!);//Null check operator used on a null value
}

하지만!로 보장을 해줬지만 null이면 컴파일러가 에러를 잡아내지 않고 런타임시 에러가 위 주석처럼 발생합니다

 

late는 변수 선언 시 지연 초기화 기법으로 변수타입 앞에 붙여준다

지금은 선언 안 하지만 나중에 데이터가 들어올 거다라고 약속하는 의미이다

아래처럼 name에 대해 데이터를 끝내 넣지 않는다면 바로 에러가 난다

 

void main() {
  late String name;
  
  print(name);
}
728x90