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

Flutter中Google Sign In取消触发的函数及处理方案咨询

处理Flutter中Google Sign In的取消流程

当用户在Google登录流程中点击取消时,google_sign_in包会抛出**PlatformException**,其中错误码为sign_in_canceled,这就是你需要捕获的取消触发信号。

具体处理方式

你可以通过try-catch块包裹登录方法,精准捕获取消场景并执行对应逻辑(比如关闭加载弹窗、显示提示消息):

import 'package:google_sign_in/google_sign_in.dart';
import 'package:flutter/services.dart';

final GoogleSignIn _googleSignIn = GoogleSignIn();

Future<void> handleGoogleSignIn() async {
  // 显示加载界面(比如showDialog或者更新状态)
  
  try {
    final GoogleSignInAccount? userAccount = await _googleSignIn.signIn();
    
    if (userAccount != null) {
      // 登录成功:获取用户信息、完成后续认证流程
      print('登录成功,用户:${userAccount.displayName}');
    }
  } on PlatformException catch (e) {
    if (e.code == 'sign_in_canceled') {
      // 用户取消登录:关闭加载、显示提示
      print('用户取消了Google登录');
      // 示例:关闭加载弹窗(如果之前打开了的话)
      // Navigator.of(context).pop();
      // 或者显示Toast:FlutterToast.showToast(msg: '已取消登录');
    } else {
      // 处理其他登录错误(比如网络问题、登录失败)
      print('登录出错:${e.message}');
    }
  } catch (e) {
    // 兜底处理其他异常
    print('登录异常:$e');
  } finally {
    // 无论成功/失败/取消,都可以在这里统一关闭加载界面
    // Navigator.of(context).pop();
  }
}

补充说明

除了sign_in_canceled,google_sign_in还可能返回其他错误码,比如:

  • network_error:网络连接异常导致登录失败
  • sign_in_failed:其他登录失败场景

但用户主动取消的场景只会触发sign_in_canceled这个错误码,你只需要针对这个code做处理即可。

内容的提问来源于stack exchange,提问作者Mikelenjilo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:57:11