En aquest tema, explorarem alguns dels paquets més populars i útils de Dart que poden ajudar-te a desenvolupar aplicacions més eficients i amb més funcionalitats. Els paquets són col·leccions de codi que altres desenvolupadors han creat i compartit per facilitar tasques comunes. Utilitzar paquets pot estalviar-te temps i esforç, permetent-te centrar-te en les parts úniques del teu projecte.
- Introducció als Paquets de Dart
Què és un paquet?
Un paquet és una col·lecció de codi Dart que es pot compartir i reutilitzar. Els paquets poden contenir biblioteques, recursos, eines i altres fitxers necessaris per a un projecte.
Com trobar paquets?
El lloc principal per trobar paquets de Dart és pub.dev, el repositori oficial de paquets de Dart i Flutter.
Com afegir un paquet al teu projecte?
Per afegir un paquet al teu projecte, has d'editar el fitxer pubspec.yaml
del teu projecte i afegir el paquet a la secció dependencies
. Després, executa dart pub get
per descarregar i instal·lar el paquet.
- Paquets Populars
2.1 http
El paquet http
és una biblioteca per fer sol·licituds HTTP. És útil per interactuar amb APIs web.
Exemple d'ús:
import 'package:http/http.dart' as http; void fetchData() async { final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts/1')); if (response.statusCode == 200) { print('Data: ${response.body}'); } else { print('Failed to load data'); } }
2.2 provider
El paquet provider
és una solució per a la gestió de l'estat en aplicacions Flutter. Facilita la separació de la lògica de negoci de la interfície d'usuari.
Exemple d'ús:
import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; void main() { runApp( ChangeNotifierProvider( create: (context) => Counter(), child: MyApp(), ), ); } class Counter with ChangeNotifier { int _count = 0; int get count => _count; void increment() { _count++; notifyListeners(); } } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: Text('Provider Example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text('You have pushed the button this many times:'), Consumer<Counter>( builder: (context, counter, child) => Text( '${counter.count}', style: Theme.of(context).textTheme.headline4, ), ), ], ), ), floatingActionButton: FloatingActionButton( onPressed: () => context.read<Counter>().increment(), tooltip: 'Increment', child: Icon(Icons.add), ), ), ); } }
2.3 shared_preferences
El paquet shared_preferences
permet emmagatzemar dades simples de manera persistent. És útil per guardar configuracions o preferències de l'usuari.
Exemple d'ús:
import 'package:shared_preferences/shared_preferences.dart'; void saveData() async { final prefs = await SharedPreferences.getInstance(); await prefs.setInt('counter', 10); } void loadData() async { final prefs = await SharedPreferences.getInstance(); final counter = prefs.getInt('counter') ?? 0; print('Counter: $counter'); }
2.4 path
El paquet path
proporciona funcions per manipular rutes de fitxers de manera segura i eficient.
Exemple d'ús:
import 'package:path/path.dart' as path; void manipulatePath() { final fullPath = path.join('directory', 'file.txt'); print('Full path: $fullPath'); }
2.5 intl
El paquet intl
és útil per a la internacionalització i la localització de les aplicacions. Proporciona eines per formatar dates, números i textos en diferents idiomes.
Exemple d'ús:
import 'package:intl/intl.dart'; void formatDate() { final now = DateTime.now(); final formatter = DateFormat('yyyy-MM-dd'); final formatted = formatter.format(now); print('Formatted date: $formatted'); }
- Exercicis Pràctics
Exercici 1: Fer una sol·licitud HTTP
Utilitza el paquet http
per fer una sol·licitud GET a l'API de JSONPlaceholder i mostra el títol del primer post.
Solució:
import 'package:http/http.dart' as http; import 'dart:convert'; void fetchPost() async { final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts/1')); if (response.statusCode == 200) { final data = jsonDecode(response.body); print('Title: ${data['title']}'); } else { print('Failed to load post'); } } void main() { fetchPost(); }
Exercici 2: Emmagatzemar i recuperar dades
Utilitza el paquet shared_preferences
per emmagatzemar un valor enter i després recuperar-lo i mostrar-lo per consola.
Solució:
import 'package:shared_preferences/shared_preferences.dart'; void saveCounter(int value) async { final prefs = await SharedPreferences.getInstance(); await prefs.setInt('counter', value); } void loadCounter() async { final prefs = await SharedPreferences.getInstance(); final counter = prefs.getInt('counter') ?? 0; print('Counter: $counter'); } void main() { saveCounter(42); loadCounter(); }
Conclusió
En aquest tema, hem explorat alguns dels paquets més populars de Dart i com poden ser utilitzats per millorar les teves aplicacions. Hem vist exemples pràctics d'ús dels paquets http
, provider
, shared_preferences
, path
i intl
. A més, hem proporcionat exercicis pràctics per reforçar els conceptes apresos. Utilitzar paquets pot estalviar-te molt de temps i esforç, permetent-te centrar-te en les parts més importants del teu projecte.
Curs de Programació en Dart
Mòdul 1: Introducció a Dart
- Introducció a Dart
- Configuració de l'Entorn de Desenvolupament
- El Teu Primer Programa en Dart
- Sintaxi i Estructura Bàsica
Mòdul 2: Conceptes Bàsics de Dart
Mòdul 3: Col·leccions
Mòdul 4: Programació Orientada a Objectes en Dart
Mòdul 5: Funcionalitats Avançades de Dart
Mòdul 6: Gestió d'Errors i Depuració
Mòdul 7: Paquets i Biblioteques de Dart
Mòdul 8: Dart per a Web i Mòbil
- Introducció a Flutter
- Construcció d'una Aplicació Simple amb Flutter
- Dart per al Desenvolupament Web