En aquest tema, aprendrem com crear i publicar els nostres propis paquets en Dart. Els paquets són una manera excel·lent de modularitzar el codi, compartir-lo amb altres desenvolupadors i reutilitzar-lo en diferents projectes. A més, veurem com estructurar un paquet, definir les seves dependències i publicar-lo al repositori de paquets de Dart, pub.dev.
- Introducció als Paquets
Què és un paquet?
Un paquet és una col·lecció de codi, recursos i metadades que es poden compartir i reutilitzar. Els paquets poden contenir biblioteques, aplicacions, eines i altres recursos.
Per què utilitzar paquets?
- Reutilització del codi: Facilita la reutilització del codi en diferents projectes.
- Modularització: Permet dividir el codi en mòduls més petits i manejables.
- Col·laboració: Facilita la col·laboració amb altres desenvolupadors.
- Distribució: Permet compartir el codi amb la comunitat mitjançant pub.dev.
- Estructura d'un Paquet
Un paquet de Dart té una estructura específica. A continuació, es mostra l'estructura bàsica d'un paquet:
my_package/ ├── lib/ │ ├── src/ │ │ └── my_package_base.dart │ └── my_package.dart ├── test/ │ └── my_package_test.dart ├── example/ │ └── my_package_example.dart ├── pubspec.yaml └── README.md
Descripció dels fitxers i directoris:
- lib/: Conté el codi font del paquet.
- src/: Conté els fitxers de codi font privats.
- my_package.dart: Punt d'entrada públic del paquet.
- test/: Conté les proves del paquet.
- example/: Conté exemples d'ús del paquet.
- pubspec.yaml: Fitxer de configuració del paquet.
- README.md: Documentació del paquet.
- Creació del Paquet
Pas 1: Crear el Directori del Paquet
Crea un directori per al teu paquet i navega fins a ell:
Pas 2: Crear el Fitxer pubspec.yaml
El fitxer pubspec.yaml conté la informació del paquet, com ara el nom, la versió, les dependències, etc. Crea un fitxer pubspec.yaml amb el següent contingut:
name: my_package description: A new Dart package. version: 0.0.1 environment: sdk: '>=2.12.0 <3.0.0' dependencies: # Afegeix les dependències aquí dev_dependencies: # Afegeix les dependències de desenvolupament aquí
Pas 3: Crear el Directori lib i el Fitxer my_package.dart
Crea el directori lib i el fitxer my_package.dart:
Afegeix el següent codi al fitxer lib/my_package.dart:
Pas 4: Crear el Directori src i el Fitxer my_package_base.dart
Crea el directori src i el fitxer my_package_base.dart:
Afegeix el següent codi al fitxer lib/src/my_package_base.dart:
Pas 5: Crear el Directori test i el Fitxer my_package_test.dart
Crea el directori test i el fitxer my_package_test.dart:
Afegeix el següent codi al fitxer test/my_package_test.dart:
import 'package:my_package/my_package.dart';
import 'package:test/test.dart';
void main() {
test('greet returns a greeting message', () {
final myPackage = MyPackage();
expect(myPackage.greet('World'), 'Hello, World!');
});
}Pas 6: Crear el Directori example i el Fitxer my_package_example.dart
Crea el directori example i el fitxer my_package_example.dart:
Afegeix el següent codi al fitxer example/my_package_example.dart:
import 'package:my_package/my_package.dart';
void main() {
final myPackage = MyPackage();
print(myPackage.greet('World'));
}
- Publicació del Paquet
Pas 1: Registrar-se a pub.dev
Abans de publicar el paquet, has de registrar-te a pub.dev i obtenir un token d'autenticació.
Pas 2: Validar el Paquet
Abans de publicar el paquet, assegura't que compleix amb les normes de pub.dev. Pots utilitzar la comanda següent per validar el paquet:
Pas 3: Publicar el Paquet
Si el paquet passa la validació, pots publicar-lo amb la comanda següent:
- Resum
En aquest tema, hem après com crear i estructurar un paquet de Dart, definir les seves dependències i publicar-lo a pub.dev. Els paquets són una eina poderosa per modularitzar el codi, compartir-lo amb altres desenvolupadors i reutilitzar-lo en diferents projectes. Amb aquesta base, estàs preparat per crear i publicar els teus propis paquets en Dart.
Exercicis Pràctics
Exercici 1: Crear un Paquet Simple
Crea un paquet anomenat simple_package que contingui una classe SimpleCalculator amb mètodes per sumar, restar, multiplicar i dividir dos nombres. Escriu proves per a cada mètode i un exemple d'ús.
Exercici 2: Publicar un Paquet
Crea un paquet anomenat greeting_package que contingui una classe Greeter amb un mètode greet que retorni un missatge de salutació. Publica el paquet a pub.dev.
Solucions
Solució a l'Exercici 1
Directori del Paquet:
simple_package/ ├── lib/ │ ├── src/ │ │ └── simple_calculator.dart │ └── simple_package.dart ├── test/ │ └── simple_calculator_test.dart ├── example/ │ └── simple_calculator_example.dart ├── pubspec.yaml └── README.md
Fitxer pubspec.yaml:
name: simple_package description: A simple calculator package. version: 0.0.1 environment: sdk: '>=2.12.0 <3.0.0'
Fitxer lib/simple_package.dart:
Fitxer lib/src/simple_calculator.dart:
class SimpleCalculator {
double add(double a, double b) => a + b;
double subtract(double a, double b) => a - b;
double multiply(double a, double b) => a * b;
double divide(double a, double b) {
if (b == 0) {
throw ArgumentError('Cannot divide by zero');
}
return a / b;
}
}Fitxer test/simple_calculator_test.dart:
import 'package:simple_package/simple_package.dart';
import 'package:test/test.dart';
void main() {
final calculator = SimpleCalculator();
test('add', () {
expect(calculator.add(2, 3), 5);
});
test('subtract', () {
expect(calculator.subtract(5, 3), 2);
});
test('multiply', () {
expect(calculator.multiply(2, 3), 6);
});
test('divide', () {
expect(calculator.divide(6, 3), 2);
});
test('divide by zero', () {
expect(() => calculator.divide(6, 0), throwsArgumentError);
});
}Fitxer example/simple_calculator_example.dart:
import 'package:simple_package/simple_package.dart';
void main() {
final calculator = SimpleCalculator();
print('2 + 3 = ${calculator.add(2, 3)}');
print('5 - 3 = ${calculator.subtract(5, 3)}');
print('2 * 3 = ${calculator.multiply(2, 3)}');
print('6 / 3 = ${calculator.divide(6, 3)}');
}Solució a l'Exercici 2
Segueix els passos descrits anteriorment per crear i publicar el paquet greeting_package amb una classe Greeter que contingui un mètode greet.
Directori del Paquet:
greeting_package/ ├── lib/ │ ├── src/ │ │ └── greeter.dart │ └── greeting_package.dart ├── test/ │ └── greeter_test.dart ├── example/ │ └── greeter_example.dart ├── pubspec.yaml └── README.md
Fitxer pubspec.yaml:
name: greeting_package description: A package for greeting. version: 0.0.1 environment: sdk: '>=2.12.0 <3.0.0'
Fitxer lib/greeting_package.dart:
Fitxer lib/src/greeter.dart:
Fitxer test/greeter_test.dart:
import 'package:greeting_package/greeting_package.dart';
import 'package:test/test.dart';
void main() {
final greeter = Greeter();
test('greet', () {
expect(greeter.greet('World'), 'Hello, World!');
});
}Fitxer example/greeter_example.dart:
import 'package:greeting_package/greeting_package.dart';
void main() {
final greeter = Greeter();
print(greeter.greet('World'));
}Segueix els passos per validar i publicar el paquet a pub.dev.
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
