How to loop through a Firebase datasnapshot sub ch

2019-07-22 07:42发布

问题:

I have a DataSnapshot JSON object :

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

I have to put fridge2 and fridge1 in a list like this:

List<String> fridges;

My attempt:

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

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

Gives me this error:

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

回答1:

I solved it. I used to print(fridgesDs.runtimeType); to get the type of variable returned by firebase. it is actually a HashMap: _InternalLinkedHashMap<dynamic, dynamic> The casted the returned value into a Map. Finally, I used forEach to loop through the map. Here is the final version:

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


回答2:

you insert just the key and you have to insert key and values i think or tell me what is ur list ..ArrayList , stack,Linked List or tree i think all what you need to do .. fridges.add(fridge.key,fridge.value);