说我定义了...
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感兴趣:地图没有零值链的"获取"方法