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.
Libraries
- flutter_models_provider
- global/environment
- model/campo_esquema_model
- model/coleccion_base_model
- model/latlong_model
- model/objectbox/coleccion_objectbox_1_model
- model/objectbox/coleccion_objectbox_2_model
- model/objectbox/coleccion_objectbox_3_model
- model/objectbox/coleccion_objectbox_4_model
- model/objectbox/coleccion_objectbox_5_model
- model/objectbox/coleccion_objectbox_model
- model/paginado_model
- model/query_response_model
- model/upload_file_recived_model
- utils/temp_utils