/go_router

The purpose of the go_router for Flutter is to use declarative routes to reduce complexity, regardless of the platform you're targeting (mobile, web, desktop), handling deep linking from Android, iOS and the web while still allowing an easy-to-use developer experience.

Primary LanguageDart

go_router is now published and maintained by the Flutter team

As of the 3.0.2 release, the go_router package is published by the Flutter team and maintained by Flutter engineering in the flutter/packages repository.

Existing go_router issues have been moved to the flutter issues list and new go_router-related issues should be filed there.

The docs on gorouter.dev will also be moving to docs.flutter.dev over time.

This repo has been archived and is read-only.

Pub Version Test codecov License

Welcome to go_router!

The purpose of the go_router package is to use declarative routes to reduce complexity, regardless of the platform you're targeting (mobile, web, desktop), handle deep and dynamic linking from Android, iOS and the web, along with a number of other navigation-related scenarios, while still (hopefully) providing an easy-to-use developer experience.

You can get started with go_router with code as simple as this:

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

  @override
  Widget build(BuildContext context) => MaterialApp.router(
        routeInformationParser: _router.routeInformationParser,
        routerDelegate: _router.routerDelegate,
        title: 'GoRouter Example',
      );

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

class Page1Screen extends StatelessWidget {...}

class Page2Screen extends StatelessWidget {...}

But go_router can do oh so much more!

See gorouter.dev for go_router docs & samples