Lienzo Abierto: una galería de imágenes para aprender, adaptar y hacer tuya
Una galería de imágenes con búsqueda, favoritos e importación local. Código abierto, ilustraciones de ejemplo y un recorrido para adaptarla.
Implementa en Flutter la subida de imagen a Firebase Storage y la creación de invitaciones IA llamando a un backend .NET con Novita.

Actualizado: 20 de febrero de 2026.
En este capítulo cierras el flujo de entrada de usuario: prompt, foto, estilo y envío al backend.
codigo/ de esta serie.Archivo:
codigo/app/lib/screens/create_invitation_screen.dartComponentes principales:
Archivo:
codigo/app/lib/services/api_service.dartuploadFile(File file):
Se envían campos como:
photoUrl (si hay imagen)prompt (si hay texto)modelBaseId y opcional loraIdformat, orientation, stylecreateInvitation(Map<String, dynamic> request) hace POST /api/invitations/create.
cd codigo/app
rg -n "createInvitation|uploadFile|photoUrl|modelBaseId" lib -S
create devuelve 400: payload incompleto (modelo/prompt/imagen).Sí, el backend usa txt2img cuando no hay photoUrl.
Sí, si hay photoUrl el backend usa img2img.
En “Mis Creaciones” cuando webhook actualiza la invitación.
codigo/app/lib/screens/create_invitation_screen.dartcodigo/app/lib/services/api_service.dartcodigo/backend/InvitaIA.Api/Controllers/InvitationsController.cs