首页 > 解决方案 > 有没有更好的方法在 Dart 构造函数中测试 null

问题描述

我正在使用以下构造函数构造一个对象:

 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']);
 }

问题是,如果我传入的地图没有 aObj 的映射,它就会崩溃。我尝试将作业移到大括号中并测试是否为空:

 if(data['A'] != null) {
    aObj = A.fromMap(data['A']);
 }

这行得通。但我想像在其他数据成员中一样作为快捷方式构造函数的一部分进行测试。

那可能吗?

标签: dartflutter

解决方案


我认为如何以一种简洁的方式防止崩溃是这样的:

aObj = A.fromMap(data['A'] ?? Map())

这将在is时向您的自定义构造函数返回一个 值,这将导致之后(如果是),因为字段不存在于.MapA.fromMapdata['A']nullcolrownulldata['A']nullMap


推荐阅读