Aug*_*ski 5 asynchronous dart flutter google-cloud-firestore
我试图在用户登录时从 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;
}
}
Run Code Online (Sandbox Code Playgroud)
我从行中得到一个可爱的错误:
isDone = await loadUserData(firebaseUser);
Run Code Online (Sandbox Code Playgroud)
“等待表达式只能用于异步函数”。
我不确定这些函数如何变得更加异步。此外,如果我不添加,await那么我会被告知不能将 Future 分配给 bool,这是完全有道理的,并向我建议我的函数实际上是异步的。
为什么我不能等待我的loadUserData函数的结果?
小智 6
该行的主要函数是传递给 onAuthStateChanged 的监听。这个函数也应该是异步的,如下所示
_auth.onAuthStateChanged.listen((firebaseUser) async{
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3622 次 |
| 最近记录: |