riverpod条件提供程序状态更新



我正在将我的应用程序移植到river_pod,到目前为止一切都很好,但我总是遇到同样的问题。在某些情况下,我需要提供者仅根据ref.watch获取的新值有条件地更新其状态。

这方面的一个例子是我的最后一个障碍:

我有一个ChangeNotifier提供程序,它公开了当前用户位置。多个其他提供程序正在侦听此提供程序。其中之一是FutureProvider,每当位置发生变化时,它都会获取附近的趋势帖子。这里的问题是,这个位置更新非常频繁(每10秒左右(,所以这个获取需要非常不必要的时间。

在这种情况下,我想做的是,在这个FutureProvider中,能够获得新的位置,但只能有条件地更新(这里的条件是,如果最后一次提取是在1公里外完成的(,以避免这种不必要的网络调用及其引起的所有底层UI更新。

这意味着两件事,一是可以访问最后一个状态进行比较,二是可以取消更新(因为在这里,即使我不进行提取并返回最后一个值,UI仍然会将其作为更新读取(。

我知道这些机制不是内置的,所以我想知道,river_pod是解决这个问题的方法吗?

干杯!

我也有同样的问题需要解决。我必须比较旧数据和新数据,只有在发生更改时才能更改提供者中的状态。

相关内容

最新更新