go_router_builder | Dart Package

예시 링크

packages/packages/go_router_builder/example/lib/simple_example.dart at 4efbbb59c744f2324558f67e005a0e423e4187f0 · flutter/packages

사용 방법은 기본적으로 go_router 패키지를 import한 다음 파일이름.g.dart를 선언해주면 된다.

import 'package:go_router/go_router.dart';

part 'this_file.g.dart';

Overview

고라우터는 근본적으로 하나 이상의 페이지 빌더 안에 존재하는 URI포맷을 가지는 string 기반의 위치를 매칭하는 능력을 이용한다.

각각의 페이지는 위치의 한 부분으로 쿼리 파라미터를 이용하거나 경로로써 인자들을 넘겨주고 넘겨받을 수 있다.

고라우터는 GoRouterState 객체의 프로퍼티인 pathParameters 또는 queryParameters 를 사용하여 이같은 행동을 훌륭히 수행할 수 있다.

하지만, 종종 페이지 빌더는 string이 아닌 타입을 파라미터로 파싱해야 하는 경우가 발생한다.

GoRoute(
  path: ':authorId',
  builder: (context, state) {
    // require the authorId to be present and be an integer
    final authorId = int.parse(state.pathParameters['authorId']!);
    return AuthorDetailsScreen(authorId: authorId);
  },
),

위 코드에서 authorId 파라미터는 required 면서 int 타입이여야 한다.

하지만 런타임이 되기 전까지 이런 요구사항은 체크되지 않을 뿐더러 type-safe하게 코드를 작성할 수도 없다.

void _tap() => context.go('/author/a42'); // error: `a42` is not an `int`

이러한 요구사항을 만족시키면서 귀찮은 보일러 플레이트까지 획기적으로 줄여줄 수 있는 방법이 바로 go_router_builder다.

Defining a route