Flutter 报错最佳实践

Best practice to report errors in Flutter

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

我想要以下其中一项:

我的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);
}

我已经尝试过的事情:

我可能会做的事情:

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

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

  2. 注意错误屏幕,带有友好的错误消息,为每个可能的错误做好准备,这样用户就不必退出应用程序。