countWhere

¿Cuántos cumplen? Una pasada, un número — filter + size, fusionados.

int countWhere<A>(bool Function(A a) f, Iterable<A> iterable) Future<int> countWhereAsync<A>(FutureOr<bool> Function(A a) f, FxAsyncIterable<A> iterable) int Fx<T>.countWhere(bool Function(T a) f) // chain (sync) Future<int> FxAsync<T>.countWhere(FutureOr<bool> Function(T a) f) // chain (async)

Lección

«¿Cuántos de estos están vencidos / en oferta / son pares?» se seguía escribiendo como filter(pred).size() — dos pasos de cadena y un intermedio perezoso para lo que conceptualmente es un solo fold. countWhere(pred) es ese fold: recorre el pipeline una vez, incrementa en cada coincidencia y devuelve el conteo. Nada se materializa por el camino.

Usa countBy cuando quieras conteos por clave (un mapa de ellos), y countWhere cuando el conteo de un solo predicado sea toda la respuesta. El gemelo async espera su predicado por elemento, como todo operador *Async.

Adición nativa de Dart — la forma del count { } de Kotlin.

Demo 1 · Un predicado, un número

Demo 2 · Async

Pruébalo tú

Ejercicio: cuenta los precios de respaldo sin un filter.

Relacionados: countBy — conteos por clave · size/count — contarlo todo · filter — cuando necesitas las coincidencias en sí