在Dart语言中,"?."用于判断对象是否为空。这里有一个来自Flutter的scaffold.dart代码示例:
_drawerKey.currentState?.open();
_drawerKey.currentState?.open();
这是一个空安全运算符。
当你希望在对象不为 null 的情况下调用一个方法/获取器时,使用 ?.(问号点)操作符(否则返回 null)。
_drawerKey.currentState?.open();
仅在它不为空时调用 open()
。
更多信息:https://medium.com/@thinkdigitalsoftware/null-aware-operators-in-dart-53ffb8ae80bb
myObject?.anyProperty
上述代码等同于以下内容:
(myObject != null) ? myObject.anyProperty: null
您可以在单个表达式中链接多个?.的用法:
myObject?.anyProperty?.anyMethod()
如果myObject或myObject.anyProperty为空,则上述代码将返回null(且不会调用anyMethod())。
更多信息请阅读官方文档