Code
dart
// Non-nullable (default)
String name = 'Alice';
// name = null; // compile error!
// Nullable
String? maybeName;
maybeName = null; // OK
// Null assertion (!) — crashes if null
int len = maybeName!.length; // unsafe
// Null-aware access (?.) — returns null if null
int? safeLen = maybeName?.length;
// Null-coalescing (??) — default if null
int lenOrDefault = maybeName?.length ?? 0;
// Late (initialized later, but non-nullable)
class Service {
late final Config config; // set before first use
void init(Config c) { config = c; }
}
// Required (named params, non-null)
void greet({required String name}) => print('Hi $name');
// Promotion (smart casts)
String? getName() => DateTime.now().second % 2 == 0 ? 'Bob' : null;
void main() {
var n = getName();
if (n != null) {
print(n.length); // safe — Dart promotes
}
}