En aquest tema, explorarem els widgets de disseny en Flutter, que són fonamentals per crear interfícies d'usuari atractives i funcionals. Els widgets de disseny ens permeten organitzar i disposar altres widgets en la pantalla de manera flexible i eficient.
Objectius d'Aprenentatge
Al final d'aquest tema, hauràs après:
- Què són els widgets de disseny en Flutter.
- Com utilitzar els widgets de disseny més comuns.
- Com combinar diversos widgets de disseny per crear interfícies complexes.
Què són els Widgets de Disseny?
Els widgets de disseny (layout widgets) són components que ajuden a organitzar altres widgets en la pantalla. Aquests widgets no tenen una aparença visual pròpia, sinó que controlen com es disposen els seus fills.
Widgets de Disseny Comuns
- Container
El widget Container
és un dels més versàtils en Flutter. Pot contenir un sol fill i permet aplicar marges, farcits, dimensions, decoracions, etc.
Container( margin: EdgeInsets.all(10.0), padding: EdgeInsets.all(20.0), width: 200.0, height: 200.0, decoration: BoxDecoration( color: Colors.blue, borderRadius: BorderRadius.circular(10.0), ), child: Text('Hola, món!'), )
- Row i Column
Els widgets Row
i Column
s'utilitzen per disposar widgets en una fila o columna respectivament.
Row
Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: <Widget>[ Icon(Icons.star, color: Colors.red), Icon(Icons.star, color: Colors.green), Icon(Icons.star, color: Colors.blue), ], )
Column
Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text('Primer text'), Text('Segon text'), Text('Tercer text'), ], )
- Stack
El widget Stack
permet superposar widgets uns sobre els altres.
Stack( children: <Widget>[ Container( width: 200.0, height: 200.0, color: Colors.red, ), Positioned( top: 50.0, left: 50.0, child: Container( width: 100.0, height: 100.0, color: Colors.blue, ), ), ], )
- ListView
El widget ListView
s'utilitza per crear llistes desplaçables.
ListView( children: <Widget>[ ListTile( leading: Icon(Icons.map), title: Text('Mapa'), ), ListTile( leading: Icon(Icons.photo_album), title: Text('Àlbum de fotos'), ), ListTile( leading: Icon(Icons.phone), title: Text('Telèfon'), ), ], )
Exercicis Pràctics
Exercici 1: Crear una Interfície Simple amb Row i Column
Crea una interfície que mostri tres icones en una fila i tres textos en una columna.
Solució
Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: <Widget>[ Icon(Icons.star, color: Colors.red), Icon(Icons.star, color: Colors.green), Icon(Icons.star, color: Colors.blue), ], ), SizedBox(height: 20.0), Text('Primer text'), Text('Segon text'), Text('Tercer text'), ], )
Exercici 2: Crear una Interfície amb Stack
Crea una interfície que mostri un quadrat vermell amb un quadrat blau superposat a la part superior esquerra.
Solució
Stack( children: <Widget>[ Container( width: 200.0, height: 200.0, color: Colors.red, ), Positioned( top: 50.0, left: 50.0, child: Container( width: 100.0, height: 100.0, color: Colors.blue, ), ), ], )
Resum
En aquest tema, hem après sobre els widgets de disseny en Flutter, incloent Container
, Row
, Column
, Stack
i ListView
. Aquests widgets són essencials per crear interfícies d'usuari ben organitzades i atractives. Hem vist exemples pràctics de com utilitzar aquests widgets i hem realitzat exercicis per reforçar els conceptes apresos.
En el següent tema, explorarem els widgets d'entrada i formulari, que ens permetran interactuar amb els usuaris i recollir dades.
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ó