Flutter 报错最佳实践
Best practice to report errors in Flutter
我正在尝试在我的 Flutter 项目中使用 firebase_crashlytics lib,问题是 Flutter 永远不会崩溃,我可以在代码中抛出异常,但 dart 中的所有异常都被认为是非致命异常。这些将正常报告给控制台,但我希望将 Flutter、本机和未处理的异常视为致命异常。
我想要以下其中一项:
- 出现意外异常时使应用程序崩溃(使用 "not responding" 关闭应用程序)
- 向 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');
可以,但不是很友好
- 调用 kotlin 函数试图通过
MethodChannel
使应用程序崩溃,但没有成功。
我可能会做的事情:
- 调用
toast
通知用户出现问题
- 显示一个弹出窗口,通知用户出现问题并关闭应用程序
- 只需关闭应用程序
- 尝试加载应用程序主屏幕的初始状态
您看到的行为是 Crashlytics 在 Flutter 上的默认行为,至少目前是这样。如果您想退出您的应用程序,我可以向您推荐以下选项:
导航到错误屏幕,使用 Navigator.pushAndRemoveUntil()
显示一般错误消息。然后当用户单击 OK
或在计时器后,您退出应用程序。为了退出应用程序,您可以在本机端抛出异常或使用 SystemChannels.platform.invokeMethod('SystemNavigator.pop');
尽管您的应用程序可能会在 App Store 中被阻止,因为 Apple 拒绝以编程方式退出。
注意错误屏幕,带有友好的错误消息,为每个可能的错误做好准备,这样用户就不必退出应用程序。
我正在尝试在我的 Flutter 项目中使用 firebase_crashlytics lib,问题是 Flutter 永远不会崩溃,我可以在代码中抛出异常,但 dart 中的所有异常都被认为是非致命异常。这些将正常报告给控制台,但我希望将 Flutter、本机和未处理的异常视为致命异常。
我想要以下其中一项:
- 出现意外异常时使应用程序崩溃(使用 "not responding" 关闭应用程序)
- 向 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');
可以,但不是很友好- 调用 kotlin 函数试图通过
MethodChannel
使应用程序崩溃,但没有成功。
我可能会做的事情:
- 调用
toast
通知用户出现问题 - 显示一个弹出窗口,通知用户出现问题并关闭应用程序
- 只需关闭应用程序
- 尝试加载应用程序主屏幕的初始状态
您看到的行为是 Crashlytics 在 Flutter 上的默认行为,至少目前是这样。如果您想退出您的应用程序,我可以向您推荐以下选项:
导航到错误屏幕,使用
Navigator.pushAndRemoveUntil()
显示一般错误消息。然后当用户单击OK
或在计时器后,您退出应用程序。为了退出应用程序,您可以在本机端抛出异常或使用SystemChannels.platform.invokeMethod('SystemNavigator.pop');
尽管您的应用程序可能会在 App Store 中被阻止,因为 Apple 拒绝以编程方式退出。注意错误屏幕,带有友好的错误消息,为每个可能的错误做好准备,这样用户就不必退出应用程序。