Flutter에서 Navigator.pushAndRemoveUntil
은 화면(또는 경로) 간 탐색에 사용되는 메서드입니다. 이를 통해 새 경로를 네비게이터 스택에 푸시하고 특정 조건이 충족될 때까지 이전 경로를 모두 제거할 수 있습니다. 이는 새 화면으로 이동하고 사용자가 이전 화면으로 돌아갈 수 없도록 하려는 경우에 특히 유용합니다.
다음은 pushAndRemoveUntil
작동 방식에 대한 분석입니다.
Navigator.push
와 마찬가지로 새 경로를 스택에 푸시합니다.true
를 반환하면 해당 지점에서 경로 제거를 중지합니다.Route<dynamic>
을 취하고 bool
을 반환하는 RoutePredicate
유형입니다. 가장 일반적으로 사용되는 조건자는 'ModalRoute.withName('/routeName')'으로, 지정된 이름의 경로에서 중지됩니다.앱에 로그인 흐름이 있는 상황을 상상해 보세요. 로그인에 성공한 후 홈 화면으로 이동하고 사용자가 뒤로 버튼을 눌러 로그인 화면으로 돌아가는 것을 원하지 않습니다. pushAndRemoveUntil
을 사용하여 이를 달성할 수 있습니다:
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(builder: (context) => HomeScreen()),
(Route<dynamic> route) => false,
);
이 예에서 (Route<dynamic> Route) => false
는 항상 false
를 반환하는 조건자 함수입니다. 즉, 제거할 경로가 더 이상 남지 않을 때까지 스택의 모든 경로를 제거하여 HomeScreen
을 탐색 스택의 루트로 효과적으로 만듭니다.
또는 특정 명명된 경로에서 경로 제거를 중지하려면 다음을 사용할 수 있습니다.
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(builder: (context) => HomeScreen()),
ModalRoute.withName('/someRouteName'),
);
이 경우 /someRouteName
이라는 경로를 찾을 때까지 경로가 제거됩니다.
pushAndRemoveUntil
은 Flutter 탐색 시스템의 강력한 도구로, 경로 스택을 효율적으로 관리하는 동시에 복잡한 탐색 흐름을 허용합니다.