이번 글에서는 GoRoute 패키지로 네비게이션 기능 구현할 때 꼭 활용해야 하는 아키텍처 패턴을 살펴보도록 하겠습니다.
파일 시스템 구조는 다음과 같이 구성해 줍니다.
enum AppRoute {
home,
settings,
}
// 실제 사용 예시
context.goNamed(AppRoute.home.name);
final router = GoRouter(
routes: [
GoRoute(
path: '/',
name: AppRoute.home.name,
builder: (context, state) => const QuizPage()),
GoRoute(
path: '/settings',
name: AppRoute.settings.name,
builder: (context, state) => SettingsPage()),
],
errorBuilder: (context, state) => Scaffold(
body: Center(
child: Text(state.error.toString()),
),
),
);
앞서 Enum 값을 이용하여 GoRoute를 만들었습니다. 하지만 이는 반드시 필요한 부분은 아닙니다. Enum값 대신에 기본적인 String을 이용하여 route를 만들 수도 있습니다. 예시를 한번 보겟습니다.
final router = GoRouter(
routes: [
GoRoute(
path: '/',
name: 'home',
builder: (context, state) => const QuizPage()),
GoRoute(
path: '/settings',
name: 'settings',
builder: (context, state) => SettingsPage()),
],
errorBuilder: (context, state) => Scaffold(
body: Center(
child: Text(state.error.toString()),
),
),
);
해당 코드는 앞서 설명한 GoRouter와 동일하지만 Enum 대신 String을 사용했습니다. 해당 방식은 장점과 단점을 가지고 있습니다
****장점****
**단점**
따라서 Route를 만들 때 Enum값을 따로 설정해 주는 것이 여러모로 장점이 많습니다. Route만들 때는 해당 route명을 꼭 Enum값으로 구성해 주시길 바랍니다.
감사합니다