【发布时间】:2026-02-03 19:10:01
【问题描述】:
EventDetails 类的代码
class EventDetails {
EventDetails(
{
required this.description,
required this.date,
required this.startTime,
required this.endTime,
required this.speaker,
required this.isFavorite});
String description;
String date;
String startTime;
String endTime;
String speaker;
String isFavorite;}
网络类代码
class Network {
static Future<List<EventDetails>> getEvents() async {
Firebase.initializeApp();
FirebaseFirestore instance = FirebaseFirestore.instance;
var data = await instance.collection('event_details').get();
return makeEvents(data.docs);
}
static List<EventDetails> makeEvents(List<dynamic> collection) {
List<EventDetails> events = [];
collection.forEach((event) {
print('++++++++++++++==========');
print(event['description']);
print(event['date']);
print(event['start_time']);
print(event['end_time']);
print(event['speaker']);
print(event['is_favorite']);
events.add(
EventDetails(
description: event['description'],
date: event['date'],
startTime: event['start_time'],
endTime: event['end_time'],
speaker: event['speaker'],
isFavorite: event['is_favorite'],
),
);
});
print('--------');
print(events.length);
return events;
}
}
在上面的代码中,我试图在 getEvents 函数中从 cloud firestore 获取数据,并通过 makeEvents 函数转换为 EventDetails 来返回数据。问题出在我的 makeEvents 函数中,我在整个数据上设置了 forEach,首先我打印整个数据,然后添加到事件详细信息列表中,但在第一次迭代中打印了数据,但之后没有任何反应,并且列表或列表长度没有更新
我的构建方法
@override
Widget build(BuildContext context) {
return FutureBuilder<List<EventDetails>>(
future: Network.getEvents(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data!.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(snapshot.data![index].description),
);
});
}
return const Center(
child: CircularProgressIndicator(),
);
},
);
}
我的收藏结构
【问题讨论】:
-
分享你的收藏结构
-
问题已更新
-
分享代码,而不是图片。
-
我只是从 Gui 手动添加数据
-
在makeEvents中打印集合并查看结果
标签: list flutter google-cloud-firestore flutter-futurebuilder