【发布时间】:2020-06-20 15:18:53
【问题描述】:
我有两个Streams。当conditionStream 的值为假时,我想停止stream1。但是当 streamSubscription.cancel(); 被称为 stream1 时没有取消,我不知道为什么。非常感谢您的帮助。
代码:
simpleListeningHub<T>(
{Stream<T> stream1, onListening(T), Stream<bool> conditionStream}) {
StreamSubscription streamSubscription;
streamSubscription = stream1.listen((T data) {
onListening(data);
});
conditionStream.listen((isTrue) {
if (!isTrue) {
try {
streamSubscription.cancel();
} catch (e) {
print(e.toString());
}
}
});
}
【问题讨论】:
-
尝试
await streamSubscription.cancel();以完成cancel的执行。 -
做了但还是不行,ps。当我在 conditionStream.listening 之外调用它时,取消函数工作正常
-
您是否有意检查条件是否为假?也许您必须将其更改为
if (!isTrue)为 if(isTrue)` 。 -
是的,抱歉命名错误,即将更改它,但我确实尝试了两种情况(当它为真和假时),并在其上设置断点以确保正在调用 streamSubscription.cancel() 但即使它调用它仍然不会取消流
-
@pskink 非常感谢我找到了解决方案,即将回答我自己的问题