Riverpod 条件提供程序状态更新
Posted
技术标签:
【中文标题】Riverpod 条件提供程序状态更新【英文标题】:riverpod conditional provider state updates 【发布时间】:2021-02-25 11:42:14 【问题描述】:我正在将我的应用程序移植到river_pod,到目前为止一切都很好,但我总是偶然发现同样的问题。在某些情况下,我需要提供者仅根据ref.watch
获取的新值有条件地更新其状态。
这方面的一个例子是我的最后一个障碍:
我有一个公开当前用户位置的 ChangeNotifier 提供程序。此提供程序由多个其他提供程序侦听。其中之一是 FutureProvider,它会在每次位置更改时获取附近的热门帖子。这里的问题是这个位置更新非常频繁(每 10 秒左右),所以这个获取完成的时间非常不必要。
在这种情况下,我想做的是,在这个 FutureProvider 中,能够获得新位置,但只能有条件地更新(这里的条件是,如果最后一次提取是在 1 公里以外完成的)以避免这种不必要的网络调用以及它导致的所有底层 UI 更新。
这意味着两件事,可以访问最后一个状态进行比较,并且能够取消更新(因为即使我不执行获取并返回最后一个值,UI 仍然会读取作为更新)。
我知道这些机制不是内置的,所以我想知道,river_pod 是解决这个问题的方法吗?
干杯!
【问题讨论】:
【参考方案1】:我有同样的问题要解决。我必须比较旧数据和新数据,并且只有在发生更改时才更改提供程序中的状态。
【讨论】:
以上是关于Riverpod 条件提供程序状态更新的主要内容,如果未能解决你的问题,请参考以下文章
Riverpod : initState 方法中的访问提供程序