contains
Devuelve true cuando un iterable contiene un valor, comparado con ==.
Lección
contains es el nombre idiomático en Dart para comprobar la
pertenencia, y en una cadena ya lo tienes: Fx hereda
.contains() de Iterable, así que
fx(xs).contains(a) funciona sin más. Eso sí, no existe una
función contains de nivel superior — el nombre choca con el
matcher de package:test —, de modo que la forma data-first
conserva su grafía de FxTS, includes(a, iterable), que es
literalmente iterable.contains(a). La
versión asíncrona, includesAsync, está construida sobre
someAsync (con b == a
como predicado), lo que significa que hereda el mismo cortocircuito: deja
de tirar de la fuente en cuanto encuentra una coincidencia.
La igualdad se comprueba con el == de Dart, así que respeta
cualquier redefinición de operator == en tus propias clases —
no se limita a los tipos primitivos.
Demo 1 · Fundamentos
Demo 2 · Async, y la prueba del cortocircuito
Solo se piden 2 de los 5 elementos antes de que includesAsync se detenga:
Pruébalo tú
Ejercicio: usa contains para comprobar si requestId está permitido.