【发布时间】: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