flutter - 无法在 GoogleSignIn 中捕获 Flutter 异常
问题描述
我正在尝试在 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()
如您所见,我尝试以多种方式捕获异常,但它们都没有真正起作用。
解决方案
我发现您的示例代码及其.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) {
...
}
推荐阅读
- here-api - HERE API 自动建议不为查询 3 个字符长返回任何数据
- powershell - 运行两个进程并等待它们在 powershell 中完成
- javascript - 切换菜单图标在第一次点击之前不显示(wordpress)
- javascript - 如何使用 angularjs 过滤器和 ng-options 在选择中使某些选项变粗
- javascript - 从 javascript 函数中传递数据标志的问题
- hibernate - 如何将此 SQL 转换为 Grails Gorm 条件查询
- python - QNetworkAccessManager 保存 cookie 不起作用?
- javascript - 我如何在函数反应 js 中转到另一个页面
- javascript - Vue.js 导出默认对象范围
- java - 将时间戳日期转换为 unix 时间戳