모바일 개발하는 자바리안의 메모장

Flutter - late 키워드 본문

Flutter

Flutter - late 키워드

자바리안 2022. 11. 8. 23:23
반응형

Flutter에서 non-nullable 객체의 경우 선언과 동시에 값을 초기화해줘야 한다.

처음 flutter를 접하고 instance 변수들을 선언할 때 아래와 같은 에러를 많이 접할 수 있었다 : 

그렇다면 나중에 초기화가 필요한 객체의 경우 어떻게 선언을 해줄까? 물론 nullable로 타입을 바꿔주면 문제를 쉽게 해결할 수 있다.

하지만 만약 해당 객체가 절대 null이 될 수 없는, 특정 시점에 무조건 초기화가 될 객체라면?

절대 null이 되지 않는 객체임에도 불구하고, 오랜 시간이 지난 후에 다시 보거나 다른 개발자가 봤을 때 nullable한 객체로 간주하게 될 우려가 있다..

또한, 공식 문서에 정리된 내용을 보면 control flow analysis가 인스턴스 변수, top-level 변수의 경우 실제 초기화를 마치고 사용할 수 있는 상태인지 정확히 파악하지 못하는 이슈가 있다고 하는데..

그래서 dart 팀은 초기화가 보장되는 non-nullable의 경우 late 키워드를 사용하길 권장한다.

 

late 로 선언된 변수의 경우 실제 사용될 때 선언부 코드가 실행된다.

아래 예제 코드의 경우 temperature 변수가 실제 사용되었을 때 readThermometer 함수가 실행되고, 만약 사용되지 않았다면 함수는 실행되지 않는다 :  

late String temperature = readThermometer();

 

late 초기화의 치명적인 단점은 runtime에 error가 발생할 수 있기 때문에 확실히 초기화가 되는지 그리고 초기화되는 과정에서 문제가 발생하지 않은지 꼼꼼히 확인해줘야 할 필요가 있다.

 

 

반응형
Comments