请看下面使用 Dart Riverpod 的伪代码。
final dependingStreamProvider = StreamProvider.autoDispose<int>((ref) {
final depending = ref.watch(dependingProvider);
if (depending == typeA) {
return AStream(); // returns stream of int
} else {
return BStream(); // returns a different stream of int
}
});
在这种情况下,随着
dependingProvider
改变它的状态,StreamProvider
创建另一个Stream
实例。
我的问题是,陈旧的
Stream
实例是否被 Riverpod 处理掉(即它的 StreamController
得到 close
d)?还是我们必须以某种方式处理自己?
我在这里看到一个类似的问题:Do you have to manually dispose streams from a streamprovider in Flutter? 但我不太确定接受的答案是否适用于我上面的案例。
我知道
autoDispose
会在没有widget监听的情况下处理,但是上面的情况是不同的情况🤔