En aquesta secció, aprendrem a crear la nostra primera aplicació Flutter. Aquest procés inclou la configuració inicial del projecte, la comprensió de l'estructura del projecte i la creació d'una interfície d'usuari bàsica.
- Configuració Inicial del Projecte
Passos per Crear un Nou Projecte Flutter
- Obre el terminal o la línia de comandes.
- Executa la següent comanda per crear un nou projecte Flutter:
flutter create my_first_app
- Navega al directori del projecte:
cd my_first_app
- Obre el projecte en el teu editor de codi preferit (per exemple, Visual Studio Code):
code .
- Comprensió de l'Estructura del Projecte
Un projecte Flutter típic té l'estructura següent:
my_first_app/ ├── android/ ├── build/ ├── ios/ ├── lib/ │ └── main.dart ├── test/ ├── .gitignore ├── pubspec.yaml └── README.md
Descripció dels Directori i Fitxers Principals
- android/ i ios/: Contenen el codi específic per a les plataformes Android i iOS.
- lib/: Conté el codi Dart de l'aplicació. El fitxer principal és
main.dart
. - test/: Conté les proves de l'aplicació.
- pubspec.yaml: Fitxer de configuració del projecte on es defineixen les dependències i altres configuracions.
- Creació d'una Interfície d'Usuari Bàsica
Modificació del Fitxer main.dart
Obre el fitxer lib/main.dart
i reemplaça el contingut amb el següent codi:
import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'My First Flutter App', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(), ); } } class MyHomePage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Home Page'), ), body: Center( child: Text( 'Hello, Flutter!', style: TextStyle(fontSize: 24), ), ), ); } }
Explicació del Codi
main()
: La funció principal que inicia l'aplicació.MyApp
: Un widget sense estat (StatelessWidget) que configura el MaterialApp.MaterialApp
: El widget principal que configura l'aplicació, incloent el tema i la pàgina inicial.MyHomePage
: Un widget sense estat que representa la pàgina inicial de l'aplicació.Scaffold
: Proporciona una estructura bàsica per a la pàgina, incloent l'AppBar i el cos (body).AppBar
: Una barra d'aplicació a la part superior de la pàgina.Center
: Centra el seu fill (child) en el seu espai disponible.Text
: Mostra un text a la pantalla.
- Executar l'Aplicació
Passos per Executar l'Aplicació
- Connecta un dispositiu físic o inicia un emulador.
- Executa la següent comanda al terminal:
flutter run
Si tot està configurat correctament, hauràs de veure la teva aplicació en execució amb el text "Hello, Flutter!" centrat a la pantalla.
Exercici Pràctic
Objectiu
Modifica l'aplicació per afegir un botó que, quan es prem, mostri un missatge diferent.
Instruccions
- Afegeix un botó a la pàgina inicial (
MyHomePage
). - Quan es premi el botó, el text ha de canviar a "Button Pressed!".
Solució
import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'My First Flutter App', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(), ); } } class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { String _displayText = 'Hello, Flutter!'; void _updateText() { setState(() { _displayText = 'Button Pressed!'; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Home Page'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( _displayText, style: TextStyle(fontSize: 24), ), SizedBox(height: 20), ElevatedButton( onPressed: _updateText, child: Text('Press Me'), ), ], ), ), ); } }
Explicació de la Solució
MyHomePage
: Canviat a un widget amb estat (StatefulWidget) per permetre la modificació del text._MyHomePageState
: La classe d'estat que conté la lògica per actualitzar el text._displayText
: Una variable d'estat que emmagatzema el text a mostrar._updateText()
: Una funció que actualitza el text quan es prem el botó.ElevatedButton
: Un botó elevat que crida_updateText
quan es prem.
Conclusió
En aquesta secció, hem après a crear la nostra primera aplicació Flutter, comprenent l'estructura del projecte i creant una interfície d'usuari bàsica. També hem practicat afegint funcionalitat interactiva a la nostra aplicació. En el següent mòdul, explorarem els conceptes bàsics de programació en Dart, el llenguatge de programació utilitzat per Flutter.
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ó