如何在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 Auth 获取用户 ID?