我正在尝试在Flutter应用程序中实现Google登录,但是没有捕获到我尝试捕获的所有异常。我不知道为什么我尝试过各种冰毒来捕捉它们,但是什么也没发现。
这是我的代码:
Future signInWithGoogle() async {
GoogleSignInAccount googleSignInAccount;
try {
googleSignInAccount = await googleSignIn.signIn().then((res) {
print("success");
return null;
}, onError: (e) {
print("${e.toString()}");
return null;
});
} catch (err) {
print("${err.toString()}");
}
final GoogleSignInAuthentication googleSignInAuthentication =
await googleSignInAccount.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleSignInAuthentication.accessToken,
idToken: googleSignInAuthentication.idToken,
);
final AuthResult authResult = await _auth.signInWithCredential(credential);
final FirebaseUser user = authResult.user;
assert(!user.isAnonymous);
assert(await user.getIdToken() != null);
final FirebaseUser currentUser = await _auth.currentUser();
assert(user.uid == currentUser.uid);
return 'signInWithGoogle succeeded: $user';
}
总是在第googleSignInAccount = await googleSignIn.signIn()
行上抛出异常
如您所见,我尝试以多种方式捕获异常,但它们均未真正起作用。
答案 0 :(得分:0)
我发现您的示例代码及其.then
调用有问题...
googleSignInAccount = await googleSignIn.signIn().then((res) {
print("success");
return null;
}, onError: (e) {
print("${e.toString()}");
return null;
});
您不能同时执行await
和.then
两者之一。为了使try / catch起作用,请删除.then
try {
googleSignInAccount = await googleSignIn.signIn();
} catch(err) {
...
}