Метод cancel
Метод cancel класса StreamSubscription
отменяет подписку на поток. После вызова этого
метода подписчик перестаёт получать события
из потока, а все связанные с подпиской ресурсы
освобождаются. Метод возвращает объект
Future, который завершается, когда отмена
подписки полностью выполнена.
Синтаксис
subscription.cancel()
Пример
Давайте создадим поток и подпишемся на него, а затем отменим подписку после получения первого события:
import 'dart:async';
void main()
{
StreamController<int> controller = StreamController<int>();
StreamSubscription<int> subscription;
subscription = controller.stream.listen((int value) {
print(value);
subscription.cancel();
});
controller.add(1);
controller.add(2);
controller.add(3);
controller.close();
}
Результат выполнения кода:
1
Пример
Давайте отменим подписку и дождёмся
завершения отмены через await:
import 'dart:async';
void main() async
{
StreamController<int> controller = StreamController<int>();
StreamSubscription<int> subscription;
subscription = controller.stream.listen((int value) {
print(value);
});
controller.add(1);
await subscription.cancel();
print('cancelled');
controller.close();
}
Результат выполнения кода:
1
"cancelled"
Смотрите также
-
класс
StreamSubscription,
который представляет подписку на поток -
метод
pause,
который приостанавливает подписку -
метод
resume,
который возобновляет подписку -
метод
listen,
который создаёт подписку на поток