我正在使用以下构造函数构造一个对象:
class A {
int col;
int row;
A.fromMap(Map<dynamic, dynamic> data)
: col = data['col'],
row = data['row'];
}
class B {
A aObj;
int objType;
int count;
B.fromMap(Map<dynamic, dynamic> data)
: objType = data['objType'],
count = data['count'],
aObj = A.fromMap(data['A']);
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果我传入的地图没有 aObj 的映射,它就会崩溃。我尝试将分配移到大括号中并测试是否为空:
if(data['A'] != null) {
aObj = A.fromMap(data['A']);
}
Run Code Online (Sandbox Code Playgroud)
这有效。但是我想像在其他数据成员中一样作为快捷构造函数的一部分进行测试。
那可能吗?
我认为如何以一种巧妙的方式防止崩溃是这样的:
aObj = A.fromMap(data['A'] ?? Map())
Run Code Online (Sandbox Code Playgroud)
这将返回一个空 Map
到您的自定义A.fromMap
构造函数的时候data['A']
是null
,这将导致col
与row
被null
之后(如果data['A']
是null
),因为在不存在的领域Map
。
归档时间: |
|
查看次数: |
6946 次 |
最近记录: |