Contenido del curso
Fundamentos de BLoC y Firebase
Navegación y Autenticación
- 10

BlocProvider y RepositoryProvider en Flutter
06:24 min - 11

Pantalla de login con BlocListener en Flutter
11:12 min - 12

Creación y Validación de Formularios en Flutter con Firebase
17:43 min - 13

Rutas en Flutter con GoRouter y Firebase Auth
15:46 min - 14

Conectar botón de login con Firebase Auth
11:34 min - 15

Cómo implementar logout con Firebase y GoRouter
10:30 min
Diseño Avanzado en iOS
Integración con Firestore usando BLoC
- 18

Modelo e repositório Firestore para BLoC
16:43 min - 19

Manejo de Estados y Eventos en Flutter con Bloc para Finanzas
09:57 min - 20

Agregar transacciones en Firebase con Flutter Bloc
06:41 min - 21

Eliminar Transacciones con Firebase en Flutter
05:29 min - 22

MultiBlocProvider con auth y transacciones en Flutter
06:06 min
Funcionalidades con BLoC
- 23

BlocBuilder para mostrar datos en Flutter
15:13 min - 24

Integración de Gráficas y Estados en Aplicaciones Flutter
11:50 min - 25

Creación de Listados Dinámicos en Aplicaciones Flutter
18:25 min - 26

Configuración de Balance y Estados en Pantalla de Wallet
07:12 min - 27

Lista de Transacciones en Aplicaciones Móviles
04:02 min - 28

Agregar Transacciones en Firebase con Flutter y Bloc
10:55 min - 29

Eliminar transacciones en Flutter con BLoC y Firebase
Viendo ahora
Testing
Eliminar transacciones en Flutter con BLoC y Firebase
Resumen
Eliminar transacciones en Flutter con Firebase usando el patrón BLoC permite mantener tu aplicación sincronizada en tiempo real y con una experiencia de usuario fluida. Aquí verás cómo conectar el ícono de borrado con el evento DeleteTransaction, validar el id recibido y comprobar que la base de datos en Firestore responde casi al instante.
¿Cómo conectar el botón eliminar con el BLoC de transacciones?
El flujo parte desde el TransactionList dentro del Wallet, donde ya tenías un ícono preparado para borrar. Lo que falta es enviar el evento al bloc para que ejecute la lógica.
Usa context.read sobre el IncomeExpenseBloc y dispara el método .add con el evento DeleteTransaction. Ese evento espera un id de tipo String, así que le pasas transaction.id.
¿Qué hace context.read en Flutter BLoC? Te da acceso al BLoC más cercano en el árbol de widgets sin escuchar cambios. Es ideal para disparar eventos como agregar o eliminar, donde solo necesitas comunicarte una vez.
Como el id es requerido, conviene evaluar el caso en el que no exista y enviar un string vacío como fallback. Con eso evitas errores en tiempo de ejecución cuando un documento no tenga el campo poblado.
dart context.read<IncomeExpenseBloc>().add( DeleteTransaction(transaction.id ?? ''), );
¿Cómo se ve el borrado en tiempo real con Firestore?
Al probar la funcionalidad en la pantalla de Transactions, seleccionas cualquier registro y se elimina al instante. Lo interesante es que toda la aplicación se actualiza en cuestión de segundos.
Esto incluye varios elementos visuales que dependen del mismo estado:
- El gráfico principal con la distribución de income y expense.
- Los montos totales que suben o bajan según la transacción borrada.
- El listado del wallet que refleja la nueva colección.
- Los contadores por
transactionTypeagrupados.
La ventaja de tener un BLoC centralizado es justamente esa: un solo evento dispara la actualización de todos los widgets suscritos al estado.
¿Por qué conviene mostrar un modal de confirmación?
Eliminar con un solo toque es rápido, pero también riesgoso. Si el usuario presiona el ícono por accidente, pierde el dato sin posibilidad de recuperarlo.
La práctica recomendada es agregar un modal que pregunte si la persona está segura de borrar el monto antes de despachar el evento. Es un detalle pequeño que mejora mucho la confianza en la aplicación.
¿Cómo verificar las transacciones en la consola de Firebase?
Después de agregar entradas como un salaryExtra marcado como income, puedes abrir la consola de Firebase y revisar la colección directamente.
Al actualizar la data en Firestore, encuentras todos los documentos creados desde la app. Cada uno trae un autoID que nunca generaste manualmente: lo creó Firestore automáticamente al usar add.
¿Qué es un autoID en Firestore? Es un identificador único que Firebase genera al insertar un documento con el método
add. Te ahorra crear lógica para evitar colisiones y sirve como llave primaria del documento.
También verás cómo la fecha se guardó usando Date.now, lo que te permite ordenar y filtrar por timestamp sin trabajo extra. Curiosear los documentos te ayuda a entender la conexión directa entre la app y la base de datos.
¿Qué funcionalidades de un CRUD quedan cubiertas?
Con el borrado integrado, ya tienes la mayor parte de un CRUD funcionando contra Firebase:
- Crear transacciones con
addyautoIDautomático. - Leer la colección en tiempo real desde Firestore.
- Eliminar documentos con el evento
DeleteTransaction.
Falta sumar el actualizar, que es el siguiente paso natural. Te invito a implementarlo y compartir en los comentarios cómo te quedó la funcionalidad de update en tu propia app.
Habilidades y conceptos clave del flujo de borrado
Estos son los puntos técnicos que aparecieron y que conviene tener claros:
context.read<Bloc>(): accede al BLoC sin escuchar cambios, perfecto para disparar eventos puntuales [00:10].- Evento
DeleteTransaction: recibe unidde tipoStringy lo procesa en el BLoC para eliminar el documento [00:25]. - Validación de id nulo: enviar string vacío como fallback evita crashes cuando el dato no existe [00:35].
- Reactividad del BLoC: un solo evento actualiza gráfico, montos, lista y wallet simultáneamente [01:10].
autoIDde Firestore: identificador generado automáticamente al usaradd, sin lógica manual [02:15].Date.nowpara timestamps: registra la fecha de creación para ordenar transacciones [02:30].