maximum method

Stream<T> maximum(
  1. Comparator<T> comparator
)

Applies a comparator function over a Stream sequence and returns the maximum value so far. Waits until value is non-null to emit.

Example

Stream.fromIterable(['a', 'ab', 'abc', 'ab'])
   .maximum((e1, e2) => e1.length - e2.length)
   .listen(print); // prints 'a', 'ab', 'abc'

Implementation

Stream<T> maximum(Comparator<T> comparator) {
  T? maxSoFar;
  return map((element) {
    if (maxSoFar != null) {
      var comparison = comparator(maxSoFar!, element);
      if (comparison < 0) maxSoFar = element;
    } else {
      maxSoFar = element;
    }
    return maxSoFar!;
  }).distinctUnique();
}