Метод forEach
Метод forEach класса Stream выполняет
указанную функцию для каждого элемента потока.
В первый параметр мы передаем функцию-обработчик,
которая будет вызвана для каждого элемента потока.
Метод возвращает Future, который завершается,
когда все элементы потока будут обработаны.
Метод forEach удобно использовать для
выполнения побочных действий с элементами потока:
вывода в консоль, записи в файл или отправки данных.
При этом сам метод не изменяет поток и не возвращает
новый поток, а лишь выполняет перебор его элементов.
Синтаксис
stream.forEach(void Function(T element) action)
Пример
Давайте создадим поток из списка и выведем каждый его элемент в консоль:
void main()
{
Stream stream = Stream.fromIterable(['a', 'b', 'c', 'd', 'e']);
stream.forEach((element) {
print(element);
});
}
Результат выполнения кода:
"a"
"b"
"c"
"d"
"e"
Пример
Давайте создадим поток из списка чисел и выведем квадрат каждого числа:
void main()
{
Stream stream = Stream.fromIterable([1, 2, 3, 4, 5]);
stream.forEach((element) {
print(element * element);
});
}
Результат выполнения кода:
1
4
9
16
25
Пример
Давайте создадим поток строк и выведем сумму
длин всех строк, используя переменную res:
void main()
{
Stream stream = Stream.fromIterable(['abcde', '12345', 'abcde']);
int res = 0;
stream.forEach((element) {
res += element.length;
}).then((_) {
print(res);
});
}
Результат выполнения кода:
15