【问题标题】:Flutter) How can I retrieve certain value from Firebase Realtime Database?Flutter)如何从 Firebase 实时数据库中检索某些值?
【发布时间】:2020-12-11 18:13:57
【问题描述】:
  1. 我正在使用“Firebase 实时数据库”来检索我的 Flutter 应用中的一些数据。

  2. 数据的结构如下图所示。

  1. 我想要的是创建由每个大孩子组成的列表。(例如[central][2] = "test-2" [central][3] = ""[central][4] = "test-4"

  2. 但我不断得到不可分割的值,如下图所示。我还尝试使用ToList() 将值与snapshot.value 分开,但失败了。

  1. 代码
import 'package:firebase_database/firebase_database.dart';
import 'package:firebase_database/ui/firebase_animated_list.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';


class GetMealScreen extends StatefulWidget {
  @override
  _GetMealScreenState createState() => _GetMealScreenState();
}

class _GetMealScreenState extends State<GetMealScreen> {

  DatabaseReference itemRef5 = FirebaseDatabase.instance.reference().child("central");

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("Example"),
        ),
        resizeToAvoidBottomPadding: false,
        body: Column(
          children: <Widget>[
            Flexible(
              child: FirebaseAnimatedList(
                  query: itemRef5, // use this just for test
                  itemBuilder: (BuildContext context, DataSnapshot snapshot,
                      Animation<double> animation, int index) {

                    return Container(
                        child:
                        Column(
                          children: <Widget>[
                            Text(
                                snapshot.value.toString()
                            ),
                          ],
                        )
                    );
                  }
              ),
            ),
          ],
        )
    );
  }
}

我一直在尝试通过搜索和修改代码来解决这个问题,但一直失败..有什么解决方案吗?

感谢您的阅读。

【问题讨论】:

  • 万一 - 数据可以是英文的吗?这种方式真的很难调试。
  • @frunkad 抱歉,我刚刚用英文编辑了代码和图片。你能再检查一下吗?

标签: firebase flutter firebase-realtime-database


【解决方案1】:

Firebase RTDB 不支持匹配不等式或过滤掉空值的查询。它需要在前端显示端完成。但是在您的场景中,需要将确切的查询传递给FirebaseAnimatedList,这有点麻烦。

阅读文档,似乎没有一种简单的方法可以进一步过滤查询(也许检查 itemBuilder 并发送 null 可能有效 - 我还没有测试过)。

在任何一种情况下,最好的方法是首先确保您的数据不是以该格式构建的。一个简单的database rule 应该可以工作。

【讨论】:

    猜你喜欢
    • 2021-02-06
    • 2022-01-08
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    相关资源
    最近更新 更多