一个问题(?)标记和点(.)用飞镖语言有什么?



说我定义了...

final DocumentSnapshot doc;

变量doc可能是无效的,所以我使用问号和点...

print(widget.doc); // null
print(widget.doc == null); // true
print(widget.doc?.data['name']);

为什么widget.doc?.data['name']投掷错误Tried calling: []("name")而不是返回null

让我理解?.检查null是否会返回null

在当前版本的DART(2.3( null-null-aware Access 不短路呼叫链中。

因此,如果a为null,则a?.b.c会引发异常,因为它与(a != null ? a.b : null).c相同。

在您的情况下,widget.doc?.data['name']((e) { return e != null ? e.data : null; }(widget.doc))['name']相同。

要使您的代码正常工作,您需要引入一个变量。

var a = widget.doc?.data;
print(a == null ? null : a['name']);

nb:您可能对#36541感兴趣:地图没有零值链的"获取"方法

相关内容

  • 没有找到相关文章

最新更新