La navegació és una part fonamental de qualsevol aplicació mòbil, ja que permet als usuaris moure's entre diferents pantalles o seccions de l'aplicació. En Flutter, la navegació es gestiona mitjançant el Navigator
i les rutes. En aquesta secció, aprendrem els conceptes bàsics de la navegació en Flutter i com implementar-la en les nostres aplicacions.
Conceptes Clau
- Navigator: És una pila de widgets que gestiona l'historial de navegació de l'aplicació.
- Rutes: Són les diferents pantalles o pàgines de l'aplicació. Cada ruta és un widget que es mostra quan es navega a aquesta ruta.
- MaterialPageRoute: És una implementació de ruta que utilitza una transició de pàgina de material design.
Navegació Bàsica amb Navigator
Pujar una Nova Pàgina
Per navegar a una nova pàgina, utilitzem el mètode Navigator.push
. Aquest mètode afegeix una nova ruta a la pila de navegació.
import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: FirstPage(), ); } } class FirstPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Primera Pàgina'), ), body: Center( child: ElevatedButton( child: Text('Anar a la Segona Pàgina'), onPressed: () { Navigator.push( context, MaterialPageRoute(builder: (context) => SecondPage()), ); }, ), ), ); } } class SecondPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Segona Pàgina'), ), body: Center( child: ElevatedButton( child: Text('Tornar a la Primera Pàgina'), onPressed: () { Navigator.pop(context); }, ), ), ); } }
Explicació del Codi
- MaterialApp: És el widget principal de l'aplicació que configura el tema i la navegació.
- FirstPage: És la primera pàgina de l'aplicació. Conté un botó que, quan es prem, navega a la
SecondPage
. - SecondPage: És la segona pàgina de l'aplicació. Conté un botó que, quan es prem, torna a la
FirstPage
utilitzantNavigator.pop
.
Tornar a la Pàgina Anterior
Per tornar a la pàgina anterior, utilitzem el mètode Navigator.pop
. Aquest mètode elimina la ruta superior de la pila de navegació i mostra la ruta anterior.
Exercicis Pràctics
Exercici 1: Navegació entre Tres Pàgines
Crea una aplicació amb tres pàgines. La primera pàgina ha de tenir un botó per anar a la segona pàgina, la segona pàgina ha de tenir un botó per anar a la tercera pàgina, i la tercera pàgina ha de tenir un botó per tornar a la primera pàgina.
Solució
import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: FirstPage(), ); } } class FirstPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Primera Pàgina'), ), body: Center( child: ElevatedButton( child: Text('Anar a la Segona Pàgina'), onPressed: () { Navigator.push( context, MaterialPageRoute(builder: (context) => SecondPage()), ); }, ), ), ); } } class SecondPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Segona Pàgina'), ), body: Center( child: ElevatedButton( child: Text('Anar a la Tercera Pàgina'), onPressed: () { Navigator.push( context, MaterialPageRoute(builder: (context) => ThirdPage()), ); }, ), ), ); } } class ThirdPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Tercera Pàgina'), ), body: Center( child: ElevatedButton( child: Text('Tornar a la Primera Pàgina'), onPressed: () { Navigator.popUntil(context, (route) => route.isFirst); }, ), ), ); } }
Explicació del Codi
- Navigator.popUntil: Aquest mètode elimina les rutes de la pila fins que es compleixi la condició especificada. En aquest cas, elimina les rutes fins que arribi a la primera ruta.
Resum
En aquesta secció, hem après els conceptes bàsics de la navegació en Flutter utilitzant el Navigator
i les rutes. Hem vist com navegar a una nova pàgina amb Navigator.push
i com tornar a la pàgina anterior amb Navigator.pop
. També hem practicat aquests conceptes amb un exercici pràctic. En la següent secció, explorarem les rutes nomenades per gestionar la navegació de manera més eficient.
Curs de Desenvolupament Flutter
Mòdul 1: Introducció a Flutter
- Què és Flutter?
- Configuració de l'Entorn de Desenvolupament
- Comprensió de l'Arquitectura de Flutter
- Creació de la Teva Primera Aplicació Flutter
Mòdul 2: Conceptes Bàsics de Programació en Dart
- Introducció a Dart
- Variables i Tipus de Dades
- Sentències de Flux de Control
- Funcions i Mètodes
- Programació Orientada a Objectes en Dart
Mòdul 3: Widgets de Flutter
- Introducció als Widgets
- Widgets Stateless vs Stateful
- Widgets Bàsics
- Widgets de Disseny
- Widgets d'Entrada i Formulari
Mòdul 4: Gestió de l'Estat
Mòdul 5: Navegació i Enrutament
- Introducció a la Navegació
- Navegació Bàsica
- Rutes Nomenades
- Passar Dades Entre Pantalles
- Deep Linking
Mòdul 6: Xarxes i APIs
- Obtenir Dades d'Internet
- Analitzar Dades JSON
- Gestió d'Errors de Xarxa
- Ús d'APIs REST
- Integració de GraphQL
Mòdul 7: Persistència i Emmagatzematge
- Introducció a la Persistència
- Preferències Compartides
- Emmagatzematge de Fitxers
- Base de Dades SQLite
- Ús de Hive per a l'Emmagatzematge Local
Mòdul 8: Conceptes Avançats de Flutter
- Animacions en Flutter
- Pintura Personalitzada i Canvas
- Canals de Plataforma
- Isolates i Concurrència
- Optimització del Rendiment
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries
- Proves de Widgets
- Proves d'Integració
- Tècniques de Depuració
Mòdul 10: Desplegament i Manteniment
- Preparació per al Llançament
- Construcció per a iOS
- Construcció per a Android
- Integració i Desplegament Continu (CI/CD)
- Manteniment i Actualització de la Teva Aplicació