dart - StreamSink 和 Sink 有什么区别?
问题描述
我正在编写一个简单的 dart 代码,但我看不出 StreamSink 和 Sink 的实现有什么区别。顺便说一句,在这种情况下两者都有相同的行为。
int _counter = 0;
final _counterStreamController = StreamController<int>();
final _counterEventController = StreamController<CounterEvent>();
CounterBloc() {
_counterEventController.stream.listen(mapEventToState);
}
StreamSink<int> get _sinkCounter => _counterStreamController.sink;
Stream<int> get counter => _counterStreamController.stream;
Sink<CounterEvent> get counterEventSink => _counterEventController.sink;
void mapEventToState(CounterEvent event) {
if (event is IncrementEvent) {
_counter++;
}
_sinkCounter.add(_counter);
}
解决方案
StreamSink类在Sink之上实现了StreamConsumer和EventSink。
StreamConsumer 允许向 Sink 添加多个 Stream,因此您的 StreamSink 可以“输出”多个流。
EventSink 提供了将数据添加到流中的方法。
推荐阅读
- google-maps - 在 Android 模拟器设置中 - Google Play 服务版本无法解析
- angular - 当我重新路由到带有表格的页面时,行在 Angular 8 材料表中自动扩展,并带有可扩展的行
- sql-server - 没有 SYSADMIN 角色的 SQL Server OPENROWSET
- amazon-web-services - 监控 AWS Amplify 上的部署进度
- c - __builtin_types_compatible_p(t1, t2) 和指向限定类型的指针
- c++ - C++:为什么 iter++->empty() 合法?
- paypal - 贝宝订阅:在服务器上验证成功
- mysql - AWS RDS Aurora MySQL 集群,Reader Replica 显示没有连接
- php - 为什么我无法使用 laravel 8 gmail smtp 发送邮件?
- php - WordPress 目前无法处理此请求