Dart Null Safety (널 안전성)에 대한 개념 설명 → 실습 예제 2개 → 해설 & 출력 예시를 통해서 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일 때 안전하게 처리
-
사용자 입력이 없을 때 기본값 제공
댓글 쓰기