flutter - BehaviorSubject 添加相同的值
问题描述
嗨,我有一个简单类型 int 的 BehaviorSubject,我将值 5 添加到它,然后添加另一个值 5。流侦听器向我发送了两个事件。如果值等于最后一个值,如何强制检查值而不发送事件。示例代码:
class TestBloc {
TestBloc(){
testBehavior.stream.listen((event) {
print('Event value = $event');
});
addValueToStream();
addValueToStream();
}
final testBehavior = BehaviorSubject<int>();
void addValueToStream() {
testBehavior.add(5);
}
}
解决方案
您正在寻找的distinct()
是BehaviorSubject()
.
从文档中看一下:
如果数据事件等于前一个数据事件,则跳过它们。
返回的流提供与此流相同的事件,只是它从不提供两个相等的连续数据事件。也就是说,错误被传递给返回的流,如果数据事件与最近发出的数据事件不同,则它们被传递。
以下是你如何实现它:
class TestBloc {
TestBloc() {
testBehavior.distinct((a, b) => a == b).listen((event) {
print('Event value = $event');
});
addValueToStream();
addValueToStream();
}
final testBehavior = BehaviorSubject<int>();
void addValueToStream() {
testBehavior.add(5);
}
}
推荐阅读
- .net - 无法在 Xamarin Forms 应用程序中添加 AAD nuget 包管理器
- dart - Dart - 指定类型时需要在匿名函数中返回
- java - 如何将多个参数传递给 Saxon ExtensionFunction?
- html - 指定 HTML5 音频剪辑序列
- jquery - 添加类和从其他类中删除
- python - 如何从 sqlite3 数据库打印数据?
- r - result_create(conn@ptr, statement) : 结果太大
- javascript - 在嵌套组件式 django 部分模板中运行 javascript
- javascript - 从 html 文件上的 github API 返回结果 json
- react-native - 我在哪里可以深入了解 react-native 链接脚本?