访问二级地图元素时如何检查空值? 例如
var clientName = item['client']['name'];
如果item
不包含client
,将引发异常 我想要类似的东西
item['client']?['name']
或
item['client']?.['name']
但是不会编译。
我当然可以做两次item['client']
或为此引入一个本地变量,但这感觉很差。
答案 0 :(得分:1)
我认为这与a question I asked some time ago 类似。
基本上,这将是您的解决方案:
(item['client'] ?? const {})['name']
这利用了null-aware ??
运算符,该运算符在'client'
中不存在item
的情况下仅返回一个空映射。
答案 1 :(得分:0)
通过putIfAbsent
,您可以使用?
运算符。
item.putIfAbsent("client", (){})
?.putIfAbsent("name", (){});
https://api.dartlang.org/stable/2.3.1/dart-core/Map/putIfAbsent.html