如何遍历 Firebase 数据快照子子项?扑

TSR*_*TSR 7 dart firebase firebase-realtime-database flutter

我有一个 DataSnapshot JSON 对象:

{fridge2: true, fridge1: true} //data pulled from a real time firebase database
Run Code Online (Sandbox Code Playgroud)

我必须把fridge2fridge1放在一个像这样的列表中:

List<String> fridges;
Run Code Online (Sandbox Code Playgroud)

我的尝试:

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

    for (var fridge in fridgesDs) {
      if (fridge.value) {
        fridges.add(fridge.key);
      }
    }
Run Code Online (Sandbox Code Playgroud)

给我这个错误:

type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'Iterable<dynamic>'
Run Code Online (Sandbox Code Playgroud)

TSR*_*TSR 6

我解决了。我过去常常 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);
      }
    });
Run Code Online (Sandbox Code Playgroud)