combineLatest

En cada evento de cualquiera de los dos lados, emite combine de los dos valores más recientes — una vez que ambos lados han hablado al menos una vez.

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

Lección

Un formulario es válido cuando el nombre de usuario actual y la contraseña actual pasan ambos — dos streams tecleados de forma independiente, un estado derivado que debe ser correcto tras cada pulsación en cualquiera de los dos. combineLatest(other, combine) es esa forma: recuerda el último valor de cada lado, y cada evento de cualquiera de los streams vuelve a ejecutar combine sobre el par fresco.

Las reglas, con precisión. Nada se emite hasta que ambos lados han producido al menos un valor — no existe el par a medio inicializar. A partir de ahí, un evento de entrada produce exactamente un evento de salida. Y un lado que se cierra deja de actualizar, pero su último valor sigue en juego: el resultado solo se cierra cuando ambos lados se han cerrado.

Elige tu combinador según quién dispara. Si las actualizaciones de cualquiera de los dos lados deben re-derivar el estado, este es tu operador. Si solo los eventos de la fuente deben disparar — con el otro stream meramente consultado por su último valor — eso es withLatestFrom. Contrasta con el zip del mundo pull, que empareja el n-ésimo con el n-ésimo; combineLatest empareja lo más nuevo con lo más nuevo y nunca espera a que los índices se alineen. Capa de eventos de fxdart, según el operador Rx del mismo nombre.

Demo 1 · Validación de formulario desde dos campos

Demo 2 · Un lado cerrado mantiene su última palabra

Pruébalo tú

Ejercicio: un estado de pantalla a partir de dos sensores.

Relacionado: withLatestFrom — unilateral: solo los eventos de la fuente emiten · zip — emparejamiento alineado por índice en el mundo pull · LiveValue — cuando lo que necesitas es el valor actual en sí