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