[Flutter/Dart] null 체크하는 방법

Dart는 null-safety를 제공하는 언어로, 개발자가 null로 인한 오류를 방지할 수 있도록 돕습니다. 그러나 기존 코드와의 호환성이나 특정 상황에서 여전히 null을 다루어야 하는 경우가 있습니다.

이번 글에서는 Dart에서 null 체크를 수행하는 다양한 방법과 실용적인 예제를 소개합니다.

 

 

1. Dart의 Null-Safety 개념

Dart는 null-safety 기능을 제공하여 해당 변수가 null을 가질 수 있는 변수인지 없는 변수인지를 명확하게 정의해놓을 수 있습니다.

String? nullableString; // null을 가질 수 있는 변수
String nonNullableString = "Hello"; // null을 가질 수 없는 변수

타입 뒤에 ?를 추가해주면 해당 변수에는 null 값이 저장될 수 있습니다. 반대로, 명시적으로 선언된 변수는 null 값을 가질 수 없습니다.

 

 

2. Null 체크하는 방법

Dart에서는 null을 체크하는 다양한 방법이 있습니다.

 

2.1 Null 여부 확인 (if 문 활용)

if 을 사용하여 null 여부를 검사할 수 있습니다.

void main() {
  printLength("안녕하세요"); // 출력: 문자열 길이: 5
  printLength(null); // 출력: null 값을 가졌습니다.
}

void printLength(String? text) {
  if (text != null) {
    print("문자열 길이: ${text.length}");
  } else {
    print("null 값을 가졌습니다.");
  }
}

 

2.2 Null-aware 연산자 (?.)

?. 연산자를 사용하면 객체가 null이 아닐 때만 속성이나 메서드를 호출합니다.

void main() {
  printLength("안녕하세요"); //출력 : 문자열 길이: 5
  printLength(null); //출력 : 문자열 길이: null
}

void printLength(String? text) {
  print("문자열 길이: ${text?.length}");
}

위 코드에서 text가 null이면 text?.length는 null을 반환하며, 오류 없이 안전하게 실행됩니다.

 

2.3 기본값 설정 (?? 연산자)

?? 연산자를 사용하면 변수가 null일 경우 기본값을 설정할 수 있습니다.

void main() {
  printLength("안녕하세요"); //출력 : 안녕하세요
  printLength(null); //출력 : 기본 메시지
}

void printLength(String? text) {
  String message = text ?? "기본 메시지";
  print(message); // nullableString이 null이면 "기본 메시지" 출력
}

 

 

3. Null 체크 실전 예제

3.1 리스트에서 null 값 필터링하기

void main() {
  List<String?> names = ["John", null, "Alice", "Bob", null];
  List<String> filteredNames =
      names.where((name) => name != null).cast<String>().toList();
  print(filteredNames); // ["John", "Alice", "Bob"]
}

 

3.2 맵에서 null 값 제거하기

void main() {
  Map<String, String?> userInfo = {
    "name": "Alice",
    "email": null,
    "phone": "123-4567"
  };

  userInfo.removeWhere((key, value) => value == null);
  print(userInfo); // {"name": "Alice", "phone": "123-4567"}
}

 

 

4. 정리

Dart에서 null 체크를 수행하는 다양한 방법을 알아보았습니다. null-safe 코드를 작성하면 오류를 방지하고 유지보수를 쉽게 할 수 있습니다. 이제 Dart에서 null을 보다 안전하고 효율적으로 다룰 수 있을 것입니다! 😊