ifEmpty
Cambia a un respaldo cuando el pipeline resulta estar vacío — decidido perezosamente, en el momento de iterar.
Lección
Un pipeline que podría no producir nada suele forzar un
desvío: materializarlo, comprobar isEmpty, ramificar.
Eso rompe la cadena y — peor — ejecuta el pipeline antes de lo que
querías. ifEmpty(fallback) pliega esa rama dentro del
propio pipeline: los valores pasan intactos, y solo si la fuente
termina sin producir nada toma el relevo el iterable de respaldo. La
función de respaldo ni siquiera se llama en caso contrario —
perezoso en ambas direcciones.
defaultIfEmpty(value) es el atajo de un solo valor: la
fila de relleno, el 0 para un informe vacío, el marcador
de «sin resultados». Ambos componen en cualquier punto de la cadena,
lo cual importa tras un filtrado agresivo — la vacuidad la decide lo
que llegue hasta este punto, no la fuente original.
Extensión de fxdart (sin contraparte en FxTS), inspirada en
switchIfEmpty / defaultIfEmpty de Rx. Las
formas async aceptan una cadena de respaldo asíncrona y un valor por
defecto en Future, y componen con
concurrent.
Demo 1 · Un valor por defecto para el informe vacío
Demo 2 · Fuente de respaldo, jamás tocada si no hace falta
Pruébalo tú
Ejercicio: busca con una consulta de respaldo.