报告Flutter错误的最佳做法

问题描述 投票:5回答:1

我正在尝试在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);
}

我已经尝试做的事情:

  • SystemChannels.platform.invokeMethod('SystemNavigator.pop');可行,但实际上并不友好
  • 调用通过MethodChannel试图使应用程序崩溃的kotlin函数无效,

我可能会做的事情:

  • 呼叫toast通知用户出现问题
  • 显示一个弹出窗口,通知用户出现问题并关闭应用程序
  • 只需关闭应用程序
  • 尝试加载应用程序主屏幕的初始状态
firebase flutter crashlytics
1个回答
0
投票

至少现在,您所看到的行为是Flutter上Crashlytics的默认行为。如果您想退出您的应用,我可以向您推荐以下选项:

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

  2. 请谨慎操作,并带有友好的错误消息,为每个可能的错误做好准备,因此用户不必退出应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.