En aquest tema, aprendrem com construir aplicacions d'escriptori utilitzant Flutter. Flutter no només és una eina poderosa per a aplicacions mòbils, sinó que també permet crear aplicacions per a escriptori amb una única base de codi. Això significa que pots reutilitzar gran part del teu codi existent per crear aplicacions per a Windows, macOS i Linux.
- Introducció a Flutter Desktop
1.1. Què és Flutter Desktop?
Flutter Desktop és una extensió de Flutter que permet crear aplicacions per a escriptori. Amb Flutter Desktop, pots desenvolupar aplicacions per a:
- Windows
- macOS
- Linux
1.2. Avantatges de Flutter Desktop
- Reutilització de codi: Pots utilitzar el mateix codi que has escrit per a aplicacions mòbils.
- Rendiment natiu: Les aplicacions de Flutter es compilen a codi natiu, oferint un rendiment excel·lent.
- Interfície d'usuari rica: Pots crear interfícies d'usuari atractives i responsives amb els widgets de Flutter.
- Configuració de l'Entorn de Desenvolupament
2.1. Requisits del Sistema
- Windows: Windows 10 o superior.
- macOS: macOS 10.14 o superior.
- Linux: Una distribució moderna de Linux.
2.2. Instal·lació de Flutter
Segueix els passos per instal·lar Flutter al teu sistema operatiu. Pots trobar les instruccions detallades a la documentació oficial de Flutter.
2.3. Configuració de l'Entorn
- Descarrega i instal·la Flutter:
git clone https://github.com/flutter/flutter.git -b stable
- Afegeix Flutter al PATH:
export PATH="$PATH:`pwd`/flutter/bin"
- Verifica la instal·lació:
flutter doctor
- Creació d'un Projecte d'Escriptori
3.1. Crear un Nou Projecte
Utilitza el següent comandament per crear un nou projecte de Flutter:
3.2. Configuració del Projecte per a Escriptori
- Navega al directori del projecte:
cd my_desktop_app
- Activa les plataformes d'escriptori:
flutter config --enable-windows-desktop flutter config --enable-macos-desktop flutter config --enable-linux-desktop
3.3. Executar l'Aplicació
Per executar l'aplicació en una plataforma d'escriptori específica, utilitza:
- Windows:
flutter run -d windows
- macOS:
flutter run -d macos
- Linux:
flutter run -d linux
- Adaptació de la Interfície d'Usuari
4.1. Diferències en la Interfície d'Usuari
Les aplicacions d'escriptori poden tenir requisits d'interfície d'usuari diferents en comparació amb les aplicacions mòbils. Alguns aspectes a considerar:
- Dimensions de la finestra: Les aplicacions d'escriptori solen tenir finestres més grans.
- Interacció amb el ratolí i el teclat: Les aplicacions d'escriptori utilitzen més sovint el ratolí i el teclat.
4.2. Exemples de Widgets Adaptats
-
Scrollbar: Per a l'escriptori, pots utilitzar
Scrollbar
per millorar la navegació.Scrollbar( child: ListView.builder( itemCount: 100, itemBuilder: (context, index) { return ListTile( title: Text('Item $index'), ); }, ), );
-
Shortcuts: Pots definir dreceres de teclat per a una millor experiència d'usuari.
Shortcuts( shortcuts: <LogicalKeySet, Intent>{ LogicalKeySet(LogicalKeyboardKey.select): ActivateIntent(), }, child: Actions( actions: <Type, Action<Intent>>{ ActivateIntent: CallbackAction<Intent>( onInvoke: (Intent intent) => print('Activated!'), ), }, child: Focus( child: Builder( builder: (BuildContext context) { return ElevatedButton( onPressed: () => Actions.invoke(context, ActivateIntent()), child: Text('Press Enter'), ); }, ), ), ), );
- Compilació i Distribució
5.1. Compilació de l'Aplicació
Per compilar l'aplicació per a una plataforma específica, utilitza:
- Windows:
flutter build windows
- macOS:
flutter build macos
- Linux:
flutter build linux
5.2. Distribució de l'Aplicació
Després de compilar l'aplicació, trobaràs els fitxers binaris a la carpeta build
del teu projecte. Pots empaquetar aquests fitxers per distribuir-los als usuaris finals.
Exercicis Pràctics
Exercici 1: Crear una Aplicació d'Escriptori Bàsica
- Crea un nou projecte de Flutter.
- Activa les plataformes d'escriptori.
- Afegeix un
ListView
amb unaScrollbar
. - Executa l'aplicació en la teva plataforma d'escriptori.
Exercici 2: Afegir Dreceres de Teclat
- Afegeix dreceres de teclat a l'aplicació creada en l'exercici anterior.
- Defineix una drecera per mostrar un diàleg quan es prem una combinació de tecles específica.
Solucions
Solució a l'Exercici 1
import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('Aplicació d\'Escriptori'), ), body: Scrollbar( child: ListView.builder( itemCount: 100, itemBuilder: (context, index) { return ListTile( title: Text('Item $index'), ); }, ), ), ), ); } }
Solució a l'Exercici 2
import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('Aplicació d\'Escriptori amb Dreceres'), ), body: Shortcuts( shortcuts: <LogicalKeySet, Intent>{ LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyD): ActivateIntent(), }, child: Actions( actions: <Type, Action<Intent>>{ ActivateIntent: CallbackAction<Intent>( onInvoke: (Intent intent) => _showDialog(context), ), }, child: Focus( child: Builder( builder: (BuildContext context) { return Center( child: ElevatedButton( onPressed: () => Actions.invoke(context, ActivateIntent()), child: Text('Prem Ctrl+D'), ), ); }, ), ), ), ), ), ); } void _showDialog(BuildContext context) { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: Text('Drecera Activada'), content: Text('Has premut Ctrl+D!'), actions: <Widget>[ TextButton( child: Text('Tanca'), onPressed: () { Navigator.of(context).pop(); }, ), ], ); }, ); } }
Conclusió
En aquest tema, hem après com configurar l'entorn de desenvolupament per a aplicacions d'escriptori amb Flutter, crear un projecte d'escriptori, adaptar la interfície d'usuari i compilar l'aplicació per a la seva distribució. Amb aquests coneixements, estàs preparat per començar a desenvolupar aplicacions d'escriptori amb Flutter i aprofitar la potència d'aquesta eina per crear aplicacions multiplataforma.
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ó