停用Flutter的“死亡的红色屏幕”

时间:2018-12-23 13:16:17

标签: error-handling dart flutter

有没有办法禁用Flutter的“红色死亡屏幕”? 我不介意在调试过程中使用它,但是它似乎也出现在生产版本中-而且我找不到有关如何禁用它或自己捕获错误的任何信息。

我尝试使用FlutterError.onErrorrunZoned(onError)捕获流浪错误,但是都没有阻止红屏出现。

作为参考,我正在谈论此屏幕:

rsod

3 个答案:

答案 0 :(得分:0)

您可以重写ErrorWidget.builder方法。

・示例代码。
ErrorWidgetBuilder.builder = (FlutterErrorDetails details) => Container();

・默认代码
ErrorWidgetBuilder.builder = (FlutterErrorDetails details) => ErrorWidget(details.exception);

希望它能为您提供帮助。

答案 1 :(得分:0)

您可以尝试使用Catcher,这是一个免费的flutter插件,可以捕获和处理Flutter应用程序中的错误。 Catcher提供了多种报告模式和处理程序,可与Flutter应用程序配合使用

只需在您的pubspec.yaml中添加捕手

麦田守望者》:^ 0.1.2

有关捕手的更多信息 https://pub.dartlang.org/packages/catcher

答案 2 :(得分:0)

void main() {
 bool isDev = true;
          ErrorWidget.builder = (FlutterErrorDetails errorDetails) {
            return AppErrorWidget(
              errorDetails: errorDetails,
              isDev: isDev,
            );
          };
}          

    class AppErrorWidget extends StatelessWidget {
      final FlutterErrorDetails errorDetails;
      final bool isDev;
      const AppErrorWidget({
        Key key,
        @required this.errorDetails,
        this.isDev = false,
      }) : super(key: key);
      @override
      Widget build(BuildContext context) {
        return Material(
          child: SafeArea(
            child: Container(
              decoration: BoxDecoration(border: Border.all(color: Colors.red)),
              child: ListView(
                children: <Widget>[
                  Container(
                    height: 20,
                  ),
                  Text(isDev ? errorDetails.toString() : '')
                ],
              ),
            ),
          ),
        );
      }
    }