Implementación de función para capturar transacciones desde imágenes

Clase 23 de 29Curso de Integración Módulos Nativos iOS/Android para Flutter

Resumen

En la creación de aplicaciones móviles con Flutter, desarrollar métodos eficientes para registrar transacciones es esencial. Integrar la lectura de montos desde imágenes utilizando la metodología Block permite mejorar significativamente esta experiencia de usuario.

¿Cómo agregar una transacción desde una imagen en un proyecto Flutter?

La implementación de esta característica se inicia creando un nuevo evento dentro del bloque (block) encargado de administrar las transacciones. A continuación, te explicamos los pasos esenciales:

  • Define una función asíncrona denominada transaction from image.
  • Esta función emitirá inicialmente un estado de carga, indicando al usuario que se realiza un proceso.
  • Utiliza un bloque try-catch para manejar la extracción del monto.

¿Cómo se establece la lógica para extraer y validar montos desde imágenes?

En la parte lógica del bloque, es importante validar y gestionar datos del monto capturado desde la imagen:

  • La extracción del monto quedará pendiente a través de una función que posteriormente agregarás al repositorio, llamada extraer monto de imagen.
  • Valida que el monto extraído sea mayor a cero para asegurar su validez.
  • Emite un mensaje de error específico en caso de no obtener un monto válido, indicando al usuario que el monto no fue identificado correctamente.

¿Qué elementos necesitas configurar adicionalmente para registrar correctamente la transacción?

Utiliza el modelo previamente creado Income Expense para estandarizar y estructurar la información de la transacción:

  • Convierte el monto extraído para corresponder al tipo de datos esperado (en este caso un entero).
  • Agrega una descripción de la transacción indicando que fue "autodetectado".
  • Captura automáticamente la fecha y hora actual asignando datetime.now.
  • Define el tipo de ingreso o gasto; en este caso específico, al tratarse de recibos, se clasificará como expense.
  • Realiza finalmente una función de repositorio (agregar transacción) para registrar efectivamente esta información.

Al final de estos pasos, realiza una actualización de la lista de transacciones mediante el método fetch y actualiza correctamente el estado utilizando el evento transaction loaded. Además, asegura la captura de errores para ofrecer retroalimentación clara al usuario sobre posibles problemas en el procesamiento.