我有以下方法:
getCalendarEventList() async {
print('here we go agsain');
await Firestore.instance.collection('availableDates').where('bandId', isEqualTo: identifier).snapshots().listen(
(data) => data.documents.forEach((doc) => _markedDateMap.add(
doc['availableDates'].toDate(),
Event(
date:doc['availableDates'].toDate(),
title: 'hello',
icon: _presentIcon(doc['availableDates'].toDate().day.toString())))));
setState(() {});
}
firebase
查询包含isEqualTo: identifier
作为条件。 Identifier
是一个String
,实际上是用户的Firebase uid
。在initState()
中调用了getCalendarEventList():因为我希望在calendar中填充标记
@override
void initState() {
super.initState();
getCalendarEventList();
}
我有一个方法:得到firebase
uid
:
Future<String> inputData() async {
final FirebaseUser user = await FirebaseAuth.instance.currentUser();
final String uid = user.uid.toString();
return uid;
}
我已经将identifier = await inputData();
放在getCalendarEventList()
中,并将9/10倍的标记填充到日历中。(来自initState()
)所以有点“笨拙” ..我认为这与从Firebase调用uid有关。我应该在哪里/如何用identifier
初始化变量firebase uid
?
答案 0 :(得分:1)
您可以做的是调用标识符,然后完成该操作,然后可以调用getCalenderEvents()
。
await FirebaseAuth.instance.currentUser().then((user) {
Firestore.instance.collection('availableDates').where('bandId', isEqualTo: user.uid).snapshots().listen(
(data) => data.documents.forEach((doc) => _markedDateMap.add(
doc['availableDates'].toDate(),
Event(
date:doc['availableDates'].toDate(),
title: 'hello',
icon: _presentIcon(doc['availableDates'].toDate().day.toString())))));
setState(() {});
}).catchError((onError){
handleError();
});
或
await FirebaseAuth.instance.currentUser().then((user) {
setState(() {
identifier = user.uid;
});
getCalenderEvents();
}).catchError((onError){
handleError();
});