【发布时间】:2021-03-17 12:48:24
【问题描述】:
我在尝试将数据从 Firestore 存储到局部变量时遇到问题。
class AppUser {
String _userId;
Map<String, dynamic> _userData;
Future getUserDataFromDb() async {
_userData = await dbInterface.getFinancialsFromDB(_userId);
// dbInterface.getFinancialsFromDB(_userId).then((Map<String, dynamic> data) {
// _userData = data;
// });
print(_userData); // flutter: null
}
}
_userData 始终返回 null。
class Db {
CollectionReference financials = FirebaseFirestore.instance.collection('financials');
Future<Map<String, dynamic>> getFinancialsFromDB(userId) async {
financials.doc(userId).get().then((DocumentSnapshot documentSnapshot) {
if (documentSnapshot.exists) {
print(documentSnapshot.data()); // flutter: {'key1': 'data1', ...}
return documentSnapshot.data();
}
});
return null;
}
}
Db dbInterface = Db();
在“getFinancialsFromDB”函数中,它会打印正确的地图。所以问题不在于从 Firestore 中检索数据,而是将其存储在 _userData 变量中。
getUserDataFromDb() 在 initState 中调用。
有什么想法可以解决这个问题吗?如果您需要任何其他信息,请告诉我。
非常感谢,非常感谢任何帮助。
一切顺利,
亚历克斯
【问题讨论】:
标签: flutter asynchronous dart google-cloud-firestore