Тип Stream
Тип Stream<T> обозначает поток событий типа T.
Элементы приходят по одному, а не лежат в памяти
все сразу, как в List. Обычный поток
из fromIterable или Stream.value
можно прослушать один раз. Подписка делается
методом listen или циклом await for
внутри функции async. Поток может завершиться
или сообщить об ошибке - это отдельные события,
не значения типа T.
Синтаксис
Stream<int> name = Stream.fromIterable([1, 2, 3]);
Stream<String> name = Stream.value('abcde');
Пример
Давайте создадим поток из трёх чисел и выведем каждое событие:
void main() async
{
Stream<int> res = Stream.fromIterable([1, 2, 3]);
await for (int item in res)
{
print(item);
}
}
Результат выполнения кода:
1
2
3
Пример
Давайте получим единственное событие потока
через свойство first:
void main() async
{
Stream<String> res = Stream.value('abcde');
print(await res.first);
}
Результат выполнения кода:
"abcde"
Пример
Давайте подпишемся на поток методом listen
и напечатаем числа по мере их прихода:
void main()
{
Stream<int> res = Stream.fromIterable([1, 2, 3]);
res.listen((int item) {
print(item);
});
}
Результат выполнения кода:
1
2
3