
기본적으로 Flutter에서는 null 값이 할당되는 것을 방지해두었다.
안정성 때문이라고 하는데 의도치 않은 null값 할당을 방지하여 의도한 곳에만 할당 될 수 있는 문법이다.
존재이유는 개발자의 실수방지 / 코드 안정성 향상이다.
void main() {
String name = 'Kihwan'; // not null
String? name2 = null; // null
print(name2.length); //null safety 조건에 실패
print(name2?.length);//null safety 조건에 통과
}
여기서 ?의 의미는 "해당 변수는 null값이 할당 가능"이다.
null을 호출할 때도 위와 같이 null safety 조건이 있으니 참고
만약 다음과 아래와 같은 코드가 있다면 결과는 어떻게 나올까
void main() {
String? name = null;
String result = name;
print(result);
}

위와 같은 에러가 뜬다.
대충 뜻은 name에게 할당된 값 때문에 result에 할당할 수 없다는 뜻
이럴 때 Null 합류 연산자 사용을 할 수 있다.
void main() {
//null 합류 연산자(??)
String? name = null;
String result = name ?? '홍길동';
print(result);
}

코드를 알기쉽게 풀어서 이해해보자.
String result = name ?? '홍길동';
"만약 name의 값이 null이라면 '홍길동'의 값을 할당해라'"
그럼 만약 name의 값이 null 이 아니라면 어떻게 될까
void main() {
//null 합류 연산자(??)
String? name = '김철수';
String result = name ?? '홍길동';
print(result);
}

name의 값이 null이 아니기 때문에 기존에 할당된 값으로 result에게 넘어간다.