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
