我在我的颤振项目中使用RxDart已经有一段时间了。然而,我感到困惑的是,定义BehaviorSubject可以直接侦听主题,也可以侦听主题的流。我没能真正指出其中的区别。
示例
BehaviorSubject<String> _mySubject = BehaviorSubject();
_mySubject.listen((value) => { print('Logging $value'} );
_mySubject.stream.listen((value) => { print('Logging $value'} );此外,BehaviorSubjects似乎提供了两种方法来访问最后发出的值,我看到的文档是同步的value getter。以及返回Future的Future getter。
我再一次感到困惑。如果没有发出任何消息,那么为什么value getter不返回null?相反,它只是在等待。我找到的唯一解决办法是用空值为主题添加种子。
最后,我尝试使用last getter作为未来,它永远不会回来。是否有数据。在这个问题上打电话似乎不起作用。
编辑:
谢谢@pskink指出stream getter返回Subject本身,因此我的前两个示例没有区别。
发布于 2020-11-26 09:38:42
如果还没有发出任何消息,value应该返回null,不知道为什么它不适合您。您使用的是哪个版本的RxDart?
另一方面,last的工作方式有点不同。它将返回流关闭后的最后一个值。因此,您需要调用_mySubject.close();然后将完成未来(只要流已经发出任何值,否则就会出现错误)。
https://stackoverflow.com/questions/63385841
复制相似问题