Frozen-Burrito / hydrate-app

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

[BUG] Cancelar el dialog de fecha al crear una nueva meta produce una `DatabaseException` #49

Closed Frozen-Burrito closed 2 years ago

Frozen-Burrito commented 2 years ago

Descripción del Error Cuando el usuario intenta crear una nueva meta y le asigna fechas de inicio y fin, si el usuario vuelve a abrir el DatePicker y presiona el botón "cancelar", la fecha respectiva toma un valor null y no se incluye en el query para insertar la meta en la BD local. Esto produce un DatabaseException.

Cómo Reproducir Pasos para reproducir el error:

  1. Navegar a la vista de creación de nuevas metas de hidratación.
  2. Completar el formulario correctamente.
  3. Ya sea en la fecha inicial o en la fecha final, abrir nuevamente su DatePicker y presionar el botón "cancelar".
  4. Presionar el botón "crear".
  5. Notar el error de BD.

Comportamiento Esperado El usuario debería poder cancelar un DatePicker sin "eliminar" el valor previo. Debe haber congruencia entre el modelo de Goal y su esquema en la BD local (así como con su esquema de la API REST).

Entorno

Contexto Adicional El error se repite infinitamente, como si la app siguiera intentando insertar la nueva meta indefinidamente.

Frozen-Burrito commented 2 years ago

El problema inicial ha sido corregido al hacer Goal.startDate y Goal.endDate no-nullables. Había una inconsistencia entre el esquema de la base de datos local y el modelo en Dart.

Sin embargo, es posible enviar el formulario vacío, o cuando no tiene ciertos valores que deberían ser requeridos. En algunas ocasiones, se producen Exception no manejadas, en otras, se crea la nueva meta con datos por default.

Frozen-Burrito commented 2 years ago

El problema ha sido arreglado, el formulario para crear una nueva meta usa un BLoC simple para determinar si el usuario puede enviar el formulario y obtener los valores a través de streams. Hace falta probar más a fondo el BLoC.