РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
527 of 723 menu

Класс StreamSubscription

Класс StreamSubscription представляет собой объект подписки на поток данных Stream. Когда вы вызываете метод listen у потока, он возвращает экземпляр StreamSubscription, через который можно управлять этой подпиской. С его помощью можно приостановить получение событий методом pause, возобновить их методом resume и полностью прекратить подписку методом cancel. Также подписка хранит информацию о текущем состоянии и позволяет задать обработчики событий, ошибок и завершения потока.

Синтаксис

StreamSubscription<T> subscription = stream.listen( (T event) { }, onError: (Object error) { }, onDone: () { } );

Пример

Давайте создадим поток из списка чисел, подпишемся на него и получим объект подписки, а затем выведем все элементы:

void main() { Stream<int> stream = Stream.fromIterable([1, 2, 3, 4, 5]); StreamSubscription<int> subscription = stream.listen( (int event) { print(event); } ); }

Результат выполнения кода:

1 2 3 4 5

Пример

Давайте приостановим подписку после первого события, а затем возобновим её:

import 'dart:async'; void main() { Stream<int> stream = Stream.fromIterable([1, 2, 3, 4, 5]); late StreamSubscription<int> subscription; subscription = stream.listen( (int event) { print(event); if (event == 1) { subscription.pause(); Future.delayed(Duration(seconds: 1), () { subscription.resume(); }); } } ); }

Результат выполнения кода:

1 2 3 4 5

Пример

Давайте отменим подписку после получения третьего элемента:

void main() { Stream<int> stream = Stream.fromIterable([1, 2, 3, 4, 5]); StreamSubscription<int> subscription = stream.listen( (int event) { print(event); if (event == 3) { subscription.cancel(); } } ); }

Результат выполнения кода:

1 2 3

Смотрите также

  • класс Stream,
    который представляет поток данных
  • метод listen,
    который создаёт подписку на поток
  • метод cancel,
    который отменяет подписку на поток
  • метод pause,
    который приостанавливает получение событий
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить