当用户登录时,我正在尝试从Firestore加载一些数据,并且需要等待数据加载完成后才能继续。但是,我的等待结果的操作似乎不起作用。
Future<bool> userListener() async {
_auth.onAuthStateChanged.listen((firebaseUser) {
bool isDone = false;
if (firebaseUser != null) {
isDone = await loadUserData(firebaseUser); // This line is killing me!!
return isDone;
} else {
return false;
}
}, onError: (error) {
print('error in UserListener: $error');
});
}
Future<bool> loadUserData(FirebaseUser user) async {
Firestore database = Firestore();
DocumentReference data = database.collection('userData').document(user.uid);
try {
DocumentSnapshot myQuery = await data.get();
theNumber = myQuery.data['theNumber'];
return true;
} on PlatformException catch (e) {
print(e);
return false;
}
}
我在这行代码中遇到了一个错误:
isDone = await loadUserData(firebaseUser);
“await”表达式只能在异步函数中使用。
我不确定这些函数如何变得更加异步。而且,如果我不添加“await”,则会告诉我将Future分配给bool是不可能的,这很合理,并提示我的函数实际上是异步的。
为什么我不能等待我的“loadUserData”函数的结果呢?