GoRouter

<aside> ๐Ÿ’ก ๊ธฐ๋ณธ์ ์œผ๋กœ Flutter์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” View Router ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ํŒจํ‚ค์ง€

</aside>

Flutter์—์„œ ํŽ˜์ด์ง€ ๋ฐ Router ๊ด€๋ฆฌ์˜ ๋„์›€์„ ์ฃผ๋Š” GoRouter๋ฅผ ์•Œ์•„๋ณด์ž

  1. ๋จผ์ € ๋””ํŽœ๋˜์‹œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค
dependencies:
  go_router: ^4.5.0
  1. ๊ธฐ๋ณธ ์ œ๊ณต๋˜๋Š” ์˜ˆ์‹œ๋ฅผ ๋ณด์ž

๋ผ์šฐํ„ฐ ์ •์˜

import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';

void main() => runApp(App());

class App extends StatelessWidget {
  App({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      routeInformationProvider: _router.routeInformationProvider,
      routeInformationParser: _router.routeInformationParser,
      routerDelegate: _router.routerDelegate,
      title: 'GoRouter Example',
    );
  }

  final GoRouter _router = GoRouter(
    routes: <GoRoute>[
      GoRoute(
        path: '/',
        builder: (BuildContext context, GoRouterState state) {
          return ScreenA();
        },
      ),
      GoRoute(
        path: '/page2',
        builder: (BuildContext context, GoRouterState state) {
          return ScreenB();
        },
      ),
    ],
  );
}

๋ผ์šฐํ„ฐ ์‚ฌ์šฉ์‹œ

onTap: () => GoRouter.of(context).go('/page2')
  1. ์ด๋ฅผ ์ฐธ๊ณ ํ•˜์ž๋ฉด go_router๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” GoRouter ๊ฐ์ฒด๋ฅผ ๋จผ์ € ์„ ์–ธํ•ด์•ผํ•œ๋‹ค.