我在Firebase中有一个集合,我试图检索并添加到列表中:
我还定义了一个事件模型。在将事件添加到列表之前,我想使用从Firebase读取的数据创建一个Event对象。
事件模型:
class Event {
String eid;
String title;
String location;
String start;
String end;
String instructor;
String image;
String description;
Event({
required this.eid,
required this.title,
required this.location,
required this.start,
required this.end,
required this.instructor,
required this.image,
required this.description
});
String getEid() {
return eid;
}
String getTitle() {
return title;
}
String getLocation() {
return location;
}
String getStart() {
return start;
}
String getEnd() {
return end;
}
String getInstructor() {
return instructor;
}
String getImage() {
return image;
}
String getDescription() {
return description;
}
void setEid(String eid) {
this.eid = eid;
}
void setTitle(String title) {
this.title = title;
}
void setLocation(String location) {
this.location = location;
}
void setStart(String start) {
this.start = start;
}
void setEnd(String end) {
this.end = end;
}
void setInstructor(String instructor) {
this.instructor = instructor;
}
void setImage(String image) {
this.image = image;
}
void setDescription(String description) {
this.description = description;
}
}
这是我目前所拥有的。我正在创建Event对象列表,然后尝试获取整个集合,对于集合中的每个文档,我正在创建Event对象并尝试将其添加到列表中。我不确定这是否正确。
List<Event> _events = [];
Future<UserProfile> getUserProfile() async {
try {
final FirebaseAuth auth = FirebaseAuth.instance;
final snapshot = await FirebaseFirestore.instance.collection('events').get();
snapshot.docs.forEach((doc) {
Map<String, dynamic>? data = snapshot.data();
Event event = Event(
eid: data?['eid'],
title: data?['title'],
...
});
1条答案
按热度按时间lbsnaicq1#
一个更好的方法是将
Map<String, dynamic>
转换为Event
类对象,应该使用Event
类的factory
构造函数,并为每个属性设置默认值,这样,如果某个属性为空,您的应用程序不会崩溃,它将具有默认值并正常工作,如下所示:将以下代码添加到您的
Event
类:则不必实现您的方法,而是使用以下代码来避免样板代码: