Проверьте, отменена ли StreamSubscription

Проще говоря:

Как проверить, отменена ли подписка на StreamSubscription?

Здесь нет

_myCustomSub.isCanceled

person Marc Ma    schedule 29.10.2019    source источник
comment
Можете ли вы опубликовать немного больше вашего кода?   -  person tyb9900    schedule 29.10.2019


Ответы (3)


Кажется, вам придется использовать один из двух методов:

  1. метод onDone — и сохранить в отдельном переменная, был ли поток закрыт, или..
  2. метод отмены — и await будущее, которое сигнализирует об отмене подписки на StreamSubscription.

Не знаю другого способа.

person wildeyes    schedule 29.10.2019
comment
Хм, как-то грустно. Тем не менее спасибо за ваш вклад - person Marc Ma; 29.10.2019

Я думаю, это может быть то, что вы ищете:

final streamController = StreamController();
streamController.onCancel = (){};

Согласно документации: Создание потоков в Dart

Ожидание подписки

Чтобы получать уведомления о подписках, укажите аргумент onListen при создании StreamController. Обратный вызов onListen вызывается, когда поток получает своего первого подписчика. Если вы укажете обратный вызов onCancel, он будет вызван, когда контроллер потеряет своего последнего подписчика.

Последние советы

Обратные вызовы onListen, onPause, onResume и onCancel, определенные StreamController, вызываются потоком при изменении состояния слушателя потока.

Кроме того, это может быть полезно:

//Whether there is a subscriber on the [Stream]
streamController.hasListener
person Pablo Barrera    schedule 29.10.2019

Да, как говорили другие, это немного отстойно, что нет возможности проверить, отменена ли подписка на поток. Я предполагаю, что у вас нет доступа к StreamController, так что вот два моих варианта.

  1. Установите _myCustomSub на null как знак отмены подписки и действуйте соответственно.

  2. Другим способом было бы иметь значение bool (isSubCanceled) где-то вместе с переменной _myCustomSub и использовать его вместо _myCustomSub.isCanceled.

person Aleksandar    schedule 27.07.2021