Frozen-Burrito / hydrate-app

Repositorio para la app de apoyo de la botella hydrate, desarrollada con Flutter.
2 stars 0 forks source link

[BUG] Problemas en el `build()` de `InitialForm` cuando es usado para la creación de perfil #11

Closed Frozen-Burrito closed 2 years ago

Frozen-Burrito commented 2 years ago

Descripción del Error El widget InitialForm usa un FutureBuilder para obtener el perfil de usuario actual cuando es usado en la página de perfil. El problema sucede cuando InitialForm es usado para crear el primer perfil local, porque todavía no hay un perfil de usuario creado. Esto hace que se quede intentando obtener un perfil indefinidamente.

Cómo Reproducir Pasos para reproducir el error:

  1. Instalar una nueva instancia de la app (no actualizar una versión con perfiles ya creados)
  2. Abrir la app
  3. Ver el error

Comportamiento Esperado Cuando el usuario abre la app por primera vez, la app debería mostrar el formulario de inicio para que el usuario cree su perfil. El usuario puede elegir no completar los datos del perfil inicial, pero siempre debe mostrarse el formulario.

Entorno

Frozen-Burrito commented 2 years ago

Error inicial arreglado al hacer que InitialForm no acceda directamente al perfil de usuario actual (lo que requiere esperar a que se complete el Future proporcionado por ProfileProvider) y no necesite usar un FutureBuilder para construir sus widgets. En cambio, InitialForm ahora depende solamente de profileChanges y solo modifica el perfil de usuario indirectamente al invocar saveProfileChanges().

Además, InitialForm fue renombrado a ProfileForm, un nombre más adecuado considerando que es usado en el formulario inicial y en la vista de perfil, para recolectar datos de perfil de usuario.

La solución también incluye correcciones de errores mayores en SQLiteDB, especialmente con la creación y actualización de registros con relaciones muchos a muchos. Otras mejoras incluyen mejor manejo de errores, mejor documentación y más indicadores visuales en el proceso de modificación de perfil.