首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Flutter中使用Firebase将childs从快照中提取出来

在Flutter中使用Firebase将childs从快照中提取出来
EN

Stack Overflow用户
提问于 2021-04-07 20:19:08
回答 1查看 376关注 0票数 1

使用一个基本的颤振应用程序,我正在从我的实时Firebase数据库中获取数据,并在一个FirebaseAnimatedList中呈现它。我的数据看起来像是:

我想取下每个项目的名称并在FirebaseAnimatedList中呈现它,然后有一个删除图标函数将其从列表中删除,并更新特定一天的总钠和卡路里计数。我访问数据快照的代码如下所示:

代码语言:javascript
复制
  formattedDate = formatter.format(now);
    callLetters = formattedDate;
    final FirebaseDatabase database = FirebaseDatabase(app: widget.app);
    _callLettersRef = database.reference().child('User').child('DietVals').child(formattedDate).child('Meals');

我也是这样查询数据库的,它在我的应用程序中返回以下列表。我不太确定的是,从同样的“膳食”快照中直接获取卡路里和钠的儿童的最佳途径。

代码语言:javascript
复制
 Flexible(
    child: new FirebaseAnimatedList(
        shrinkWrap: true,
        query: _callLettersRef, itemBuilder: (BuildContext context, DataSnapshot snapshot,
        Animation<double> animation,
        int index){
      return new ListTile(
        trailing: IconButton(icon: Icon(Icons.delete), onPressed: () =>{
            ref.child('User').child('DietVals').child(formattedDate).child('Calories').set(ServerValue.increment(-!NOTSUREHOWTOACCESSTHECALORIEVALUE)),
          ref.child('User').child('DietVals').child(formattedDate).child('Sodium').set(ServerValue.increment(-!NOTSUREHOWTOACCESSTHESODIUMVALUE)),
            _callLettersRef.child(snapshot.key).remove(),}),
        title: new Text(snapshot.key + "\n(Calories: " + snapshot.value.toString() + ")"
        ),
      );
    })
),

基本上,我只是通过snapshot.key展示了这顿饭的标题,通过snapshot.value展示了卡路里和钠(两个孩子)。但是我更喜欢分别显示卡路里和钠,如果有人按下删除键,我可以访问它们的两个值来重置总卡路里和钠的计数。有没有人想过如何最好地处理这件事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-07 20:38:19

当您在不是单个值的value上调用DataSnapshot object时,您将从该路径下的值的Map<String, dynamic>返回。因此,您可以从该映射中获取特定属性的值。

因此,与new Text(snapshot.key + "\n(Calories: " + snapshot.value.toString() + ")")不同的是,可以这样做:

代码语言:javascript
复制
new Text(
  snapshot.key + "\n" + 
  "(Calories: " + snapshot.value["calories"].toString() + ")"
)

如果在顶级Map下有更多嵌套对象,它们的值将显示为结果中的另一个Map<String, dynamic>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66993585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档