You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Firebase Google登录时用户未选择账号无响应问题求助

Flutter Firebase Google登录时用户未选择账号无响应问题求助

我太懂这种卡壳的糟心感了!之前做Flutter Firebase Google登录时也踩过一模一样的坑——用户点开账号选择弹窗后,要是按返回键关掉弹窗,GoogleSignIn().signIn()就像“隐身”了一样,完全没反馈,整个流程僵住不动。

其实问题根源很简单:当用户主动关闭账号选择弹窗时,GoogleSignIn().signIn()不会抛出异常,而是直接返回null,但你的代码里完全没处理这个null场景,导致后续逻辑根本没触发,自然就出现了“无响应”的假象。

给你调整后的代码,重点补上了用户取消登录的处理逻辑:

Future<String> signInWithGoogle() async {
  String res = "Something went wrong";

  // 触发登录流程
  final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();

  // 新增:处理用户取消登录的核心逻辑
  if (googleUser == null) {
    return "用户取消登录";
  }

  // 获取登录认证信息
  final GoogleSignInAuthentication? googleAuth = await googleUser.authentication;

  // 创建登录凭证
  final credential = GoogleAuthProvider.credential(
    accessToken: googleAuth?.accessToken,
    idToken: googleAuth?.idToken,
  );

  if (credential == null) {
    return "获取登录凭证失败";
  }

  try {
    UserCredential cred = await _auth.signInWithCredential(credential);
    res = "Success";
  } catch (err) {
    res = err.toString();
    print(err);
  }

  return res;
}

几个关键改进点:

  • 在拿到googleUser的第一时间判断是否为null,一旦确认是用户取消登录,直接返回明确提示,让调用方可以立刻给用户反馈(比如弹出“已取消Google登录”的提示)
  • 顺手修正了代码里的拼写错误(worng→wrong、模糊的some thing→明确的“获取登录凭证失败”),让返回信息更清晰

这样修改后,不管用户是完成登录还是中途取消,你的方法都会给出明确的结果,再也不会出现无响应的情况啦!

备注:内容来源于stack exchange,提问作者love Life

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 13:10:29