streamController.add()和streamController.ssink.add()之间有什么区别



我知道有两种方法可以将数据添加到streamcontroller,一种是直接添加,另一种是使用接收器。我试图阅读Sink的文档,但我无法理解它的概念,如数据管道等。

什么都没有。这在内部也起到了同样的作用。

.sink属性的真正目的是将其作为其他对象的参数传递。例如:

MyClass(
sink: myController.sink,
)

这阻止了类访问它们不应该访问的属性

但是StreamController实现了Sink,这有什么意义

没错。但是将StreamController转换为Sink与创建Sink不同。

例如,使用Sink的类可以很好地执行以下操作:

StreamSink sink = StreamController();
if (sink is StreamController) { // this is true
// access StreamController custom methods
}

此处的sink字段可防止出现这种情况。它翻译成以下内容:

StreamSink sink = StreamController().sink;
if (sink is StreamController) { // false this time
// never reached
}

最新更新