StreamControllerとは
・制御するストリームを持つコントローラ。
・このコントローラは、そのストリーム上でデータ、エラー、および終了イベントを送信することを可能にします。このクラスは、他の人が待機できる単純なストリームを作成したり、そのストリームにイベントをプッシュしたりするために使用できます。
・ストリームが一時停止されているかどうか、そしてそれがサブスクライバを持っているかどうか、そしてこれらのどちらかが変わったときにコールバックを受けるかどうかをチェックすることが可能です。
要するに、
非同期処理を行うものである。
addがたくさんある。
StreamControllerのapiにはaddがたくさんある。
- StreamController.sink.add
- StreamController.add
- StreamController.addStream
それぞれの違いを説明する
StreamController.add
addメソッドの引数に値を入れると、StreamControllerに持たすことができる。
StreamController.addStream
Stream型の値を入れることができる。
StreamController.sink.add
StreamController<T>.sink => StreamSink<T>
StreamController.addと同じことをやっているのだが、StreamSinkは入力のみを受け付けるメソッドしかもたない。
よって、初期化されたStreamControllerクラスは、データが入っていたとしても、StreamSink型になるとstreamを受け取ることができないので、誤った値の購読を防ぐことができる。