flutter_models_provider

Modelos de datos reutilizables y configuración de entorno para aplicaciones Flutter que trabajan con APIs REST y almacenamiento local ObjectBox.

Características

  • Modelos base para manejo de datos en aplicaciones Flutter
  • Configuración centralizada para comunicación con APIs REST
  • Soporte para modo online/offline
  • Modelos para paginación, respuestas del servidor y carga de archivos
  • Enums para gestión de estados de registros y validaciones
  • Soporte para bases de datos locales ObjectBox
  • Utilidades para conversión de fechas y coordenadas geográficas

Instalación

Agrega esta línea en el archivo pubspec.yaml de tu proyecto:

dependencies:
  flutter_models_provider: ^1.0.0

Luego ejecuta:

flutter pub get

Uso

EnvironmentApiRest

Constantes globales para comunicación con APIs:

import 'package:flutter_models_provider/flutter_models_provider.dart';

// Usar constantes predefinidas
final response = await http.post(
  uri,
  body: {
    EnvironmentApiRest.data: myData,
    EnvironmentApiRest.coleccion: 'usuarios',
  },
);

// Verificar respuesta
if (responseData[EnvironmentApiRest.inStatus] == EnvironmentApiRest.dataOk) {
  // Procesamiento exitoso
}

QueryResponseModel

Manejo estándar de respuestas del servidor:

import 'package:flutter_models_provider/flutter_models_provider.dart';

final response = QueryResponseModel(
  inStatus: 1,
  msgStatus: 'Operación exitosa',
  data: [
    {'usuario': 'Juan', 'email': 'juan@example.com'}
  ],
);

// Acceder a los datos
if (response.inStatus == 1) {
  print(response.data);
}

EstadoRegistro

Gestión de estados de registros en el sistema:

import 'package:flutter_models_provider/flutter_models_provider.dart';

// Obtener estado desde string
final estado = EstadoRegistro.fromString('A');
print(estado.descripcion); // 'Activo'
print(estado.color); // Color verde

// Usar en UI
Icon(
  estado.icon,
  color: estado.color,
)

PaginadoModel

Manejo de paginación en consultas:

import 'package:flutter_models_provider/flutter_models_provider.dart';

final paginado = PaginadoModel(
  coleccion: 'usuarios',
  totalItems: 100,
  skip: 0,
  limit: 10,
);

// Usar en consultas
print('Total de items: ${paginado.totalItems}');
print('Skip: ${paginado.skip}');
print('Limit: ${paginado.limit}');

LatLngModel

Manejo de coordenadas geográficas:

import 'package:flutter_models_provider/flutter_models_provider.dart';

final ubicacion = LatLngModel(-34.6037, -58.3816);

// Acceder a las coordenadas
print('Latitud: ${ubicacion.latitude}');
print('Longitud: ${ubicacion.longitude}');

Modelos Disponibles

Modelos Core

  • ColeccionBase: Clase abstracta base para colecciones
  • LatLngModel: Coordenadas geográficas
  • PaginadoModel: Gestión de paginación
  • QueryResponseModel: Respuestas del servidor
  • UploadRecivedModel: Carga de archivos
  • CampoEsquemaModel: Esquemas de campos dinámicos

Modelos ObjectBox

  • ColeccionObjectBoxModel: Modelo base para ObjectBox
  • ColeccionObjectBox1Model a ColeccionObjectBox5Model: Variantes especializadas

Enums Principales

  • EstadoRegistro: Estados de registros (Activo, Bloqueado, En Revisión, etc.)
  • TypeEsquema: Tipos de esquemas (object, array, string, number, etc.)
  • TipoDato: Tipos de datos (string, entero, decimal, fecha, etc.)
  • ModeToWork: Modo de trabajo (online/offline)
  • SocketServerStatus: Estado del servidor socket

Configuración de API REST

El paquete incluye rutas predefinidas para operaciones comunes:

// Rutas de autenticación
EnvironmentApiRest.rutaLoginPost        // '/auth/login_post'
EnvironmentApiRest.rutaObtieneToken     // '/auth/token'

// Rutas de colecciones
EnvironmentApiRest.rutaActualizarColeccion  // '/api/coleccion'
EnvironmentApiRest.rutagetKeyColeccion      // '/api/coleccion/getKey'

// Rutas de archivos
EnvironmentApiRest.rutaUploadFile      // '/api/subeArchivo'

Modo Online/Offline

El paquete soporta dos modos de trabajo:

enum ModeToWork { online, offline }

// Online: Los datos se actualizan primero en el servidor
// Offline: Los datos se actualizan primero en el dispositivo local

Contribuciones

Las contribuciones son bienvenidas. Por favor, abre un issue o pull request en el repositorio.

Licencia

Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.

Mantenimiento

Este paquete es mantenido por Roble Sistemas.