본문 바로가기
TIL

[TIL] GoRouter

by chengzior 2024. 12. 19.

 

GoRouter

  • URL 기반 라우팅 패키지
  • 웹/앱 사용
  • URL 기반 네비게이션 패키지

  • 기능(1)
    • templeate syntax 지원
      • /post 경로에 id 파라미터 넘기고 싶을 때
final router = GoRouter(
  initialLocation: '/',
  errorBuilder: (context, state) {
    return ErrorPage();
  },
  routes: [
    GoRoute(
      path: '/',
      builder: (context, state) => HomePage(),
      routes: [
        GoRoute(
          path: 'post',
          builder: (context, state) => PostListPage(),
          routes: [
            GoRoute(
              path: ':id',
              builder: (context, state) {
                final id = int.tryParse(state.pathParameters['id'] ?? '');
                if (id == null) {
                  return ErrorPage();
                }
                return PostDetailPage(id: id);
              },
            )
          ],

  • 기능(2)
    • URL에 query parameter 지원
      • 웹에서 페이지 새로고침 했어도 파라미터 유지하고 싶을 때 사용 
      • ex) /search 경로에 text라는 파라미터 넘기고 싶을 때
GoRoute(
          path: 'search',
          builder: (context, state) {
            final text = state.uri.queryParameters['text'] ?? '';
            if (text.trim().isEmpty) {
              return ErrorPage();
            }
            return SearchPage(text: text);
          },
        ),

  • 기능(3)
    • 리다이렉트: 특정 조건에서 다른 경로로 쉽게 변경 가능
    • 에러페이지: 페이지 경로 잘못 입력했을 때 특정 페이지 보여주기 가능