withLatestFrom

En cada evento de la fuente, emite combine de ese evento y el último valor del otro stream — el otro lado es contexto, no disparador.

FxEvents<R> FxEvents<T>.withLatestFrom<U, R>(Stream<U> other, R Function(T a, U b) combine) // chain (events)

Lección

Una petición se dispara y debe llevar la versión de configuración vigente en ese momento. Llega un pedido y debe cotizarse al tipo de cambio de ahora mismo. Hay dos streams implicados, pero no son iguales: uno conduce, el otro se consulta. withLatestFrom(other, combine) codifica esa asimetría — cada evento de la fuente emite combine(event, latestOfOther), mientras que los eventos en other actualizan su valor recordado y no emiten nada.

Esa unilateralidad es toda la diferencia con combineLatest, donde ambos lados disparan. Elige preguntándote: ¿una actualización de configuración debe producir salida por sí sola? Si sí, combineLatest; si la configuración solo importa cuando una petición resulta dispararse, withLatestFrom.

Los bordes, con honestidad. Los eventos de la fuente que disparan antes de que other haya producido algo se descartan — no hay último valor con el que sellarlos (dale a other una semilla con startWith si esa pérdida no te conviene). La vida útil sigue a la fuente: cuando se cierra, la cadena se cierra, y el cierre de other simplemente se ignora — un feed en vivo en el lado del contexto nunca mantiene abierto el pipeline. Capa de eventos de fxdart, según el operador Rx del mismo nombre.

Demo 1 · Sellando peticiones con la configuración actual

Demo 2 · El otro lado nunca dispara, nunca bloquea

Pruébalo tú

Ejercicio: cotiza cada pedido al tipo de cambio de su momento.

Relacionado: combineLatest — ambos lados disparan · sampleOn — la idea de disparador y último valor, sin combinar · fxEventsstartWith, para sembrar el lado del contexto