我想防止颤动在没有小部件正在监听时丢弃广播流事件。因为我想在其他页面路由中听这个。
我有如下所示的块对象。
class UserBloc extends Object {
final _user = StreamController<UserModel>.broadcast();
final _uid = StreamController<String>.broadcast();
Stream<UserModel> get user => _user.stream;
Stream<String> get uid => _uid.stream;
Function(UserModel) get setUser => _user.sink.add;
Function(String) get setUID => _uid.sink.add;
Run Code Online (Sandbox Code Playgroud)
我正在我的子页面路由中收听这些流
StreamBuilder(
stream: userBloc.user,
builder: (context, snapshot) {
print(snapshot.connectionState);
print(snapshot.data);
return Text('hi');
},
),
Run Code Online (Sandbox Code Playgroud)
它无需使用广播流即可工作。然而,当我改为广播时,运气不佳。
问题是广播流在没有人监听时丢弃事件,但我想在弹出其他 MaterialPage 时开始监听。
使用广播流,当我开始收听时,流中的数据始终为空。
我怎样才能实现这个目标?
| 归档时间: |
|
| 查看次数: |
1557 次 |
| 最近记录: |