9. Listado, estado y detalle de invitaciones

9. Listado, estado y detalle de invitaciones

Actualizado: 20 de febrero de 2026.

Ahora trabajamos la UX de seguimiento: cola, procesamiento, éxito o fallo.

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: 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:

  1. preview/final URL
  2. orientación
  3. acciones de compartir/editar

Paso 3: estados soportados

Modelo compartido:

  • TASK_STATUS_QUEUED
  • TASK_STATUS_PROCESSING
  • TASK_STATUS_SUCCEED
  • TASK_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

  1. No aparecen invitaciones: revisa usuario autenticado y colección Firestore.
  2. Queda en queued: webhook no está actualizando.
  3. 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.dart
    • codigo/app/lib/screens/invitation_detail_screen.dart
    • codigo/app/lib/models/invitation_status.dart

Share this content:

Curso Flutter y .NET 8 con Novita AI: índice completo paso a paso

. Flutter: subida de imagen y creación de invitaciones 0. ControlNet completo en backend y Flutter

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.