如何从flutter中的数据快照中获取特定值?

时间:2018-05-27 17:31:35

标签: firebase firebase-realtime-database dart flutter

我有这个数据快照

 "{post1: {pic: https://i.redd.it/ni6zhxh874011.jpg, title: title, desc: desc}, post2: {pic: https://i.redd.it/krj9miojg5011.jpg, title: awsdas, desc: desc2}}"

我希望找回" pic"每个帖子的价值。 snapshot.value [" pic"]不起作用,返回null。

提前致谢

这就是我收到未来构建器

的数据快照的方法
Future<Object> _obj ()async {
Object _objdatabase;
await FirebaseDatabase.instance.reference().child("Communities").once().then((DataSnapshot snapshot) {
  print(_objdatabase.toString());

  _objdatabase = snapshot.value;

});
return _objdatabase;

}

4 个答案:

答案 0 :(得分:2)

你想要的是在snapshot.value中迭代values并将它们添加到列表中。

伪码:

for (var value in snapshot.value.values){
myList.add(value);
}

然后,根据您的使用情况,您将可以执行此类操作:

myList.forEach((v)=>print(v["pic"].toString)); //just an example

答案 1 :(得分:2)

这就是我做的事情

Map<dynamic, dynamic> map = snapshot.data.snapshot.value;

map.values.toList()[index]["pic"]

答案 2 :(得分:1)

如果您确定快照具有孩子的成员作为地图对象

.bmx

答案 3 :(得分:0)

此代码检索节点的密钥:

DataSnapshot usuario = await messagesRef.limitToLast(10).orderByChild("email").equalTo(mail_emparejar).once()
.then((DataSnapshot snapshot) {
print(snapshot.value);
user_uid=snapshot.value.entries.elementAt(0).key;
........

result = 6TLD6RFIa0T0a3CuRW9FpB4HlXf2