Я передаю Observable
поток (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()
должен вызываться, но он не вызывается!!!
Любая идея о таком поведении или сценарии?