skipWhile

Omite valores mientras un predicado devuelva true y luego emite todo lo demás, coincida o no.

Iterable<A> skipWhile<A>(bool Function(A a) f, Iterable<A> iterable) FxAsyncIterable<A> skipWhileAsync<A>(FutureOr<bool> Function(A a) f, FxAsyncIterable<A> iterable) Fx<T> Fx.skipWhile(bool Function(T a) f) // chain FxAsync<T> FxAsync.skipWhile(FutureOr<bool> Function(T a) f) Iterable<A> dropWhile<A>(...) // FxTS alias

Lección

skipWhile es el espejo de takeWhile: omite elementos mientras el predicado se cumpla y, en cuanto encuentra uno que falla, cambia definitivamente al modo «emitir todo». Ese cambio es permanente: una vez que skipWhile empieza a dejar pasar valores, ya nunca vuelve a descartar, aunque un elemento posterior también hubiera coincidido.

Recurre a él para recortar un prefijo de longitud variable que no puedes contar de antemano: tokens iniciales tipo espacio en blanco, filas de cabecera, un periodo de calentamiento en un flujo de métricas. skipWhile es el nombre idiomático en Dart, en línea con Iterable.skipWhile; fxdart también acepta la grafía dropWhile de FxTS: son el mismo operador.

Demo 1 · Fundamentos

Una vez que el descarte se detiene en 3, los valores coincidentes posteriores (el 2 del final) se conservan, no se vuelven a descartar:

Demo 2 · Asíncrono

Pruébalo tú

Ejercicio: omite las temperaturas mientras se mantengan por debajo de 25 y luego conserva el resto.

Relacionado: takeWhile — el inverso · dropUntil — descarta también el elemento coincidente · drop — descarta por número fijo · filter — descarta coincidencias en cualquier posición, no solo en un prefijo