【问题标题】:How do I get specific values from a datasnapshot in flutter?如何从颤动的数据快照中获取特定值?
【发布时间】:2018-11-06 08:39:27
【问题描述】:

我有这个数据快照

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

我想从每个帖子中检索“图片”值。 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;
}    

【问题讨论】:

  • 需要指出的是,Daniel 说的是实时数据库,而不是 Cloud Firestore。
  • 向我们展示如何检索快照的示例。
  • 你试过快照["post1"]["pic"]
  • 我会,但“post1”会是一个推送值。
  • 什么是推值?

标签: firebase firebase-realtime-database dart flutter


【解决方案1】:

如果您确定 snapshot 有孩子使用的 value 成员作为 Map Object

snapshot.value['key'];

【讨论】:

    【解决方案2】:

    此代码检索节点的键:

    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;
    ........
    

    结果=6TLD6RFIa0T0a3CuRW9FpB4HlXf2

    【讨论】:

      【解决方案3】:

      这就是我所做的

      Map<dynamic, dynamic> map = snapshot.data.snapshot.value;
      
      map.values.toList()[index]["pic"]
      

      【讨论】:

        【解决方案4】:

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

        伪代码:

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

        然后您将能够根据您的用例执行以下操作:

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

        【讨论】:

        • 这不起作用。 " 引发了另一个异常:类型 '_InternalLinkedHashMap' 不是类型 'Iterable' 的子类型" 您能否提供一个完整示例来说明如何处理快照?
        • 我想你忘了删除 .value ,应该是for (var value in _obj.values)
        猜你喜欢
        • 2020-04-20
        • 1970-01-01
        • 2018-01-21
        • 2018-11-14
        • 1970-01-01
        • 2021-10-30
        • 2022-01-22
        • 1970-01-01
        • 2021-03-10
        相关资源
        最近更新 更多