본문 바로가기
프로그래밍/Flutter

[Flutter] Null-Safety

by YuminK 2022. 3. 27.

https://dart.dev/null-safety

Dart Null-safety

Null-safety 원칙

1. 기본적으로 Null이 될 수 없으나 명시적으로 사용할 수 있다.

2. 점진적으로 적용할 수 있는 부분이다.

3. 충분히 타당하다.

한번 null이 아닌 객체는 절대 null값을 가지지 않기 때문에 컴파일 최적화가 가능하다.

더 작고 빠른 실행이 가능해진다.

https://dart.dev/codelabs/null-safety

코틀린과 비슷한 형태로 Null-safety 규칙이 있다.

1. 타입에 ?를 붙이면 Nullable로 전환된다

2. assertion operator !를 사용하면 해당 객체가 Null이 아님을 명시할 수 있다.

int getLength(String? str) {

// Add null check here

return str.length; // str can be null, error

}

Null임을 확인하는 방법

str == null ? 0 : str.length; // 삼항 연산자

if(str == null) 0 else str.length // kotlin

Nullish

str = str ?? "null"; // 값이 있으면 str, 없으면 "null"을 반환

str = str ?: "null" // kotlin

str?.let {}

3. late keyword

즉시 초기화를 할 수 없는 상황, 값이 null이 될 수 없는 경우

코틀린에서도 non-nullable이고 나중에 초기화를 하는 경우 lateinit var를 사용한다.

이 부분을 크게 신경을 쓰지 않고 사용했는데 null이 될 수 있는 경우에는 굳이 lateinit을 사용할 필요도 없이

그냥 null로 초기화하고 체크하면서 사용하면 된다.

내부 코드에서도 lateinit으로 사용하고 있는 값이 null이면 excpetion처리를 해버린다.

late final 키워드를 사용하는 경우에는 나중에 한번 초기화되고 변하지 않는 객체가 된다고 한다.

'프로그래밍 > Flutter' 카테고리의 다른 글

[Flutter] 둥근 버튼 만들기  (0) 2022.04.03
[Flutter] List<TextSpan> in ChangeNotifier  (0) 2022.04.02
[Flutter] RichText  (0) 2022.04.02
[Flutter] 같은 행에 Widget 정렬하기  (0) 2022.03.31
[Flutter] BottomSheet 크기 조정  (0) 2022.03.31

댓글