Thursday, July 16, 2020

Flutter: 현재 화면 확인을 위한 Extension 활용 방법

Flutter에서 현재 화면(Route) 확인하기

모바일 개발을 하다 보면, 특히 FCM과 같은 경우, 현재 어떤 화면을 보고 있는지 체크해서 그에 맞는 동작을 수행해야 할 때가 있습니다. 안드로이드에서는 Activity 자체에서 라이프사이클이 있어서 체크가 가능하지만, Flutter에서는 각 화면별로 어느 화면을 보고 있는지 체크하기가 어렵습니다.

하지만 Extension을 활용하면 비교적 편리하게 현재 Route를 확인할 수 있습니다. 이를 위해서는 Route를 만들 때 반드시 settings를 넣어 name 속성을 각 Route마다 입력해줘야 합니다.

NavigatorStateExtension 작성 예시

그 후에는 아래와 같은 NavigatorStateExtension을 작성하여 현재 보고 있는 화면(Route)을 확인할 수 있습니다:


extension NavigatorStateExtension on NavigatorState {
    bool isCurrent(String routeName) {
        bool isCurrent = false;
        popUntil((route) {
            if (route.settings.name == routeName) {
                isCurrent = true;
            }
            return true;
        });
        return isCurrent;
    }
}

Note: 이 내용은 Navigator 1.0 기준으로 작성되었습니다.


0 개의 댓글:

Post a Comment