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
相关产品推荐
相关产品推荐

