如何遍历Firebase datasnapshot子项?扑

时间:2018-08-05 17:15:35

标签: firebase firebase-realtime-database dart flutter

我有一个DataSnapshot JSON对象:

{fridge2: true, fridge1: true} //data pulled from a real time firebase database

我必须将fridge2fridge1放在这样的列表中:

List<String> fridges;

我的尝试

DataSnapshot fridgesDs = snapshot.value['fridges'];

    for (var fridge in fridgesDs) {
      if (fridge.value) {
        fridges.add(fridge.key);
      }
    }

给我这个错误:

type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'Iterable<dynamic>'

2 个答案:

答案 0 :(得分:1)

我解决了。我曾经print(fridgesDs.runtimeType);来获取firebase返回的变量类型。它实际上是一个HashMap:_InternalLinkedHashMap<dynamic, dynamic> 将返回的值强制转换为 Map 。最后,我使用forEach遍历了地图。这是最终版本:

 Map<dynamic, dynamic> fridgesDs = snapshot.value['fridges'];
//    print(fridgesDs.runtimeType);
    fridgesDs.forEach((key, value) {
      if (value) {
        fridges.add(key);
      }
    });

答案 1 :(得分:0)

您只插入密钥 我必须插入键和值 或告诉我什么是我们的列表..ArrayList,堆栈,链接列表或树 我认为您需要做的所有事情 .. refrigerators.add(fridge.key,fridge.value);