go_router en Flutter: ejercicio resuelto de navegación

  2 minutos

Si estás buscando go_router Flutter ejemplo, este ejercicio te muestra una navegación declarativa moderna para proyectos reales.

Crea dos pantallas:

  • Home,
  • Detalle con parámetro.

Navega usando go_router y rutas por nombre.

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

void main() => runApp(const MyApp());

final _router = GoRouter(
  routes: [
    GoRoute(
      path: '/',
      name: 'home',
      builder: (_, __) => const HomePage(),
    ),
    GoRoute(
      path: '/detail/:id',
      name: 'detail',
      builder: (_, state) => DetailPage(id: state.pathParameters['id']!),
    ),
  ],
);

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(routerConfig: _router);
  }
}

class HomePage extends StatelessWidget {
  const HomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Home')),
      body: Center(
        child: ElevatedButton(
          onPressed: () => context.goNamed('detail', pathParameters: {'id': '42'}),
          child: const Text('Ir al detalle'),
        ),
      ),
    );
  }
}

class DetailPage extends StatelessWidget {
  final String id;
  const DetailPage({super.key, required this.id});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Detalle')),
      body: Center(child: Text('ID recibido: $id')),
    );
  }
}

Al pulsar el botón desde Home, navegas a detalle y ves el parámetro id.

  • Definir rutas sin name y perder navegación semántica.
  • Mezclar Navigator.push y go_router sin criterio.
  • No validar parámetros cuando pueden venir vacíos.

go_router se usa en apps con múltiples flujos y enlaces profundos.

En muchos proyectos sí, porque simplifica rutas declarativas y deep links.

No necesariamente. Puedes migrar flujo por flujo.

Cuando la app tiene varias rutas, autenticación y navegación compleja.