gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:32:27 29 4
gpt4 key购买 nike

我知道有两种方法可以将数据添加到流 Controller ,一种是直接添加数据,另一种是使用接收器。我试图阅读 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
}

关于dart - streamController.add() 和 streamController.sink.add() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51395729/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com