-
앱 구조 - 내비게이션에 go_router를 사용하자아키텍처/아키텍처 권장사항 2025. 5. 8. 19:46반응형
go_router란?
go_router는 Flutter 앱에서 화면을 이동(라우팅)하는 걸 쉽게 만들어주는 패키지입니다.
Flutter 공식 팀이 직접 만들었고, 현재 가장 많이 쓰이는 방식 중 하나입니다.
왜 필요한가요?
Flutter는 원래 Navigator라는 클래스를 사용해서 화면을 이동합니다:
Navigator.push( context, MaterialPageRoute(builder: (context) => DetailScreen()), );
하지만 앱이 점점 커지고, URL도 관리해야 하고, **조건부 라우팅(로그인 여부 등)**도 해야 하면…
코드가 복잡해지고, 유지보수가 어려워집니다.
go_router의 장점
go_router는 이런 문제를 깔끔하게 해결해 줍니다!
- 경로(/home, /login) 기반으로 화면 구성
- URL과 화면을 자동으로 연결
- 로그인 상태 같은 조건부 라우팅 처리 쉬움
- Flutter 웹에서도 잘 작동함
예시 비교
일반 Navigator 방식
Navigator.push( context, MaterialPageRoute(builder: (context) => ProfileScreen()), );
go_router 방식
context.go('/profile');
라우트 설정 예시
final GoRouter router = GoRouter( routes: [ GoRoute( path: '/login', builder: (context, state) => LoginScreen(), ), GoRoute( path: '/home', builder: (context, state) => HomeScreen(), ), GoRoute( path: '/profile', builder: (context, state) => ProfileScreen(), ), ], );
언제 go_router를 써야 하나요?
상황 go_router 추천 여부 일반적인 앱 (대부분) ✅ 강력히 추천 웹 앱도 함께 만들고 싶을 때 ✅ 매우 좋음 매우 특이한 내비게이션 구조가 필요한 경우 ❌ 그땐 Navigator 직접 쓰거나 다른 패키지 고려
정리
항목 설명 go_router란? Flutter 공식 내비게이션 라이브러리. 화면 이동을 깔끔하게 관리해줍니다. 왜 써야 하나요? 코드가 단순해지고, 웹도 잘 지원하며, 로그인 상태 등에 따라 라우팅 제어가 쉬움 언제 쓰면 좋은가요? 거의 모든 Flutter 앱에서 사용하기 좋고, Flutter 팀도 추천합니다. 반응형'아키텍처 > 아키텍처 권장사항' 카테고리의 다른 글
앱 구조 - 추상 레포지토리 클래스를 사용하자 (0) 2025.05.08 앱 구조 - 클래스, 파일, 디렉토리에 표준화된 이름 규칙을 사용하자 (0) 2025.05.08 앱 구조 - 의존성 주입(Dependency Injection)을 사용하자 (1) 2025.05.08 데이터 처리 - API 모델과 도메인 모델을 분리해서 생성하자 (0) 2025.05.08 데이터 처리 - 불변(immutable) 데이터 모델을 사용하자 (0) 2025.05.08