【问题标题】:Flutter: Crashlytics Plugin throwing Bad State error on crashFlutter:Crashlytics 插件在崩溃时抛出 Bad State 错误
【发布时间】:2020-11-07 10:36:08
【问题描述】:

我已按照https://pub.dev/packages/firebase_crashlytics 上的步骤安装插件。但是,当我使用 Crashlytics.instance.crash(); 强制崩溃时,我收到以下错误:

════════ Exception caught by gesture ═══════════════════════════════════════════════════════════════
The following StateError was thrown while handling a gesture:
Bad state: Error thrown by Crashlytics plugin

When the exception was thrown, this was the stack: 
#0      Crashlytics.crash (package:firebase_crashlytics/src/firebase_crashlytics.dart:54:5)
#1      _ProfileScreenState.build.<anonymous closure> (package:genchi_app/screens/profile_screen.dart:93:44)
#2      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:779:19)
#3      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:862:36)
#4      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)

为什么它没有捕捉到错误并显示以下内容?

flutter: Flutter error caught by Crashlytics plugin:

编辑:

Android 崩溃会发送到控制台,但 iOS 不会。 android 或 iOS 都没有显示 Crashlytics 插件在开发过程中捕获了错误。

【问题讨论】:

  • 你能把代码贴在你正在执行强制崩溃的地方吗?
  • 只需在平面按钮内onPressed: () { Crashlytics.instance.crash(); }

标签: firebase flutter dart crashlytics


【解决方案1】:

嗯,我知道你的问题了。

您得到的正是您在代码中所做的。我检查了firebase_crashLytics.dart line 54(见下面的代码)

void crash() {
    throw StateError('Error thrown by Crashlytics plugin');
  }

所以你调用的 crash 函数会抛出错误,因为它是为了抛出错误。

【讨论】:

  • 我明白了。但是为什么我没有收到文字:flutter: Flutter error caught by Crashlytics plugin: // OR if you use recordError for runZoned: flutter: Error caught by Crashlytics plugin &lt;recordError&gt;: // Exception, context, information, and stack trace in debug mode // OR if not in debug mode: flutter: Error reported to Crashlytics.
  • 看来我的 android 崩溃仍然在仪表板上显示为“非致命”。但是,没有提交任何 iOS 版本。
  • 这与您提出的问题不同。您可以将其作为新的发布。
  • 无论如何,为什么上面的文字没有出现在控制台中?如果崩溃被捕获,那应该会发生。
  • 我已经完全复制了软件包安装说明中的内容。
【解决方案2】:

Flutter 似乎在调试模式下捕获了很多错误,并在控制台上打印它们而不重新抛出它们。所以在这种情况下不会调用方法FlutterError.onError

我按照here 的建议禁用了“Flutter Structured Errors”功能解决了这个问题。

对于 VS Code,我刚刚在 .vscode/settings.json 中添加了以下行:

"dart.flutterStructuredErrors": false

【讨论】:

    猜你喜欢
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-03
    • 1970-01-01
    • 2015-01-04
    • 2022-07-27
    • 2023-03-04
    相关资源
    最近更新 更多