Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
530 of 724 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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить