嵌套IF条件行为异常

时间:2019-03-03 19:44:27

标签: dart flutter

我有以下几种中频条件。

      if (globals.chatroomInfoMap.containsKey(chatroomID)) {
        if (messageData['name'] != null) {
          globals.chatroomInfoMap[chatroomID].name =
              messageData['name'];
              print('object ${globals.chatroomInfoMap[chatroomID].name}');
        }
        print('1');
        if (messageData['timestamp'] != null) {
          globals.chatroomInfoMap[chatroomID].timestamp =
              messageData['timestamp'];
              print('object ${globals.chatroomInfoMap[chatroomID].timestamp}');
        }
        print('2');
        if (messageData['members'] != null) {
          globals.chatroomInfoMap[chatroomID].members =
              messageData['members'];
              print('object ${globals.chatroomInfoMap[chatroomID].members}');
        }
        print('3');
        if (messageData['slogan'] != null) {
          globals.chatroomInfoMap[chatroomID].slogan =
              messageData['slogan'];
              print('object ${globals.chatroomInfoMap[chatroomID].slogan}');
        }
        print('object here');
      }

在输出中,我只能看到以下内容

  

I / flutter(25612):对象OtherRoom !! @

     

I / flutter(25612):1

因此,我们看到的是第二个IF语句中的打印内容中的打印内容,而下一行是此后的打印内容中的'1'。然后就是所有调试打印。我不知道这是什么法术?我在Dartpad中尝试了相同的操作,以确保我没有正确使用语法。

Dartpad中使用的代码:

main() {
  final Map<String, dynamic> messageData = {
    'slogan': 'buhuhu1',
    'chatroomID': 'H8j0EHhu2QpicgFDGXYZ',
    'mode': 'chatroom - update',
    'name': 'OtherRoom@!',
    'timestamp': '2019-02-23T17:12:12.000Z',
    'click_action': 'FLUTTER_NOTIFICATION_CLICK',
    'members': ["fb7TfdFvl7tWgtSldgHs", "8kG2kE4jBkPs2qwt7GYA"]
  };
  final Map<String, dynamic> global = {'H8j0EHhu2QpicgFDGXYZ': 'something'};

  if (global.containsKey(messageData['chatroomID'])) {
    if (messageData['name'] != null) {
      print('here 1');
    }
    print('here');
    if (messageData['timestamp'] != null) {
      print('here 2');
    }
  }
}

输出:

  

此处1

     

这里

     

此处2

能否请您帮助我了解我所缺少的内容?我确信这是一个非常愚蠢的错误。

1 个答案:

答案 0 :(得分:1)

我遇到了问题。时间戳具有不同的数据类型。我想知道为什么它没有引发错误。感谢您的帮助。