在m4更新之后,StreamController.broadcast()被删除,我发现asBroadcastStream不能被多次调用。这意味着您必须存储流(如 Ugly 类中那样),而不是仅使用 getter(如 Pretty 类中那样)。
这是设计使然,还是我做错了?
void main() {
Pretty p = new Pretty();
//This does not work.
p.onChange.listen((n) => print(n));
//This second call throws: "Bad state: Stream already has subscriber". Why?
p.onChange.listen((n) => print(n));
//This does work.
Ugly u = new Ugly();
u.onChange.listen((n) => print(n));
u.onChange.listen((n) => print(n));
}
class Pretty{
StreamController<int> _streamCtrl = new StreamController<int>();
Stream<int> get onChange => _streamCtrl.stream.asBroadcastStream();
}
class Ugly{
StreamController<int> _streamCtrl = new StreamController<int>();
Stream<int> _onChange;
Stream<int> get onChange => _onChange;
Ugly(){
_onChange …Run Code Online (Sandbox Code Playgroud) dart ×1