Dart 中点前的问号

Question mark before dot in Dart

这段代码中的问号是什么意思?我应该什么时候使用它?无论有无问号,我的代码都以相同的方式运行。

void dispose(){
  bloc?.dispose();
  super.dispose();
}

问号是 Dart 中的 null-aware 运算符之一。在此示例中,它表示:如果 bloc 不为空,则仅调用 dispose() 方法 。没有问号,如果 bloc 在尝试调用 dispose() 时为 null,则会抛出 NoSuchMethodError

Dart 网站上有一个关于 null-aware 运算符的有用部分:

https://dart.dev/codelabs/dart-cheatsheet