Flutter 예외처리 – unhandled error handle

,

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.
    };