随着对 的更改StreamEventTransformer
,我必须创建一个行为类似于 的包装类 StreamEventTransformer
,所以这里是代码:
class Transformer implements EventSink, StreamTransformer {
EventSink rootSink;
Transformer();
Transformer._useSink(this.rootSink);
void handleData(event, EventSink sink) {
print('inside handleData');
sink.add(event);
}
void handleError(error, StackTrace stackTrace, EventSink sink) =>
sink.addError(error, stackTrace);
void add(event) {
print('inside add');
handleData(event, rootSink);
}
void addError(error, [StackTrace stackTrace]) =>
handleError(error, stackTrace, rootSink);
void close() => rootSink.close();
Stream bind(Stream source) =>
new Stream.eventTransformed(source, (EventSink sink) {
EventSink eventSink = new Transformer._useSink(sink);
return eventSink;
});
}
有了这个类,我只需要扩展 fromTransformer
以适应变化。
但是当我扩展它时:
class PlusOneTransformer extends Transformer {
void handleData(data, sink) {
sink.add(data + 1);
}
}
并测试它:
void main() {
StreamController controller = new StreamController();
Stream stream = controller.stream.transform(new PlusOneTransformer());
stream.listen(print);
controller.add(10);
}
我期待输出是:
inside add
11
但反而:
inside add
inside handleData
10
所以它不是运行覆盖的handleData
,而是运行旧的。从调试器中,我可以看到执行的类Transformer
不在PlusOneTransformer
我PlusOneTransformer
用来转换流的时候。
我错过了什么吗?