Streams and sinks are backbones in Dart and Flutter asynchronous programming. Streams provide an asynchronous sequence of data. These data sequences include user-generated events and data read from files. We can process a stream using either await for or listen() from the Stream API. Streams provide us a way to respond to errors. There are two kinds of streams: single subscription streams and broadcast streams.  If we want to create a stream where we can put a value on, we start with the StreamController.  Code-   StreamControllerController= StreamController();
We can access the controller’s stream by making use of the stream property.
Code- Stream stream=controller.stream;