Null Safety
Null-Aware
?? and ?.
?? returns a fallback when the left side is null. ?. only calls the method if the receiver is non-null.
Program
Play the program to fall back to a default and safely read a length.
null_aware.dart
Replay: real traced execution (multi-file project)
void main() {
String? name;
var display = name ?? 'default';
print(display);
name = 'Ada';
print(name?.length);
}
name ← null
1void main() {2 String? name;3 var display = name ?? 'default';values this stepnullnamedisplay ← default
2String? name;3var display = name ?? 'default';4print(display);values this stepdefaultdisplaynullnameprint(display);
3var display = name ?? 'default';4print(display);5name = 'Ada';outputdefaultvalues this stepdefaultdisplayname ← Ada
4print(display);5name = 'Ada';6print(name?.length);values this stepnull → Adanameprint(name?.length);
5 name = 'Ada';6 print(name?.length);7}output3values this stepAdaname
??
`a ?? b` is `a` when not null, otherwise `b`.
?.
`x?.method()` returns `null` when `x` is null instead of throwing.
safe access
Both operators avoid null dereferences without a manual `if`.