Vintage appMaker의 Tech Blog

[Flutter] push한 이전화면에서 build가 예상치 못하게 발생할 시 본문

Source code or Tip/Flutter & Dart

[Flutter] push한 이전화면에서 build가 예상치 못하게 발생할 시

VintageappMaker 2023. 2. 28. 09:55

Navigator.of(context).push()를 이용해 화면을 이동한 상태에서 TextField에서 키보드의 전환이 자주 일어나게 될 경우, 이전화면에서 build가 호출되는 상황이 발생될 수 있다. 이럴경우, 이전화면에서는 build 함수에서 다음과 같은 코드로 "자신이 화면의 권한을 가지고 있는 지 채크"하여 화면을 처리할 수 있다. 

 

이런 상황에서 문제가 발생하는 가장 큰 이유는 

 

build 환경에서 서버와 통신을 하는 코드를 많이 사용하기 때문이다. 

 

      var route = ModalRoute.of(context);
      if (route != null) {
        print("route.settings.name = ${route.settings.name}, route = ${route}");
        print("route.canPop = ${route.canPop}, isActive = ${route.isActive} , isCurrent = ${route.isCurrent} , isBlank = ${route.isBlank}");
      }

      if (ModalRoute.of(context)?.isCurrent ?? false) {
        print("isCurrent true");
      } else {
        return Container(); // 아무것도 하지않음.
      }
Comments