Code/Flutter

dart null safty

하말 ⍺ 2024. 9. 2. 23:49
반응형

책 "코딩셰프의 플러터 맛집" 내용을 정리한 것 입니다.

 

String color; // Non-nullable color에 값이 들어가지않으면 오류가 난다.
String? color; // color가 Null일 수 도 있음 Nullable.

!(bang)
일부 변수들은 db에서 불러오다보니 코드적으로는 오류가 날 수 있다.
예를들어 모든문자를 대문자로 바꾸어주는 메서드 toUpperCase()의 경우엔 string 값이 null이면 오류가난다
String? name;
name.toUpperCase(); // name이 nullable이므로 오류발생
name!.toUpperCase(); // !(bang)을 통해 name이 null이 아닐거라 확인시켜줌.

late
변수의 초기화를 지연시키는데 사용된다. 클래스의 인스턴스변수나 전역변수를 선언할때 사용. 초기화전에 접근하면 오류가 난다.


! 연산자는 변수가 Null값을 가질 가능성이 있건 없건 무조건 데이터를 가지고 있다고 다트에게 우기는 것과 비슷. 컴파일 타임시에는 에러가 발생하지 않지만 만약 변수가 널 값을 가졌을 경우 런타임 에러를 발생.
late 키워드는 다트에게 변수를 초기화 시키지 않은 상태에서도 선언할 수 있게 해주면서 런타임 시에 반드시 초기화를 시켜주겠다고 약속을 하는 것. 다트는 late 키워드를 믿고 컴파일 에러를 발생시키지 않는데, late 키워드를 사용한 변수가 런타임 시에 초기화되지 않으면 런타임 에러를 발생