streamController.add()和streamController.sink.add()有什么区别?

Ayu*_*pta 11 dart flutter

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

Rém*_*let 12

没有.这在内部做同样的事情.

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

MyClass(
  sink: myController.sink,
)
Run Code Online (Sandbox Code Playgroud)

这可以防止类访问他们无法访问的属性.

StreamController实施Sink那么重要的是什么?

好吧.但是,铸造StreamControllerSink比创建一个不同的Sink.

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

StreamSink sink = StreamController();
if (sink is StreamController) { // this is true
    // access StreamController custom methods
}
Run Code Online (Sandbox Code Playgroud)

sink领域是为了防止这种情况.它转化为以下内容:

StreamSink sink = StreamController().sink;
if (sink is StreamController) { // false this time
   // never reached
}
Run Code Online (Sandbox Code Playgroud)