phinx_provider_package 0.0.1
phinx_provider_package: ^0.0.1 copied to clipboard
A Flutter package for managing state using Provider with singleton access and service state management.
phinx_provider_package #
phinx_provider_package es un paquete de Flutter que proporciona herramientas útiles para gestionar el estado en aplicaciones utilizando Provider. Este paquete incluye clases para manejar singletons, proveedores de servicios, y proveedores de servicios múltiples, permitiendo una gestión eficiente y organizada del estado de la aplicación.
Features #
- ProviderManager: Permite registrar y obtener instancias de proveedores de forma centralizada, independiente del contexto.
- ServiceProvider: Un wrapper alrededor de
ChangeNotifierpara gestionar el estado de un servicio en particular, manejando diferentes estados comoidle,working,success,error, yexception. - MultiServiceProvider: Extiende
ChangeNotifierpara manejar el estado de múltiples servicios, proporcionando utilidades para gestionar estos estados de manera independiente.
Getting started #
Para comenzar a usar el paquete, agrégalo a tu archivo pubspec.yaml:
dependencies:
flutter:
sdk: flutter
phinx_provider_package:
git:
url: https://github.com/tu_usuario/tu_repositorio.git
Usage #
ProviderManager #
ProviderManager te permite registrar y obtener proveedores de forma centralizada, sin necesidad de tener acceso directo al contexto de Flutter.
Ejemplo básico
import 'package:phinx_provider_package/provider_manager.dart';
class MyProvider {
String data = 'Hello World';
}
void main() {
ProviderManager().register(MyProvider());
MyProvider provider = ProviderManager().get<MyProvider>();
print(provider.data); // Imprime "Hello World"
}
ServiceProvider #
ServiceProvider es una clase abstracta que extiende ChangeNotifier para manejar el estado de un servicio. Puedes utilizarla para gestionar estados como idle, working, success, error, y exception de manera centralizada.
Ejemplo básico
import 'package:phinx_provider_package/service_provider.dart';
class MyServiceProvider extends ServiceProvider<String> {
MyServiceProvider() : super(data: 'Initial data');
Future<void> updateData() async {
await baseCall(() async {
// Simula una llamada a un servicio
await Future.delayed(Duration(seconds: 1));
data = 'New data';
});
}
}
void main() {
MyServiceProvider provider = MyServiceProvider();
provider.updateData().then((_) {
print(provider.data); // Imprime "New data"
});
}
MultiServiceProvider #
MultiServiceProvider extiende ChangeNotifier y permite manejar el estado de múltiples servicios bajo un mismo proveedor. Esto es útil cuando tienes varias fuentes de datos o servicios relacionados que necesitan ser gestionados en conjunto.
Ejemplo básico
Supongamos que tienes dos servicios diferentes, ServiceA y ServiceB, y deseas gestionar sus estados simultáneamente en un mismo proveedor. Puedes utilizar un switch dentro del método baseCall para manejar las diferentes operaciones en función del servicio:
import 'package:phinx_provider_package/multi_service_provider.dart';
class MyMultiServiceProvider extends MultiServiceProvider<Map<String, dynamic>> {
MyMultiServiceProvider() : super(data: {});
Future<void> fetchData(String serviceKey) async {
await baseCall(serviceKey, () async {
switch (serviceKey) {
case 'serviceA':
// Simula la llamada al servicio A
await Future.delayed(Duration(seconds: 1));
data['serviceA'] = 'Data from Service A';
break;
case 'serviceB':
// Simula la llamada al servicio B
await Future.delayed(Duration(seconds: 1));
data['serviceB'] = 'Data from Service B';
break;
default:
throw Exception('Unknown service key: $serviceKey');
}
});
}
}
void main() {
MyMultiServiceProvider provider = MyMultiServiceProvider();
provider.fetchData('serviceA').then((_) {
print(provider.data['serviceA']); // Imprime "Data from Service A"
});
provider.fetchData('serviceB').then((_) {
print(provider.data['serviceB']); // Imprime "Data from Service B"
});
if (provider.isWorking('serviceA')) {
// show loading widget
}
if (provider.isError('serviceB')) {
// show error widget
}
}
En este ejemplo, MyMultiServiceProvider gestiona dos servicios (ServiceA y ServiceB) utilizando un switch en el método baseCall. Esto permite manejar de manera clara y organizada las llamadas a diferentes servicios, y manejar el estado de cada uno de ellos de forma independiente.
Additional information #
Este paquete fue diseñado para simplificar la gestión del estado en aplicaciones Flutter utilizando Provider.
Para más información sobre cómo contribuir, reportar problemas o sugerir mejoras, visita el repositorio del proyecto. Las contribuciones son bienvenidas y apreciadas.