피드로 돌아가기
Flutter GoRouter Advanced — Nested Navigation, Auth Guards, and Deep Links
Dev.toDev.to
Frontend

ShellRoute와 Auth Guard 기반의 통합 선언적 라우팅 설계

Flutter GoRouter Advanced — Nested Navigation, Auth Guards, and Deep Links

kanta13jp12026년 4월 28일3intermediate

Context

웹과 모바일 환경에서 일관된 URL 체계와 복잡한 계층 구조의 UI 내비게이션 구현 필요성 증대. 단순 페이지 전환을 넘어 인증 상태에 따른 동적 접근 제어와 Nested Navigation의 효율적 관리 요구.

Technical Solution

  • ShellRoute 도입을 통한 Bottom Navigation Bar와 같은 공통 레이아웃의 상태 유지 및 하위 페이지 전환 구조 설계
  • redirect 로직과 refreshListenable을 결합하여 인증 상태 변화에 실시간으로 반응하는 Auth Guard 메커니즘 구현
  • Path Parameters와 Query Strings를 활용하여 URL 기반의 데이터 추출 및 딥링크 대응 체계 구축
  • GoRouterRefreshStream 클래스를 통한 Stream 데이터를 ChangeNotifier로 변환하여 라우터의 리렌더링 트리거 최적화
  • 계층적 GoRoute 정의를 통한 /users/:userId/posts/:postId 형태의 논리적 리소스 경로 구조화

1. 공통 레이아웃 유지 필요 시 ShellRoute를 통한 Nested Navigation 구조 검토

2. 인증 상태 변경 시 즉각적인 페이지 전환을 위해 refreshListenable 연동 확인

3. 딥링크 및 웹 URL 호환성을 위해 state.pathParameters와 state.uri.queryParameters 활용 설계

4. 인증 페이지를 ShellRoute 외부에 배치하여 불필요한 레이아웃 렌더링 방지

원문 읽기