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_updateTextquan 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ó
