🛤️

GoRouter 선언적 라우팅

Flutter 공식 추천 라우팅 패키지

go_router는 Flutter 팀이 공식 유지보수하는 선언적 라우팅 패키지입니다.

GoRoute 객체로 경로를 정의하고, GoRouter 인스턴스에 등록합니다. context.go('/home')으로 네비게이션하며, URL 경로와 1:1 매핑됩니다.

인증 리다이렉트(미로그인 시 /login으로), ShellRoute(하단 탭바 유지), 중첩 라우트 등 실무에서 필요한 기능을 모두 지원합니다.

구현 순서

1

go_router 패키지 추가 (pubspec.yaml)

2

GoRouter 인스턴스 생성 + GoRoute로 경로 정의

3

MaterialApp.router()로 라우터 연결

4

redirect 콜백으로 인증 가드 구현

장점

  • URL 기반으로 Web/딥링크 완벽 지원
  • Flutter 팀 공식 유지보수로 안정성 보장

단점

  • 기본 Navigator보다 초기 설정이 복잡
  • 버전 업데이트 시 마이그레이션 비용 발생 가능

사용 사례

Web + 모바일 겸용 앱 (URL 기반 라우팅 필수) 인증 플로우가 있는 앱

참고 자료