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
FirstPageutilitzantNavigator.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ó
