[ Dart&Flutter ] Dart Null Safety (널 안전성) 심화 학습

Dart Null Safety (널 안전성)에 대한  개념 설명 → 실습 예제 2개 → 해설 & 출력 예시를 통해서 Dart Null Safety 학습을 해보도록 하겠습니다. 어렵지 않게 쉽게 익힐수 있도록 작성하였습니다. 


Dart Null Safety (널 안전성)
Dart Null Safety (널 안전성) 



🚨 Dart Null Safety (널 안전성) 심화 학습

❌ “null 때문에 앱이 멈췄어요!” 를 막아주는 안전한 코딩 방법!


✅ 1. Null Safety 개념

📘 개념 설명

  • Null = 값이 “없음”을 의미해요.

  • Dart에서는 Null Safety 덕분에 “값이 없을 수도 있는 경우”를 명확하게 표시해야 해요.

  • 실수로 null을 잘못 사용하면 앱이 크래시(멈춤) 될 수 있기 때문에, Dart는 개발자를 보호해줍니다.


✔️ Null Safety란?
코드에서 null 오류를 사전에 방지하는 기능!




🏆 실습 예제 1: Null이 될 수 없는 변수

void main() {
  String name = '지훈';
  // name = null;  ❌ 오류 발생!
  print(name);
}

✅ 설명:

  • 기본 변수는 절대 null이 될 수 없음

  • null을 넣으려 하면 컴파일 오류 발생!




🏆 실습 예제 2: Null이 될 수 있는 변수 선언 ( )

void main() {
  String? nickname = null;
  print(nickname);  // 출력: null
}

✅ 출력:

null
String? 처럼 **물음표(?)**를 붙이면 null을 허용!



✅ 2. Nullable ( ) & Non-nullable

📘 개념 설명

타입 선언

의미

String name

절대 null ❌

String? name

null 가능 ✅

  • Null 가능성을 명확히 구분하는 것이 Dart의 특징!

  • Nullable 변수는 사용하기 전에 반드시 값 확인이 필요해요.



🏆 실습 예제 1: Null 체크 후 사용하기

void main() {
  String? city;

  if (city == null) {
    print('도시 정보가 없습니다.');
  } else {
    print('도시는 $city');
  }
}

✅ 출력:

도시 정보가 없습니다.


🏆 실습 예제 2: 기본값 설정 ( ?? 사용 )

void main() {
  String? user;

  print('환영합니다, ${user ?? '손님'}님!');
}

✅ 출력:

환영합니다, 손님님!



✅ 3. Late 변수 ( late 키워드)

📘 개념 설명

  • late는 변수를 나중에 반드시 초기화할 것이라고 Dart에게 약속하는 키워드예요.

  • 주로 선언만 해두고, 초기값을 나중에 넣을 때 사용합니다.


🏆 실습 예제 1: late 변수 선언

late String greeting;

void main() {
  greeting = '안녕하세요!';
  print(greeting);
}

✅ 출력:

안녕하세요!




🏆 실습 예제 2: 클래스에서 late 사용

class Person {
  late String name;

  void setName(String newName) {
    name = newName;
  }
}

void main() {
  Person p = Person();
  p.setName('민지');
  print(p.name);
}

✅ 출력:

민지




✅ 4. Null Assertion Operator ( )

📘 개념 설명

  • !“내가 확실히 null이 아님을 보장할게!” 라고 Dart에게 말하는 거예요.

  • 하지만, 만약 null인데 !를 쓰면 바로 에러 발생!



🏆 실습 예제 1: Null 아님을 보장하기

void main() {
  String? message = '반가워요';
  print(message!);  // null 아님을 확신
}

✅ 출력:

반가워요




🏆 실습 예제 2: 잘못된 사용 (주의!)

void main() {
  String? msg = null;
  print(msg!);  // ❌ 에러 발생!
}

✅ 결과:

Unhandled exception: Null check operator used on a null value
⚠️ 주의: !는 정말 null이 아닐 때만 사용해야 해요!



🎓 마무리 요약

개념

설명

?

null을 허용하는 타입

late

나중에 반드시 초기화할 변수

!

null 아님을 확신할 때 사용

??

null일 경우 기본값 설정


💡 실전 활용 예시

  • Flutter 위젯에서 값이 늦게 들어올 때 late 사용

  • API 응답값이 null일 때 안전하게 처리

  • 사용자 입력이 없을 때 기본값 제공

댓글 쓰기