go_router 0.7.0 go_router: ^0.7.0 copied to clipboard
A declarative router for Flutter based on Navigation 2 supporting deep linking, data-driven routes and more
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'shared/pages.dart';
void main() => runApp(App());
/// sample class using simple declarative routes
class App extends StatelessWidget {
App({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) => MaterialApp.router(
routeInformationParser: _router.routeInformationParser,
routerDelegate: _router.routerDelegate,
title: 'Declarative Routes GoRouter Example',
);
late final _router = GoRouter(routes: _routesBuilder, error: _errorBuilder);
List<GoRoute> _routesBuilder(BuildContext context, String location) => [
GoRoute(
path: '/',
builder: (context, state) => MaterialPage<Page1Page>(
key: state.pageKey,
child: const Page1Page(),
),
),
GoRoute(
path: '/page2',
builder: (context, state) => MaterialPage<Page2Page>(
key: state.pageKey,
child: const Page2Page(),
),
),
];
Page<dynamic> _errorBuilder(BuildContext context, GoRouterState state) =>
MaterialPage<ErrorPage>(
key: state.pageKey,
child: ErrorPage(state.error),
);
}