vivienda_sdk
SDK Flutter de Genesis Vivienda AR — plataforma de Fundación Génesis Empresarial para visualizar, simular y cotizar remodelaciones de viviendas asistidas por IA.
El paquete entrega el flujo completo listo para usar: registro de solicitud por DPI, captura de foto, rediseño con IA, resultado y cotización.
Características
- Flujo guiado tipo stepper de 5 pasos, sin
AppBar, con botón "Continuar" persistente en la parte inferior de cada pantalla. - Pantalla de inicio con DPI + términos y condiciones (validación de 13 dígitos y aceptación obligatoria de los T&C legales de Genesis Vivienda AR).
- Captura/selección de foto con validación de formato y tamaño, y manejo de permisos.
- Rediseño con IA a partir de opciones de catálogo (KPIs).
- Resultado con comparación antes/después y ajuste de dimensiones del área.
- Cotización generada por la API con detalle de materiales y costos.
- Capa de red centralizada (
ViviendaApiService+ApiEndpoints) fácil de configurar por entorno. - Tema y tokens de diseño propios (
RoomReviveTheme,RoomReviveTokens).
Requisitos
- Flutter
>= 1.17.0, Dart SDK^3.9.2. - Android: permiso
CAMERAen la app host para capturar fotos. La galería usa el selector del sistema conimage_picker; no requiereREAD_MEDIA_IMAGESniREAD_EXTERNAL_STORAGEy puede conservarse su eliminación contools:node="remove". - iOS: configurar
NSCameraUsageDescriptionyNSPhotoLibraryUsageDescriptionen elInfo.plistde la app host.image_pickergestiona el acceso a la galería.
Dependencias principales
google_fonts, http, http_parser, image_picker, permission_handler.
Instalación
dart pub add vivienda_sdk
Importar:
import 'package:vivienda_sdk/vivienda_sdk.dart';
Uso
RoomReviveScreen es el punto de entrada del flujo. El resto de las pantallas se
navegan internamente.
import 'package:flutter/material.dart';
import 'package:vivienda_sdk/vivienda_sdk.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Genesis Vivienda',
theme: RoomReviveTheme.lightTheme(),
home: RoomReviveScreen(
numeroPromotor: 4543, // proviene del padre / sesión
sourceApp: 'genesis-vivienda-app', // proviene del padre
onDpiSubmitted: (dpi) => debugPrint('DPI: $dpi'),
onSolicitudCreated: (id) => debugPrint('Solicitud: $id'),
onPhotoSelected: (path) => debugPrint('Foto galería: $path'),
onPhotoCaptured: (path) => debugPrint('Foto cámara: $path'),
),
);
}
}
Ver un ejemplo ejecutable en example/main.dart.
Flujo de pantallas
| Paso | Pantalla | Acción del botón inferior |
|---|---|---|
| 1 | RoomReviveScreen (DPI + términos) |
Registra la solicitud (POST /solicitudes) y avanza |
| 2 | RoomReviveScreen (Foto) |
Analiza la foto (detect-kpis) y navega |
| 3 | RoomRedesignStepScreen |
Genera imagen con IA (images/generate) |
| 4 | RoomRedesignResultScreen |
Genera cotización (analyze-improvement) |
| 5 | QuotationResultScreen |
— (pantalla final) |
El id de la solicitud se propaga como solicitudId a través de todo el flujo.
Servicios y endpoints
Toda la lógica HTTP vive en lib/src/services/.
ApiEndpoints(api_endpoints.dart): punto único de configuración de URLs ydefaultApiKey. CambiabaseUrlpara apuntar a dev/staging/prod.ViviendaApiService(vivienda_api_service.dart): métodos del flujo, cada uno conapiKeyyendpointopcionales:createSolicitud({ dpi, numeroPromotor, sourceApp })→POST /solicitudesdetectKpis({ imagePath })→POST /vision/detect-kpisgenerateImage({ prompt, imagePath })→POST /images/generaterequestQuotation({ ... })→POST /agent/analyze-improvement
Para más detalle de integración ver
INTEGRACION.md.
Estructura del proyecto
lib/
vivienda_sdk.dart # Exports públicos
src/
components/ # UI reutilizable (FlowStepper, modales, cards…)
screens/ # Pantallas del flujo
services/ # Capa de red (endpoints + servicio)
models/ # Modelos de datos
data/ # Catálogos estáticos
theme/ # Tema y tokens de diseño
assets/images/ # Imágenes del catálogo
example/ # App de ejemplo
Configuración
- Entorno: ajustar
ApiEndpoints.baseUrlo sobreescribir cada endpoint por parámetro en las pantallas/servicios. - API key: reemplazar
ApiEndpoints.defaultApiKeyo inyectarla vía parámetros según las políticas de seguridad del equipo. - Datos del padre:
numeroPromotorysourceAppse pasan desde la app host aRoomReviveScreen.
Información adicional
- Documento de implementación para equipos:
INTEGRACION.md. - Diseño y notas técnicas:
DESIGN.md,IMPLEMENTATION.md. - Cambios:
CHANGELOG.md.
Desarrollado y administrado por Fundación Génesis Empresarial.