Back to Blog
Mobile Development•1 min read

Navigation 2.0 in Flutter With go_router

Scaleup Infotech Team
Scaleup Infotech Team

Custom Software & Business Automation

Fluttergo_routerNavigationDeep Links

In this guide

A simple overview of Navigation 2.0 in Flutter With go_router. Learn what it means, when it helps, and what to check first.

The imperative Navigator.push falls apart once you need deep links, web URLs, or auth-based redirects. go_router gives Flutter a declarative, URL-first router that handles all of it.

Defining Routes

dart
final router = GoRouter(
  routes: [
    GoRoute(path: '/', builder: (_, __) => const HomeScreen()),
    GoRoute(
      path: '/product/:id',
      builder: (_, state) => ProductScreen(id: state.pathParameters['id']!),
    ),
  ],
);

Auth Redirects in One Place

dart
GoRouter(
  redirect: (context, state) {
    final loggedIn = authService.isLoggedIn;
    if (!loggedIn && state.uri.path != '/login') return '/login';
    return null; // no redirect
  },
  routes: [ /* ... */ ],
);

Navigating

dart
context.go('/product/42');      // replace
context.push('/settings');      // push onto the stack

Free Deep Links and Web URLs

Because routes are real paths, deep links from notifications and shareable web URLs work with zero extra code. StatefulShellRoute handles bottom-nav tab state too.

Relevant Scaleup Infotech Services

Share this article:

Keep Reading

Ready to implement these ideas?

Discuss Your Project