Dart에서 데이터 선언 시 null값을 전달해줄 수 없습니다. 왜그럴까요? 만약에 null을 전달해 줄 수 있고, 다음과 같은 코드가 있다고 하겠습니다.
final String name = null;
print(저는 $name입니다.)
이런 코드만 보고는 별 문제가 없어보이지만, 실제로 앱에서 작동하는 코드의 일부분이고 실수로 null이 입력되었다면 문제가 생기겠지요. null이 안좋은 것이 아니라, 실수를 방지하기 위해서 입니다.
Null Safety를 사용하기 위해서 선언 데이터 타입 뒤에 ?를 붙여줍니다.
final String? name;
이러한 표현을 Nullable이라고 합니다. 이 데이터는 String데이터인것 같지만 String과 String?은 완전히 다른 데이터타입으로 취급됩니다.
Nullable 데이터는 기본 데이터가 null입니다. 어떤 코드에서는 null이 아닌 경우에 한해서 Nullable 데이터를 일반 데이터처럼 사용해야 할 경우가 있습니다. 그때는 데이터 이름 뒤에 '!'를 붙여줄 수 있습니다. 하지만 좋은 방법은 아닙니다. 에러가 나올 수 있기 때문이죠.