플러터에서는 기본적으로 Navigator.pop 또는 Navigator.push 를 이용해서 페이지를 이동하는데 이 페이지 이동을 간결하면서 더 다양한 기능을 이용할 수 있도록 확장해주는 플러그인이다.

마치 웹에서 redirect를 걸어주듯이 하는 느낌이라고 생각하면 된다.

go_router | Flutter Package

go_router 플러그인의 build_runner 사용 코드 제네레이터

go_router_builder

사용법

최상위 레벨 필드로 페이지를 설정하는 변수를 선언하고 MaterialApp.router 또는 Cupertino.router 를 이용해 routerConfig 를 설정해주면 된다.

아마 기본 설정된 페이지 이동 애니메이션을 안드로이드용으로 쓸지 아이폰용으로 쓸지 구분하는 용도인 것 같다(추가 정보 필요)

또는 CustomTransitionPage() 를 통해 커스텀 애니메이션을 적용할 수 있다.

import 'package:go_router/go_router.dart';

// GoRouter configuration
final _router = GoRouter(
  routes: [
    GoRoute(
      path: '/',
      builder: (context, state) => const Page1Screen(),
    ),
    GoRoute(
      path: '/page2',
      builder: (context, state) => const Page2Screen(),
    ),
  ],
);

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      routerConfig: _router,
    );
  }
}

GoRouter 위젯 안의 routes 파라미터에 GoRoute 위젯을 배열로 선언해주면 된다.

GoRoute 위젯은 path와 Builder 가 반드시 선언되어야 한다.

builder 파라미터는 pageBuilder 파라미터로 대체할 수 있다.

페이지 이동

context.gocontext.push 또는 context.pop 을 이용하여 페이지를 이동할 수 있다.

go는 현재 스크린 스택에 있는 페이지를 대체하는 새로운 페이지를 생성하는 방식이며 push는 Navigator 클래스의 히스토리 스택 위에 페이지를 쌓는 방식이다.