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개의 댓글

관련 채용 정보