Ответ 1
Я открыл вопрос на странице GitHub и получил ответ там.
Widget getErrorWidget(BuildContext context, FlutterErrorDetails error) { return Center( child: Text( "Error appeared.", style: Theme.of(context).textTheme.title.copyWith(color: Colors.white), ), ); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { ErrorWidget.builder = (FlutterErrorDetails errorDetails) { return getErrorWidget(context, errorDetails); }; return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(title: 'Flutter Demo Home Page'), ); } }
Решение предоставлено Вутером Хардеманом
UPDATE:
С помощью вышеприведенного решения вы не можете использовать ThemeData, потому что не было никакого экземпляра MaterialApp, когда мы определили наш пользовательский виджет исключений. Чтобы исправить это, используйте:
Widget getErrorWidget(BuildContext context, FlutterErrorDetails error) {
return Center(
child: Text(
"Error appeared.",
style: Theme.of(context).textTheme.title.copyWith(color: Colors.white),
),
);
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
ErrorWidget.builder = (FlutterErrorDetails errorDetails) {
return getErrorWidget(context, errorDetails);
};
return MaterialApp(
theme: ThemeData(
primarySwatch: Colors.blue,
),
builder: (BuildContext context, Widget widget) {
ErrorWidget.builder = (FlutterErrorDetails errorDetails) {
return getErrorWidget(context, errorDetails);
};
return widget;
},
title: 'Flutter Demo',
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
Без пользовательской ошибки:
С пользовательской ошибкой: