Flutter에서 화면을 전환하는 방법은 크게 두 가지가 있습니다. 기본적으로 제공되는 Navigator, 그리고 Flutter 2.5 이후 많은 앱에서 도입 중인 Gorouter입니다.
이 글에서는 Navigator와 Gorouter의 개념과 역할, 자주 사용하는 메서드, 그리고 각각의 장단점과 사용 시기를 비교하고, 예시까지 다뤄보겠습니다!!
Gorouter는 Flutter에서 제공하는 선언형 라우팅 라이브러리입니다.
Flutter 2.5 이후 공식적으로 권장되기 시작했고, URL 기반 라우팅, 딥링크, 브라우저 히스터리 처리에 유용하게 쓰입니다.
GoRouter.of(context).go('/home');
GoRouter.of(context).push('/profile');
GoRouter.of(context).pop();
Navigator는 Flutter의 기본 라우팅 시스템으로 명령형 방식입니다.
화면 전환을 직접 push, pop 등의 메서드로 제어하고, 라우팅 스택을 세부적으로 다룰 수 있습니다.
예시
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => ProductDetail()),
);
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(builder: (_) => TargetScreen()),
(route) => false,
);
항목 | Gorouter | Navigator |
---|---|---|
방식 | 선언형 | 명령형 |
딥링크 지원 | 자동 처리 | 수동 처리 필요 |
URL 관리 | 가능 | 불가 |
스택 제어 | 제한적 | 자유로움 |
뒤로가기 커스터마이징 | 어려움 | 쉬움 |
적합한 상황 | 웹, 딥링크, 구조화된 앱 | 복잡한 흐름, 푸시알림, 조건부 제어 |
Gorouter와 Navigator 중 어떤걸 써야할지 고민하시는 분들에게 도움이 되었으면 좋겠습니다! 하나만 쓰는게 아니라 적절한 상황에 적절한 기능을 적용해 섞어 쓰는게 가장 좋은 방법입니다.