Flutter使用google sign_in登录,选账号后白屏无响应问题
Flutter谷歌登录空白加载页残留问题修复方案
核心问题原因
- 现有代码混用
async/await和.then()回调,没有做空值判断和异常捕获,登录过程中出现空异常或流程中断时,没有主动关闭谷歌登录的Web视图,导致页面残留 - 没有处理用户取消登录的场景,当用户中途退出登录流程时,
signIn()返回值为null,直接调用data.authHeaders会触发崩溃,导致视图无法正常销毁
修复后代码
import 'package:google_sign_in/google_sign_in.dart'; void sendingTestEmail() async { try { final GoogleSignInAccount? signInAccount = await googleSignIn.signIn(); // 处理用户取消登录的情况 if (signInAccount == null) { return; } // 正常获取鉴权头 final Map<String, String> authHeaders = await signInAccount.authHeaders; // 此处添加你自己的业务逻辑,比如接口请求、页面跳转等 } catch (err) { // 捕获所有登录异常,避免流程卡死 print("谷歌登录异常: $err"); // 异常时主动退出登录,清理残留视图 await googleSignIn.signOut(); } }
额外排查项
如果修改代码后问题仍然存在,按以下顺序排查:
- 确认安卓端
google-services.json、iOS端GoogleService-Info.plist配置文件放置路径正确,对应包名、签名证书SHA1值和谷歌云控制台配置完全一致 - 确认谷歌云控制台的OAuth同意屏幕已经完成发布,测试阶段仅允许列表内的测试账号登录,非测试账号登录会卡在验证页
- 升级
google_sign_in依赖到官方最新稳定版本,避免版本兼容问题
内容的提问来源于stack exchange,提问作者Jaczura Zoltán
相关产品推荐
相关产品推荐

