【问题标题】:How to fetch data from firebase realtime database in flutter?如何在flutter中从firebase实时数据库中获取数据?
【发布时间】: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 谢谢你的回复,我会努力的,谢谢大家,我知道我的代码有什么问题,我会接受它作为答案。

标签: firebase flutter firebase-realtime-database


【解决方案1】:

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

List<Workshop> worskshopList = [];

但对我有用的是

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

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

workshopList[index].workshopName

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

现在对我有用的是

workshopList[index]["workshopname"]

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

【讨论】:

    猜你喜欢
    • 2021-03-04
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    • 2019-04-13
    • 2019-01-17
    • 1970-01-01
    相关资源
    最近更新 更多