distinctUnique method

Stream<T> distinctUnique({
  1. bool equals(
    1. T previous,
    2. T next
    )?,
})

Implementation

Stream<T> distinctUnique({bool Function(T previous, T next)? equals}) {
  final emitted = <T>[];
  return where((event) {
    final duplicate = emitted.any(
      (previous) => equals?.call(previous, event) ?? previous == event,
    );
    if (!duplicate) emitted.add(event);
    return !duplicate;
  });
}