docs

TOP(About this memo)) > 一覧(Dart) > Null

nullable

 int? a;
 print(a);

null safety

null assertion

class A{
  A(this.a);
  final Function()? a;
  
  void b() {
    if (a != null) {
      // a(); // 明らかにnullではないがコンパイルエラー
      a!();
    }
  }
}
void main() {
  String? test;
  print('$test');
  print('${test?.toUpperCase()}');
  print('${test!.toUpperCase()}');//ランタイムエラー
}

Conditional access

if (a != null && a.b != null) {
  // ....
}
// このように短く書ける場合もある
if (a?.b != null) {
  // ....
}

省略記法

 int? a;
 int b = a ?? 4;
 a ??= 3;

(参考)null と 値自体が渡されていないことの区別