【发布时间】:2019-06-21 11:12:25
【问题描述】:
在阅读了一堆关于 dart 中的 Streams 和 StreamControllers 的文档后,我尝试构建一个小示例,结果令我感到惊讶。我读过的所有文档都指出,一旦注册了侦听器,流就会开始发出数据。但这并没有显示任何打印数据:
class Order
{
String type;
Order(this.type);
}
class Pizza
{
}
void main()
{
Order order = Order("pzza");
final StreamController sc = StreamController();
sc.sink.add(order);
sc.sink.add(order);
sc.sink.add(new Order("pizza"));
Stream st = sc.stream.map((order) {
return order.type;
})
.map((orderType) {
if(orderType == "pizza")
return Pizza();
else
throw ("dude!, I don't know how to do that");
});
var sus = st.listen((pizza)
{
print("We did a pizza");
},
onError: (error)
{
print(error);
});
sus.cancel();
sc.sink.add(new Order("pizza2"));
}
我期待这个输出:
dude!, I don't know how to do that
dude!, I don't know how to do that
We did a pizza
在创建流和添加数据时,是否所有“下沉”数据都计划在下一个应用程序步骤中发出?
干杯。
【问题讨论】:
标签: dart stream reactive-programming