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

Метод pause

Метод pause класса StreamSubscription приостанавливает получение событий из потока. После вызова этого метода подписка перестаёт получать данные до тех пор, пока не будет вызван метод resume. В первый необязательный параметр можно передать функцию, которая будет вызвана при возобновлении потока. Это удобно для синхронизации работы с данными.

Синтаксис

subscription.pause([Future resumeSignal])

Пример

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

import 'dart:async'; void main() { StreamController<int> controller = StreamController<int>(); StreamSubscription<int> subscription = controller.stream.listen((int value) { print('Received: $value'); }); controller.add(1); subscription.pause(); Future.delayed(Duration(seconds: 1), () { controller.add(2); subscription.resume(); controller.add(3); controller.close(); }); }

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

"Received: 1" "Received: 3"

Обратите внимание, что событие со значением 2 было добавлено в поток во время паузы и не было обработано, так как после возобновления подписка не получает пропущенные события.

Пример

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

import 'dart:async'; void main() { StreamController<int> controller = StreamController<int>(); StreamSubscription<int> subscription = controller.stream.listen((int value) { print('Data: $value'); }); controller.add(1); Completer<void> completer = Completer<void>(); subscription.pause(completer.future); Future.delayed(Duration(seconds: 1), () { print('Resuming...'); completer.complete(); controller.add(2); controller.close(); }); }

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

"Data: 1" "Resuming..." "Data: 2"

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

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