phinx_provider_package 0.0.1 copy "phinx_provider_package: ^0.0.1" to clipboard
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 ChangeNotifier para gestionar el estado de un servicio en particular, manejando diferentes estados como idle, working, success, error, y exception.
  • MultiServiceProvider: Extiende ChangeNotifier para 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.

1
likes
0
points
43
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package for managing state using Provider with singleton access and service state management.

Homepage

License

unknown (license)

Dependencies

flutter

More

Packages that depend on phinx_provider_package