我用的是StreamControllers和颤振。我有一个具有一些默认值的模型。从我正在侦听流的小部件中,我想提供一些这些默认值。我可以看到我可以在StreamBuilder上设置一个初始值,但是我想使用来自集团内部模型的数据作为初始数据。因此,一旦有人使用快照数据,他们就会得到默认值。我已经看到RxDart有一个种子值,只是想知道这是否有可能而无需用RxDart替换?
发布于 2018-11-17 08:18:37
你要找的是StreamController#add方法,
发送数据事件。 侦听器在以后的微任务中接收此事件。 请注意,同步控制器(通过将true传递到StreamController构造函数的同步参数创建)将立即传递事件。由于这种行为违反了这里提到的契约,所以应该只使用文档中描述的同步控制器,以确保交付的事件始终显示为在单独的microtask中交付的事件。
欢快飘舞
发布于 2022-01-17 11:29:38
在为流添加侦听器后初始化类时,可以指定流的默认值。
import 'dart:async';
enum CounterEvent { increase }
class CounterBloc {
int value = 0;
final _stateCntrl = StreamController<int>();
final _eventCntrl = StreamController<CounterEvent>();
Stream<int> get state => _stateCntrl.stream;
Sink<CounterEvent> get event => _eventCntrl.sink;
CounterBloc() {
_eventCntrl.stream.listen((event) {
_handleEvent(event);
});
_stateCntrl.add(value); // <--- add default value
}
void dispose() {
_stateCntrl.close();
_eventCntrl.close();
}
_handleEvent(CounterEvent event) async {
if (event == CounterEvent.increase) {
value++;
}
_stateCntrl.add(value);
}
}https://stackoverflow.com/questions/53346332
复制相似问题