如何在Flutter / Dart中捕获platformException?

时间:2019-05-10 15:37:48

标签: android flutter

我得到

发生异常。 PlatformException(PlatformException(sign_in_canceled, com.google.android.gms.common.api.ApiException:12501:,null))

每当我尝试取消在我的应用中弹出的google登录时。

要复制:

在应用程序中,当按下Google登录按钮时,会显示google登录页面,其中包含所有可供选择的Gmail帐户以进行登录或注册。

触摸弹出窗口的外部区域以取消登录,然后关闭弹出窗口。

此后,代码中出现平台异常:

发生异常。 PlatformException(PlatformException(sign_in_canceled, com.google.android.gms.common.api.ApiException:12501:,null))

现在登录按钮不起作用,应用程序崩溃了,

尝试尝试/捕获-不起作用

2 个答案:

答案 0 :(得分:1)

try {
  final res = await _auth.signInWithEmailAndPassword(
      email: email, password: password);
  if (res != null) loggedUser = res.user;
} on PlatformException catch (err) {
  // Handle err
} catch (err) {
  // other types of Exceptions
}

答案 1 :(得分:0)

我最近也遇到了此错误,并且我发现在调试模式下(即单击VSCode中的.catchError()按钮时)未调用Run->Start Debugging回调。

但是,当您输入flutter run -d时,.catchError()方法将被回调,因为它不在调试模式下。

要获取您首选的模拟器代码,请将以下代码行粘贴到终端中:

instruments -s devices

如果这不起作用,您还可以尝试粘贴以下内容:

xcrun simctl list

将像以前一样调用.catchError()方法,并且其中的代码将按预期执行!

此外,该应用程序不会再因PlatformException()而崩溃,而是会显示如下日志:

[VERBOSE-2:ui_dart_state.cc(157)] Unhandled Exception: NoSuchMethodError: The getter 'uid' was called on null.
Receiver: null

我也曾在Google登录中遇到过此问题,其中没有调用.catchError()

最后,如果您在处理Firebase身份验证时遇到一些错误,则应首先尝试首先通过终端运行。谢谢,我希望这会有所帮助并信任我,它应该对您有用!