在该代码ctrl
streamController中,带有sink
和没有sink
的两个都打印数据
我不明白为什么我们需要sink
?
final StreamController ctrl = StreamController();
final StreamSubscription subscription = ctrl.stream.listen((data) => print('$data'));
ctrl.sink.add('Hello Stream');
ctrl.add('Hello Stream');
答案 0 :(得分:0)
接收器在StreamSinkWrapper中添加“ Hello Stream”,然后运行ctrl.add()
包装器可能会通过更新来处理您现在或将来可能不知道的事情。例如,它有一个close方法,所以如果不使用接收器,可能会导致内存泄漏。
因此,尽管您可以使用不带接收器的streamController,但这并不意味着您应该这样做。