Метод take
Метод take класса Stream создает
новый поток, который передает только первые
n элементов исходного потока. После этого
новый поток завершается. В первый параметр
мы передаем количество элементов, которое
нужно взять из исходного потока. Если исходный
поток содержит меньше элементов, чем указано
в параметре, то новый поток просто завершится
после передачи всех имеющихся элементов.
Синтаксис
Stream<T> take(int count)
Пример
Давайте создадим поток из списка чисел и возьмем из него только первые три элемента:
void main()
{
Stream<int> stream = Stream.fromIterable([1, 2, 3, 4, 5]);
Stream<int> res = stream.take(3);
res.listen((value) {
print(value);
});
}
Результат выполнения кода:
1
2
3
Пример
Давайте попробуем взять больше элементов, чем есть в исходном потоке:
void main()
{
Stream<String> stream = Stream.fromIterable(['a', 'b', 'c']);
Stream<String> res = stream.take(5);
res.listen((value) {
print(value);
});
}
Результат выполнения кода:
"a"
"b"
"c"
Пример
Давайте применим метод take к потоку,
созданному с помощью Stream.periodic,
и возьмем только первые два значения:
void main()
{
Stream<int> stream = Stream.periodic(
Duration(seconds: 1),
(int count) => count
);
Stream<int> res = stream.take(2);
res.listen((value) {
print(value);
});
}
Результат выполнения кода:
0
1