pushAndRemoveUntil

박동규·2023년 11월 24일
0

flutter

목록 보기
1/4

Flutter에서 Navigator.pushAndRemoveUntil은 화면(또는 경로) 간 탐색에 사용되는 메서드입니다. 이를 통해 새 경로를 네비게이터 스택에 푸시하고 특정 조건이 충족될 때까지 이전 경로를 모두 제거할 수 있습니다. 이는 새 화면으로 이동하고 사용자가 이전 화면으로 돌아갈 수 없도록 하려는 경우에 특히 유용합니다.

다음은 pushAndRemoveUntil 작동 방식에 대한 분석입니다.

  1. 새 경로 푸시: 이 방법은 Navigator.push와 마찬가지로 새 경로를 스택에 푸시합니다.
  2. Remove Until: 특정 조건이 충족될 때까지 스택에서 이전 경로를 모두 제거합니다. 이 조건은 각 경로를 확인하는 조건자 함수에 의해 정의됩니다. 조건자가 경로에 대해 true를 반환하면 해당 지점에서 경로 제거를 중지합니다.
  3. 조건자 함수: 조건자 함수는 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 탐색 시스템의 강력한 도구로, 경로 스택을 효율적으로 관리하는 동시에 복잡한 탐색 흐름을 허용합니다.

profile
내가 원하는 것을 만들자

0개의 댓글