повторно открывать после закрытия StreamController / Rx?

#flutter #dart #rxdart

#трепетание #dart #rxdart

Вопрос:

Мне нужно закрыть мой streamController/BehaviorSubject , а затем мне нужно перезапустить его? как мне это сделать?

 static StreamSubscription stream;

<List<BookModel>> _controller = StreamController<List<BookModel>>.broadcast();
        
// BehaviorSubject<List<BookModel>> _controller = BehaviorSubject<List<BookModel>>();
    
    
    //try to close
    
void close() {
    stream?.cancel();
    _controller.close();
}
    
    
    //try to re-open

void reOpen(){
  _controller = BehaviorSubject<List<BookModel>>();
}
  

Комментарии:

1. вы уверены, что не хотите использовать StreamSubscription.pause / resume ? pause в документах говорится: «Запрос, чтобы поток приостанавливал события до дальнейшего уведомления. Во время приостановки подписка не будет запускать никаких событий. Если он получает события от своего источника, они будут буферизоваться до возобновления подписки. Для не широковещательных потоков базовый источник обычно информируется о паузе, поэтому он может прекратить генерировать события до возобновления подписки «.

2. @pskink мне pause не нужно закрывать StreamController?

Ответ №1:

Используя этот способ.

 void reOpen() {
   _controller = StreamController<List<BookModel>>.broadcast();
}