Stream 当事件是广播流时,如何防止丢弃事件?
我希望在没有小部件侦听时防止flifter丢弃广播流事件。因为我想在其他页面路由中听这个 我有一个像下面这样的块状物体Stream 当事件是广播流时,如何防止丢弃事件?,stream,flutter,broadcast,Stream,Flutter,Broadcast,我希望在没有小部件侦听时防止flifter丢弃广播流事件。因为我想在其他页面路由中听这个 我有一个像下面这样的块状物体 class UserBloc extends Object { final _user = StreamController<UserModel>.broadcast(); final _uid = StreamController<String>.broadcast(); Stream<UserModel> get
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;
它在不使用广播流的情况下工作。然而,当我改为广播时,运气不好
问题是广播流在没有人收听时丢弃事件,但我想在我的其他MaterialPage弹出时开始收听
使用广播流,当我开始监听时,流中的数据总是空的
如何实现这一点?将StreamController替换为来自的Behavior Subject 一种特殊的StreamController,用于捕获已更新的最新项目 添加到控制器,并将其作为第一项发送到任何新的 听众
StreamController.broadcast
不允许此操作。但是您可以为\u uid
使用StreamController()
,并公开uid=>\u uid.stream.transform(LazyBroadcastTransformer())
转换器的来源:到
StreamBuilder(
stream: userBloc.user,
builder: (context, snapshot) {
print(snapshot.connectionState);
print(snapshot.data);
return Text('hi');
},
),