嗨,我有一个简单类型 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);
}
}
答案 0 :(得分:1)
您要查找的是 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);
}
}