Метод distinct
Метод distinct класса Stream создает новый поток,
который пропускает элементы, если они равны предыдущему
элементу. По умолчанию сравнение происходит с помощью
оператора ==. В первый параметр можно передать
функцию сравнения, которая принимает два элемента и
возвращает true, если они считаются одинаковыми.
Синтаксис
Stream<T> distinct([bool Function(T previous, T next)? equals])
Пример
Давайте создадим поток из списка с повторяющимися элементами и удалим дубликаты:
void main()
{
Stream.fromIterable([1, 2, 2, 3, 3, 3, 4, 5, 5])
.distinct()
.toList()
.then((res) => print(res));
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Давайте передадим функцию сравнения, которая будет считать элементы одинаковыми, если они имеют одинаковую длину строки:
void main()
{
Stream.fromIterable(['a', 'bb', 'cc', 'ddd', 'ee'])
.distinct((prev, next) => prev.length == next.length)
.toList()
.then((res) => print(res));
}
Результат выполнения кода:
[a, bb, ddd, ee]