我知道Stream.pipe
通常用于读写文件,但是将其与StreamController和自定义流一起使用的一个很好的例子是什么?
编辑:我提供了一个有关如何使用Stream.pipe
的示例,但是运行此代码时屏幕上没有任何输出。我希望数组通过转换器,将每个数字加倍,将输出通过管道传输到第二个控制器,然后将第二个数字输出到屏幕。但是,我没有看到任何结果。
import 'dart:async';
var stream = Stream.fromIterable([1, 2, 3, 4, 5]);
void main() {
final controller1 = new StreamController();
final controller2 = new StreamController();
final doubler =
new StreamTransformer.fromHandlers(handleData: (data, sink) {
sink.add(data * 2);
});
controller1.stream.transform(doubler).pipe(controller2);
controller2.stream.listen((data) => print(data));
}
答案 0 :(得分:0)
我想出了自己的问题。我忘记插入controller1.addStream(stream);
,所以controller1
没有收到流,因此无法将其通过管道传输到controller2。这是我完成的代码。
import 'dart:async';
var stream = Stream.fromIterable([1, 2, 3, 4, 5]);
void main() {
final controller1 = new StreamController();
final controller2 = new StreamController();
controller1.addStream(stream);
final doubler =
new StreamTransformer.fromHandlers(handleData: (data, sink) {
sink.add(data * 2);
});
controller1.stream.transform(doubler).pipe(controller2);
controller2.stream.listen((data) => print(data));
}