【发布时间】:2020-10-28 11:22:01
【问题描述】:
这张地图会记录谁点赞了帖子,谁没有点赞。该字符串存储用户 ID,该值是他是否支持该帖子的布尔值。我最初使用 Map
@override
void initState() {
super.initState();
Firestore.instance.collection('public').document('internship_experiences').collection('Experiences')
.document(widget.experience.documentid).get().then((value) async {
final uid = await Provider.of(context).auth.getCurrentUID();
if (value.data['saved'] == null
||value.data['upvotes'] == null || value.data['saved'][uid] == null || value.data['upvotes'][uid] == null) {
widget.experience.saved.putIfAbsent(uid, () => false);
widget.experience.upvotes.putIfAbsent(uid, () => false);
Firestore.instance.collection('public').document('internship_experiences').collection('Experiences')
.document(widget.experience.documentid).setData({
'saved': widget.experience.saved,
'upvotes': widget.experience.upvotes,
}, merge: true).then((_){
print("success at null!");
});
} else {
setState(() {
isSaved = value.data['saved'][uid]; //accessing value
isUpvoted = value.data['upvotes'][uid];
});
print('set state upon opening page');
}
});
}
class Experience {
String title;
String company;
String role;
String timePeriod;
String content;
String timestamp;
String username;
String profilePicture;
String documentid;
String ownerid;
Map<String, dynamic> saved = {};
Map<String, dynamic> upvotes = {};
Experience(
this.title,
this.timePeriod,
this.role,
this.content,
this.timestamp,
this.company,
this.username,
this.profilePicture,
this.documentid,
this.ownerid,
this.saved,
this.upvotes,
);
Experience.fromSnapshot(DocumentSnapshot snapshot) :
title = snapshot["title"],
content = snapshot['content'],
timestamp = snapshot['timestamp'],
role = snapshot['role'],
username = snapshot['username'],
profilePicture = snapshot['profilePicture'],
documentid = snapshot['documentid'],
timePeriod = snapshot['timePeriod'],
ownerid = snapshot['ownerid'],
company = snapshot['company'],
upvotes = snapshot['upvotes'],
saved = snapshot['saved'];
}
【问题讨论】:
-
请发布更多代码。特别是在地图初始化的地方。这通常与在初始化时没有指定正确的类型有关。
-
@SebastianK 嗨,我已经包含了 initState 和 Experience 类的代码。