在 Flutter 中报告错误的最佳实践

Hus*_*ell 7 firebase crashlytics flutter

我正在尝试在我的 Flutter 项目中使用firebase_crashlytics lib,问题是 Flutter 从不崩溃,我可以在代码中抛出异常,但 dart 中的所有异常都被视为非致命异常。这些将正常报告给控制台,但我希望 Flutter、本机和未处理的异常被视为致命异常。

我想要以下之一:

  • 当我遇到意外异常时使应用程序崩溃(关闭应用程序并显示“无响应”)
  • 向 firebase 控制台报告致命异常
  • 解决办法?

我的 main.dart 代码:

Future main() async {
  runZoned<Future<void>>(() async {
    await DotEnv().load('.env');
    setupNotifications();
    FlutterError.onError = Crashlytics.instance.recordFlutterError;
    runApp(MyApp());
  }, onError: Crashlytics.instance.recordError);
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试做的事情:

  • SystemChannels.platform.invokeMethod('SystemNavigator.pop'); 它有效,但不是真正的用户友好
  • 调用试图通过 使应用程序崩溃的 kotlin 函数MethodChannel无效。

我可能会做的事情:

  • 调用 atoast通知用户出现问题
  • 显示一个弹出窗口,通知用户出现问题并关闭应用程序
  • 只需关闭应用程序
  • 尝试加载应用程序主屏幕的初始状态

mFe*_*ein 0

您看到的行为是 Flutter 上 Crashlytics 的默认行为,至少目前是这样。如果您想退出您的应用程序,我可以推荐您以下选项:

  1. 导航到错误屏幕,使用 来显示一般错误消息Navigator.pushAndRemoveUntil()。然后,当用户单击OK或经过计时器后,您将退出应用程序。为了退出应用程序,您可以在本机端抛出异常,或者使用SystemChannels.platform.invokeMethod('SystemNavigator.pop');尽管您的应用程序可能会在应用程序商店中被阻止,因为苹果拒绝以编程方式退出。

  2. 请小心设置一个错误屏幕,并提供友好的错误消息,为每个可能的错误做好准备,这样用户就不必退出应用程序。