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.

  1. 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.

dependencies:
  http: ^0.13.3

  1. 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');
}

  1. 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.

© Copyright 2024. Tots els drets reservats