go_router en Flutter: ejercicio resuelto
Si estás buscando go_router Flutter ejemplo, este ejercicio te muestra una navegación declarativa moderna para proyectos reales.
Enunciado
Crea dos pantallas:
- Home,
- Detalle con parámetro.
Navega usando go_router y rutas por nombre.
Solución en Flutter
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')),
);
}
}Resultado esperado
Al pulsar el botón desde Home, navegas a detalle y ves el parámetro id.
Errores frecuentes
- Definir rutas sin
namey perder navegación semántica. - Mezclar
Navigator.pushygo_routersin criterio. - No validar parámetros cuando pueden venir vacíos.
Aplicación práctica
go_router se usa en apps con múltiples flujos y enlaces profundos.
Siguiente ejercicio recomendado
- BottomNavigationBar en Flutter: ejercicio resuelto con IndexedStack
- Navegación con named routes en Flutter: ejercicio resuelto
- Consumo de API con http en Flutter: ejercicio resuelto
- Todos los ejercicios Flutter
Práctica guiada y siguiente paso
- Más ejercicios de Flutter
- Ejercicios C para reforzar fundamentos
- Programación en C en 100 ejercicios resueltos
- Ver el libro en Amazon (incluido en Kindle Unlimited)
- Suscribirte a la newsletter
FAQ
¿go_router sustituye a named routes clásicas?
En muchos proyectos sí, porque simplifica rutas declarativas y deep links.
¿Es complicado migrar desde Navigator 1.0?
No necesariamente. Puedes migrar flujo por flujo.
¿Cuándo merece la pena usar go_router?
Cuando la app tiene varias rutas, autenticación y navegación compleja.