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.
What is the difference between streamController.add() and streamController.sink.add()?
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
}
© 2022 - 2024 — McMap. All rights reserved.