【问题标题】:re-open after close streamController/ Rx?关闭 streamController/Rx 后重新打开?
【发布时间】:2020-11-13 06:56:04
【问题描述】:

我需要关闭我的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>>();
}

【问题讨论】:

  • 您确定不想使用StreamSubscription.pause / resumepause docs 说:“请求流暂停事件,直到另行通知。暂停时,订阅不会触发任何事件。如果它从其源接收事件,它们将被缓冲,直到订阅恢复。对于非广播流,通常会通知底层源暂停,因此它可以停止生成事件,直到订阅恢复。”
  • @pskink 我用pause 不需要关闭streamController?

标签: flutter dart rxdart


【解决方案1】:

使用这种方式。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 2013-05-27
    • 2019-11-01
    相关资源
    最近更新 更多