如何捕获 Flutter Google 登录 PlatformException?

Posted

技术标签:

【中文标题】如何捕获 Flutter Google 登录 PlatformException?【英文标题】:How do I catch Flutter Google sign-in PlatformException? 【发布时间】:2017-11-28 03:09:41 【问题描述】:

按照出色的 Firebase Flutter 教程,我正在尝试将 Google 登录功能整合到我的应用中。

流程:如果未登录,用户将始终到达登录页面(通过检查MaterialApponGenerateRoute),然后用户按下登录按钮并重定向到 Google 登录流程。但是,如果用户中途取消流程,我想返回登录页面,迫使她再次按下按钮。

由于某种原因,我未能捕获 PlatformException(您可以在调试器中看到它,并且应用程序挂在模拟器中):

我正在使用的代码:

  Future<bool> logIn() async 
    print('Login::logIn()');
    bool loggedIn = await logInSilently();
    print('Login::logIn() - silent login returned $loggedIn');
    if (loggedIn == false) 
      try 
        await googleSignIn.signIn();
       catch (e) 
        print('Login::logIn() - interactive login failed: $e');
        return false;
      
    
    return true;
  

catch 块内的print 语句永远不会被打印,并且应用程序挂起。在发布问题之前,我已升级颤振并重新测试 - 问题仍然存在。

(澄清一下:“幸福路径”——即用户成功通过 Google 登录流程——有效。)

【问题讨论】:

我在 google 登录 3.0.4 时遇到同样的问题 找到任何解决方案了吗? 【参考方案1】:

我相信这是fixed 中的google_sign_in version 0.2.1。

尝试将 google_sign_in 依赖项更改为 pubspec.yaml^0.2.1,看看是否有帮助。

【讨论】:

我在 google 登录 3.0.4 时遇到了同样的问题。所以我不相信它是固定的

以上是关于如何捕获 Flutter Google 登录 PlatformException?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Flutter,如何在单独的登录页面小部件中显示在 AuthService 类中捕获的 Firebase Auth 错误消息?

flutter firebase google登录以及如何从多个类访问

如何在 Flutter 中使用 rest api 不使用 firebase 以 google 或 facebook 登录

Flutter google 登录 保持登录状态

Flutter Authentication 从登录屏幕到登录屏幕使用 Google 登录和注销

Flutter multidex 问题与 FirebaseAuth 、 Firestore 和 Google 登录