显示用户友好的错误页面,而不是Flutter中的异常

Spe*_*ion 19 dart flutter

是否可以进行全局错误处理,以显示用户友好的错误页面,而不显示红色异常

我已经进行了错误处理(在此处),该错误处理将向后端报告异常,但是我真正想要实现的是隐藏红色异常并显示一些更怪异的东西。

我到处搜寻,却一无所获。很抱歉,我不显示任何代码,因为我不知道如何启动。

Spe*_*ion 15

文档中隐藏了一些静态错误生成器

在构建窗口小部件时发生错误时,损坏的窗口小部件将替换为此函数返回的窗口小部件。默认情况下,返回ErrorWidget。

您可以在builderMaterialApp小部件的方法中定义。

 Widget buildError(BuildContext context, FlutterErrorDetails error) {
   return Scaffold(
     body: Center(
       child: Text(
         "Error appeared.",
         style: Theme.of(context).textTheme.title,
       ),
     )
   );
 }

 class MyApp extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
     return MaterialApp(
       theme: ThemeData(
         primarySwatch: Colors.blue,
       ),
       builder: (BuildContext context, Widget widget) {
         ErrorWidget.builder = (FlutterErrorDetails errorDetails) {
           return buildError(context, errorDetails);
         };

         return widget;
       },
       title: 'Flutter Demo',
       home: MyHomePage(title: 'Flutter Demo Home Page'),
     );
   }
 }
Run Code Online (Sandbox Code Playgroud)

之前和之后


pol*_*a-c 5

基于Anis Alibegi\xc4\x87 \ 的答案:

\n
    \n
  1. 添加了脚手架。如果没有 Scaffold,消息将显示在先前呈现的内容之上。
  2. \n
  3. 将更多代码移至辅助方法。
  4. \n
\n

代码:

\n
void setErrorBuilder() {\n  ErrorWidget.builder = (FlutterErrorDetails errorDetails) {\n    return Scaffold(\n        body: Center(\n            child: Text("Unexpected error. See console for details.")));\n  };\n} \n\nclass MyApp extends StatelessWidget {\n   @override\n   Widget build(BuildContext context) {\n     setErrorBuilder();\n\n     return MaterialApp(\n       builder: (BuildContext context, Widget widget) {\n         setErrorBuilder();    \n         return widget;\n       },\n       title: \'Flutter Demo\',\n       home: MyHomePage(title: \'Flutter Demo Home Page\'),\n     );\n   }\n }\n
Run Code Online (Sandbox Code Playgroud)\n