首页 > 解决方案 > streamController.add() 和 streamController.sink.add() 有什么区别?

问题描述

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

标签: dartflutter

解决方案


没有什么。这在内部做同样的事情。

属性的真正目的.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
}

推荐阅读