【发布时间】:2019-10-14 12:30:04
【问题描述】:
我将Observable 流(rxDart) 传递给StreamBuilder,以便收听和更新用户界面,然后当我关闭onDispose() 中的流时。我预计关闭流会触发我的 observable 的 doOnClose() 副作用,但不幸的是 Observable 的 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() 应该被调用,但它没有被调用!!!
对这种行为或场景有任何想法吗?
【问题讨论】: