如何在flutter中从firebase实时数据库中获取数据?

Posted

技术标签:

【中文标题】如何在flutter中从firebase实时数据库中获取数据?【英文标题】:How to fetch data from firebase realtime database in flutter? 【发布时间】:2021-04-08 18:45:19 【问题描述】:

我正在 Flutter 中构建一个应用,其中的数据存储在 Firebase 实时数据库中。我想在我的应用中获取这些数据。

现在,由于几个月前进行的重大更改,我无法找到可能有帮助的新文章或视频,但我找到的都是旧的,所以如果有人可以帮助我吗?

列表变量

final dbRef = FirebaseDatabase.instance.reference().child("workshops");

现在显示我正在尝试这样的数据

return FutureBuilder(
      future: dbRef.once(),
      builder: (context,AsyncSnapshot<DataSnapshot> snapshot)
        if(snapshot.hasData)
          workshopList.clear();
          Map<dynamic, dynamic> values = snapshot.data.value;
          values.forEach((key,values)
            workshopList.add(values);
          );
        
        return ListView.builder(
          shrinkWrap: true,
          itemCount: workshopList.length,
          itemBuilder: (BuildContext context, index)
            return Card(
              child: Center(
                child: Column(
                  children: [
                    Text("name "+ workshopList[index].workshopName)
                  ],
                ),
              ),
            );
          ,
        );
      
      
    );

【问题讨论】:

你在做什么 网上有大量文档向您展示如何使用更新后的 firebase rtdb 和 Flutter。你在这里也做错了很多事情。每次小部件重建时都会调用您的 FutureBuilder,而不是只调用一次。您的 ListView.builder 不会懒惰地构建每个项目,因为 shrinkWrap 是真的。懒惰地构建意味着您只在小部件必须显示在屏幕上时才构建它。使用 shrinkWrap,您可以一次构建所有内容。删除 shrinkWrap 并用扩展包装 Listview 这里的文档是最新的,有任何更改:firebase.flutter.dev/docs/overview @Uni 谢谢你的回复,我会努力的,谢谢大家,我知道我的代码有什么问题,我会接受它作为答案。 【参考方案1】:

为了声明列表我正在这样做

List<Workshop> worskshopList = [];

但对我有用的是

List<Map<dynamic,dynamic>> workshopList = [];

现在显示我正在使用的数据

workshopList[index].workshopName

现在的问题是我没有引用数据库的工作室名称,而是我的模型类的工作室名称,所以我无处可去。

现在对我有用的是

workshopList[index]["workshopname"]

现在从旧列表中我不能像 list[index][""] 一样使用它会给出一个错误,例如 "[]" is not defined for the list。

【讨论】:

以上是关于如何在flutter中从firebase实时数据库中获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter 中从 Firebase 实时数据库读取和存储数据

在 Flutter 的下拉列表中从 Firebase 获取经过身份验证的用户列表

如何在flutter中从firebase获取数据

如何在 Flutter 中从 Firebase Auth 获取用户 ID?

如何在 Flutter 中从 firebase 存储读取和写入文本文件?

如何在 Flutter 中从 Firebase 获取当前用户 ID