Метод distinct
- [bool equals(
- T previous,
- T next
Пропускает события данных, если они равны предыдущему событию данных.
Возвращаемый поток предоставляет те же события, что и этот поток, за исключением того, что он никогда не предоставляет два последовательных события данных, которые равны. То есть ошибки передаются в возвращаемый поток, а события данных передаются, если они отличаются от последнего выданного события данных.
Равенство определяется предоставленным методом equals. Если он не указан, используется оператор '==' для последнего предоставленного элемента данных.
Если equals выбрасывает исключение, событие данных заменяется событием ошибки, содержащим выброшенную ошибку. Поведение эквивалентно тому, как если бы исходный поток выдал событие ошибки, и это не меняет последнее выданное событие данных.
Возвращаемый поток является широковещательным, если таким является этот поток. Если широковещательный поток прослушивается более одного раза, каждая подписка отдельно выполняет проверку equals.
Пример:
final stream = Stream.fromIterable([2, 6, 6, 8, 12, 8, 8, 2]).distinct(); stream.forEach(print); // Outputs events: 2,6,8,12,8,2.
Реализация
Stream<T> distinct([bool equals(T previous, T next)?]) {
return new _DistinctStream<T>(this, equals);
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-async/Stream/distinct.html