There are two ways that i know to add data to streamcontroller, one directly and other by use of a sink. I tried to read docs of Sink but i am not able to understand its concept like piping of data etc.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Nothing. This does the same thing internally.
The real purpose of .sink
property is to pass it as parameter of other object. Such as :
MyClass(
sink: myController.sink,
)
This prevents classes to access to properties they shouldn't be able to.
But StreamController
implements Sink
so what's the point ?
Well true. But casting StreamController
to Sink
is different than creating a Sink
.
For example, the class that uses Sink
could very well do the following :
StreamSink sink = StreamController();
if (sink is StreamController) { // this is true
// access StreamController custom methods
}
The sink
field is here to prevent this. It translates into the following :
StreamSink sink = StreamController().sink;
if (sink is StreamController) { // false this time
// never reached
}