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);

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

  final GoRouter _router = GoRouter(
    routes: <GoRoute>[
        path: '/',
        builder: (BuildContext context, GoRouterState state) => const Page1Screen(),
        path: '/page2',
        builder: (BuildContext context, GoRouterState state) => const Page2Screen(),

class Page1Screen extends StatelessWidget {...}

class Page2Screen extends StatelessWidget {...}

See gorouter.dev for go_router docs & samples