8. Flutter: subida de imagen y creación de invitaciones

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.

Prerrequisitos

  1. Tener clonado o disponible codigo/ de esta serie.
  2. Contar con Firebase y Novita configurados para pruebas.
  3. Haber completado el capítulo anterior del curso.

Paso 1: pantalla de creación

Archivo:

  • codigo/app/lib/screens/create_invitation_screen.dart

Componentes principales:

  1. Selector de estilo base/LoRA.
  2. Prompt libre.
  3. Selector de foto (cámara/galería).
  4. Botón “Generar”.

Paso 2: subida de imagen

Archivo:

  • codigo/app/lib/services/api_service.dart

uploadFile(File file):

  1. Redimensiona si hace falta.
  2. Sube a Firebase Storage.
  3. Devuelve URL pública.

Paso 3: construir request de creación

Se envían campos como:

  1. photoUrl (si hay imagen)
  2. prompt (si hay texto)
  3. modelBaseId y opcional loraId
  4. format, orientation, style

Paso 4: llamada al backend

createInvitation(Map<String, dynamic> request) hace POST /api/invitations/create.

Verificación rápida

cd codigo/app
rg -n "createInvitation|uploadFile|photoUrl|modelBaseId" lib -S

Troubleshooting

  1. Error de subida: revisa reglas de Storage y sesión autenticada.
  2. create devuelve 400: payload incompleto (modelo/prompt/imagen).
  3. Error CORS en web: ajusta policy en backend.

FAQ corta

¿Puedo crear invitación solo con prompt?

Sí, el backend usa txt2img cuando no hay photoUrl.

¿Puedo crear solo con imagen?

Sí, si hay photoUrl el backend usa img2img.

¿Dónde se ve el resultado final?

En “Mis Creaciones” cuando webhook actualiza la invitación.

Fuente verificada

  • Código del curso:
    • codigo/app/lib/screens/create_invitation_screen.dart
    • codigo/app/lib/services/api_service.dart
    • codigo/backend/InvitaIA.Api/Controllers/InvitationsController.cs

Tutoriales relacionados