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ó
