我是 Flutter 的新手,我想從 Firebase 獲取一次資料,但是當我在 setState 中使用 foreach 時,它會產生無限回圈。我嘗試了 initState,但我無法用 Future 解決這個問題。
這是我的代碼:
class _AnasayfaScreenState extends State<AnasayfaScreen> {
final databaseRef = FirebaseDatabase.instance.reference();
ActivityModel activity = ActivityModel();
List<Map<dynamic, dynamic>> lists = [];
}
Future getActivity() async {
return await databaseRef
.child('activities')
.limitToLast(3)
.once()
.then((DataSnapshot dataSnapshot) {
setState(() {
Map<dynamic, dynamic> values = dataSnapshot.value;
lists.clear();
values.forEach((key, values) {
lists.add(values);
});
});
});
}
@override
Widget build(BuildContext context) {
getActivity();
return Scaffold(
appBar: AppBar(
// some stuff
title: Text("Title: " lists[index]["title"] "\nDate: " lists[index]["date"] "\nN: Number of people" lists[index]["maxPeople"] "\nActivity Owner: " lists[index]["ownername"]),
任何幫助對我來說都很棒,謝謝。
uj5u.com熱心網友回復:
這是您可以執行的操作的一個非常基本的示例:
class _AnasayfaScreenState extends State<AnasayfaScreen> {
final databaseRef = FirebaseDatabase.instance.reference();
ActivityModel activity = ActivityModel();
bool isLoading = true;
List<Map<dynamic, dynamic>> lists = [];
@override
void initState(){
super.initState();
getActivity();
}
Future getActivity() async {
await databaseRef
.child('activities')
.limitToLast(3)
.once()
.then((DataSnapshot dataSnapshot) {
Map<dynamic, dynamic> values = dataSnapshot.value;
lists.clear();
values.forEach((key, values) {
lists.add(values);
});
});
setState(() {
isLoading = false;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: isLoading ? Container() // Add your widget and work here instead of Container
: CircularProgressIndicator(),
);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477910.html
標籤:火力基地 扑 镖 firebase-实时数据库
