gpt4 book ai didi

dart - 在 Dart 中保存流的最后一个发射值

转载 作者:IT王子 更新时间:2023-10-29 06:51:23 25 4
gpt4 key购买 nike

我在 Flutter 中使用 firestore 和底部导航栏制作了一个应用。问题是当我在选项卡之间切换时,每次都会调用构建方法。 build 方法从 firestore 下载数据。因此,当我切换标签时应用程序会闪烁(旋转条显示的时间很短)。我试图通过将 firestore 流移动到构造函数来解决这个问题。但是,由于流可以在构建方法之前发出,因此它会永远加载。

一个解决方案可能是保存最后发出的值。我尝试使用 Rx 中的 shareReplay 方法来解决这个问题,但它们还没有在 RxDart 中实现。那么,实现这一点的最佳做法是什么?

最佳答案

使用rxdart的shareValue操作符:

final observable = Observable(yourStream).shareValue();

在内部,此运算符使用 BehaviorSubject。它会在只有一个订阅者时立即订阅流(它只会订阅一次),并在没有更多订阅者时取消订阅(并处理主题)。

此外,正如您所说,您必须在 initState 或类似方法(不是 build 方法!)中创建可观察对象。可观察对象应存储在 State 的字段中。

关于dart - 在 Dart 中保存流的最后一个发射值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53870510/

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