- 0. Curso Flutter + .NET 8 + Novita AI: índice completo
- 1. Arquitectura Flutter + backend .NET 8 con Novita AI
- 2. Configurar entorno .NET 8 + Flutter + Firebase + Novita AI
- 3. Backend .NET 8: Auth Firebase y esqueleto API
- 4. Integrar Novita AI: text-to-image e image-to-image en .NET 8
- 5. Webhook Novita y procesamiento asíncrono
- 6. Firestore, modelos y endpoints de dominio
- 7. Flutter: login Google y configuración API
- 8. Flutter: subida de imagen y creación de invitaciones
- 9. Listado, estado y detalle de invitaciones
- 10. ControlNet completo en backend y Flutter
- 11. LLM con Novita: img2prompt y adaptación de prompts
- 12. Despliegue, checklist final y publicación WordPress
- Bonus 01: vídeo con FFmpeg y flujo opcional
- Bonus 02: importador de modelos Novita a Firestore
- Bonus 03: Prompt Generator y administración básica
Actualizado: 20 de febrero de 2026.
Ahora trabajamos la UX de seguimiento: cola, procesamiento, éxito o fallo.
Prerrequisitos
- Tener clonado o disponible
codigo/de esta serie. - Contar con Firebase y Novita configurados para pruebas.
- Haber completado el capítulo anterior del curso.
Paso 1: listado por stream
Archivo:
codigo/app/lib/screens/my_creations_screen.dart
Lee users/{uid}/public_invitations ordenado por createdAt.
Paso 2: detalle de invitación
Archivo:
codigo/app/lib/screens/invitation_detail_screen.dart
Muestra:
- preview/final URL
- orientación
- acciones de compartir/editar
Paso 3: estados soportados
Modelo compartido:
TASK_STATUS_QUEUEDTASK_STATUS_PROCESSINGTASK_STATUS_SUCCEEDTASK_STATUS_FAILED
Paso 4: consistencia backend-app
Backend escribe estado en Firestore y app lo consume por stream, sin polling manual adicional en UI.
Verificación rápida
cd codigo/app
rg -n "TASK_STATUS_|public_invitations|InvitationDetailScreen" lib -S
Troubleshooting
- No aparecen invitaciones: revisa usuario autenticado y colección Firestore.
- Queda en queued: webhook no está actualizando.
- Imagen rota: URL expirada o subida fallida.
FAQ corta
¿La app llama endpoint para refrescar estado?
No, el listado principal usa stream de Firestore.
¿Qué documento actualiza el backend?
users/{uid}/public_invitations/{id} y copia pública si aplica.
¿Se puede forzar reintento?
Puedes lanzar nueva invitación desde create.
Fuente verificada
- Código del curso:
codigo/app/lib/screens/my_creations_screen.dartcodigo/app/lib/screens/invitation_detail_screen.dartcodigo/app/lib/models/invitation_status.dart
Share this content: