doOnCancel () не запускается при вызове StreamController # close () - PullRequest
1 голос
/ 14 октября 2019

Я передаю Observable stream (rxDart) на StreamBuilder для прослушивания и обновления пользовательского интерфейса, и после этого, когда я закрываю поток в onDispose(). Я ожидал, что закрывающий поток вызовет doOnClose() побочный эффект моей наблюдаемой, но, к сожалению, doOnClose() Наблюдаемой не вызывается,

Что я делаю:

Observable<dynamic> observerStream() {
    return Observable.fromFuture(someFunction())
      return data;
    })
    .doOnCancel(() {
        print('*** NOT GETTING CALLED ***');  
    })
.asBroadcastStream();

Внутривиджет

StreamController _controller = StreamController<dynamic>();

@override
void initState() {
  super.initState();
  _controller?.addStream(observerStream());
}

return StreamBuilder(
  stream: _controller.stream,
  builder: (context, snapshot) {
    return body(snapshot.data);
  },
);

@override
void dispose() { 
  _controller?.close();
  super.dispose();
}

В соответствии с приведенным выше кодом doOnClose() должен вызываться, но он не вызывается !!!

Есть идеи по поводу такого поведения или сценария?

...