728x90
728x90
// nullable - null이 될 수 있다.
// non-nullable - null이 될 수 없다.
// null - 아무런 값이 있지 않다.
String name = '이름';
print(name); // 이름
name = null // 오류 => 기본적으로 String 타입은 null 값을 허용하지 않습니다.
오류 해결방법
// ✅ String? (nullable 타입) 사용
String? name = '이름'; // name은 null이 될 수 있음
print(name); // 출력: 이름
name = null; // 이제 오류 없음
print(name); // 출력: null
⚠️ null 처리 시 주의할 점
1. ✅ ! 연산자 (null이 아님을 확신할 때)
String? name = '이름';
print(name!.length); // name이 null이 아니라면 정상 실행
- name! → name이 null이 아님을 개발자가 보장하는 경우 사용.
- 하지만 name이 null이면 런타임 오류 발생!
2. ✅ ?? 연산자 (null이면 기본값 사용)
String? name = null;
print(name ?? '기본 이름'); // 출력: 기본 이름
- ?? 연산자는 name이 null이면 '기본 이름'을 사용.
3. ??= 연산자 (null이면 값 할당)
String? name;
name ??= '새로운 이름'; // name이 null이면 할당
print(name); // 출력: 새로운 이름
- String → null 허용 ❌ (기본 타입, null 할당 시 오류 발생)
- String? → null 허용 ✅ (name = null; 가능)
- null이 될 가능성이 있으면 String?을 사용하고, null 처리 연산자 (??, ??=, !)를 활용하면 안전하게 사용할 수 있음.
728x90
728x90
'Flutter > 개념' 카테고리의 다른 글
| Dart 기본기 - Dart 3.0 클래스 (1) | 2025.02.05 |
|---|---|
| Dart 기본기 - Stream, await, async, yield (2) | 2025.02.05 |
| Dart 기본기 - Future, await, async (3) | 2025.02.05 |
| Dart 기본기 - final vs const 차이 (2) | 2025.02.03 |
| Dart 기본기 - dynamic vs var 차이 (2) | 2025.02.03 |
댓글