flutter_models_provider 1.0.1
flutter_models_provider: ^1.0.1 copied to clipboard
Modelos de datos reutilizables y configuración de entorno para aplicaciones Flutter con APIs REST y ObjectBox.
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 coleccionesLatLngModel: Coordenadas geográficasPaginadoModel: Gestión de paginaciónQueryResponseModel: Respuestas del servidorUploadRecivedModel: Carga de archivosCampoEsquemaModel: Esquemas de campos dinámicos
Modelos ObjectBox #
ColeccionObjectBoxModel: Modelo base para ObjectBoxColeccionObjectBox1ModelaColeccionObjectBox5Model: 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.