contains method

Future<bool> contains (Object needle)

Returns whether needle occurs in the elements provided by this stream.

Compares each element of this stream to needle using Object.==. If an equal element is found, the returned future is completed with true. If the stream ends without finding a match, the future is completed with false.

If the stream contains an error, or the call to Object.== throws, the returned future is completed with that error, and processing stops.

Implementation

Future<bool> contains(Object needle) {
  _Future<bool> future = new _Future<bool>();
  StreamSubscription subscription;
  subscription = this.listen(
      (T element) {
        _runUserCode(() => (element == needle), (bool isMatch) {
          if (isMatch) {
            _cancelAndValue(subscription, future, true);
          }
        }, _cancelAndErrorClosure(subscription, future));
      },
      onError: future._completeError,
      onDone: () {
        future._complete(false);
      },
      cancelOnError: true);
  return future;
}