我使用 StreamBuilder、StreamController、BehaviorSubject、Stream 等已经有一段时间了。但我仍然对一些定义感到困惑。特别是这个问题,StreamController 和 BehaviorSubject 是 Dart 中的一个流吗?
我之所以有这个问题,是因为我可以在网上找到以下单词/引用:
从在线文档的上述 4 点来看,它给了我:BehaviorSubject 是一个 Observable,然后是一个 Stream。所以 BehaviorSubject 是一个流。BehaviorSubject 也是一个 StreamController。因此 StreamController 是一个流。
但是如果 StreamController 是一个 Stream,这将与其他一些文章相矛盾,即 Stream 实际上是 StreamController 的一部分,并且您从 StreamController.stream 获取 Stream。
如果说到 Sink,就会更加混乱。
StreamController 实现了 StreamSink。所以 Sink 是一个特殊的 StreamController。
因此,从以上所有单词中,我得出以下结果:
BehaviorSubject = StreamController = Observable = Stream = Sink
最后,一切都是一样的……我疯了吗?
编辑:(我现在明白了。希望它是正确的)
为了澄清我的困惑,我想我必须理解"BehaviorSubject is a special StreamController"
这句话。
通过谷歌搜索和检查一些 sdk 代码,我想我明白 BehaviorSubject 是一个特殊的 StreamController,但反之亦然。这将解决我的困惑。BehaviorSubject 扩展了Subject,Subject 实现了StreamController。因此"BehaviorSubject is a special StreamController"
是正确的。但我不能说 StreamController 是一个 BehaviorSubject。因此,即使 BehaviorSubject 实际上是一个流,我也不能说 StreamController 是一个流。
我希望我上面的理解是正确的。