When handling exception processing in Flutter, it is necessary to gather unhandled exceptions at the outermost level and manage them. Moreover, it would be very beneficial if pop-ups could be handled in that part as well.
This is the code to raise an error popup through a general exception throw and to redirect to the desired path
Flutter 예외처리 를 수행하다보면 가장 바깥쪽에서 unhandled exception을 모아서 다루는 방법이 필요하다.
뿐만 아니라 그 부분에서 팝업까지 처리를 해줄 수 있다면 매우 좋다.
일반적인 exception throw을 통해서 에러팝업까지 올리고, 원하는 경로로 이전시키기 위한 코드이다.
// Set up a FlutterError.onError callback
FlutterError.onError = (FlutterErrorDetails details) {
// Handle the error here
// print("Unhandled exception: ${details.exception}");
// print("Unhandled Stack trace:\n${details.stack}");
if (details.exception is PopupException) {
WidgetsBinding.instance.addPostFrameCallback((_) {
showDialog<void>(
context: context,
builder: (BuildContext context) {
return AlertDialog(
icon: const Icon(
Icons.warning,
),
title: Text(details.exceptionAsString()),
actions: <Widget>[
TextButton(
onPressed: () {
/// 설정 페이지로 이동
///
while (context.canPop()) {
context.pop();
}
context.pushNamed('/home');
},
child: const Text('설정 페이지로 이동'),
),
],
);
},
);
});
} else {
_log.error(details.exception.toString(), error: details.exception, stackTrace: details.stack);
}
// throw details.exception;
// You can log the error, send it to a server, or take any other desired action.
};