Google登录后重启应用无法获取currentUser数据问题求助
解决GoogleSignIn重启应用后currentUser为null的问题
核心问题
你每次调用GoogleSignIn()都会创建一个全新的实例,而用户的登录状态是绑定在首次登录时使用的那个实例上的。新实例无法读取到之前实例保存的登录会话,导致currentUser返回null。
解决方案
1. 复用同一个GoogleSignIn实例(推荐)
在应用全局或顶层位置创建一个单例实例,整个应用中统一使用这个实例处理登录、状态检查和用户信息获取:
// 全局单例,放在App入口或单独的工具类中 final GoogleSignIn googleSignIn = GoogleSignIn(); // 登录逻辑 try { await googleSignIn.signIn(); } on Exception catch (e) { print(e); } // 重启应用后检查登录状态 bool isSignedIn = await googleSignIn.isSignedIn(); if (isSignedIn) { isLogin = true; // 正常获取用户数据 GoogleSignInAccount? user = googleSignIn.currentUser; String? userId = user?.id; print(userId); }
2. 静默登录获取用户信息(备选)
如果无法复用实例,可在确认已登录后调用signInSilently()重新获取用户会话:
await GoogleSignIn().isSignedIn().then((value) async { if (value) { isLogin = true; // 静默登录恢复会话 GoogleSignInAccount? user = await GoogleSignIn().signInSilently(); String? userId = user?.id; print(userId); } });
注意:此方法会触发网络请求,不如复用实例高效。
内容的提问来源于stack exchange,提问作者Esraa Hamada
相关产品推荐
相关产品推荐

