遍历嵌套地图时为空的运算符

时间:2019-05-29 09:44:51

标签: dart

访问二级地图元素时如何检查空值? 例如

var clientName = item['client']['name'];
如果item不包含client

将引发异常 我想要类似的东西

item['client']?['name']

item['client']?.['name']

但是不会编译。

我当然可以做两次item['client']或为此引入一个本地变量,但这感觉很差。

2 个答案:

答案 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