尝试构建自定义StreamTransformer类,但是很多现有的示例似乎已经过时了,在文档中找到的一个也不像一些类型化语言可能认为的那样作为一个类(在这里找到:https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:async.StreamTransformer)。这似乎不像Dart风格的方法,而更像JavaScript风格的方法(我使用Dart来避免这种情况)。
许多在线资源都说这就是创建StreamTransformer的方法,但是在扩展它时会出现错误。
希望能以“打字”的方式来实现这个类,非常感谢您的帮助,谢谢。
许多在线资源都说这就是创建StreamTransformer的方法,但是在扩展它时会出现错误。
class exampleStreamTransformer extends StreamTransformer
{
//... (This won't work)
}
'实现'似乎是正确的方式,需要实现所需的绑定函数:
class exampleStreamTransformer implements StreamTransformer
{
Stream bind(Stream stream)
{
//... (Go on to return new stream, etc)
}
}
我似乎找不到这种方法的任何示例,但我已经自己创建了一些(它可以在我的IDE中通过,但在运行时会出现空对象错误,当尝试使用暂停getter时):
class exampleStreamTransformer implements StreamTransformer
{
StreamController<String> _controller;
StreamSubscription<String> _subscription;
Stream bind(Stream stream)
{
_controller = new StreamController<String>(
onListen: ()
{
_subscription = stream.listen((data)
{
// Transform the data.
_controller.add(data);
},
onError: _controller.addError,
onDone: _controller.close,
cancelOnError: true); // Unsure how I'd pass this in?????
},
onPause: _subscription.pause,
onResume: _subscription.resume,
onCancel: _subscription.cancel,
sync: true
);
return _controller.stream;
}
}
希望能以“打字”的方式来实现这个类,非常感谢您的帮助,谢谢。
StreamTransformer
是一个不必要的类 - 它只包含一个函数,因此您可以在传递对象的任何地方直接传递该函数。如果现在将其添加到库中,它只会成为一个函数类型。 - lrn