gpt4 book ai didi

flutter - 如果 BLoC 流未分配给变量,我是否需要处置它们?

转载 作者:IT王子 更新时间:2023-10-29 06:56:32 26 4
gpt4 key购买 nike

假设我直接在 bloc 上调用 .listen。我没有引用该流,这意味着我无法对其调用 .cancel。此流会自动取消吗?

在我的例子中,它不在小部件中,而是在数据模型中。数据模型在超出范围时应该被处理掉,但我担心这种流永远不会被取消并在应用程序被杀死之前一直存在:

bloc.state.listen((state) {
if (state is MyState) {
dispatch(MyEvent());
}
});

请注意,我的 IDE 不会发出关于流未被取消的警告。但是,当我这样做时:

StreamSubscription myStream; // IDE gives underline and warning

myStream = bloc.state.listen((state) {
if (state is MyState) {
dispatch(MyEvent());
}
});

如果我不在某处调用 .cancel,我的 IDE 会发出取消流的警告。在第一个示例中,我没有收到取消流的 IDE 警告

最佳答案

第一种和第二种情况的订阅是一样的。

如果您的数据模型在应用的整个生命周期中都存在,那就没问题。

否则,您应该将 StreamSubscription 分配给一个变量,并在处理数据模型后取消此流订阅,否则即使您处理了数据模型,您的监听器也永远不会被处理和调用。

如果您在小部件中使用该数据模型类,它应该是一个 StatefulWidget 并且您将在 State.dipose method 中取消您的流订阅.

关于flutter - 如果 BLoC 流未分配给变量,我是否需要处置它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56691105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com