我使用futureProvider从服务器获取一些响应,但当我在futureProvider中放入参数时,它拒绝缓存数据。当我删除这些参数时,它就可以完美地缓存。
final getCoursesByCategoriesProvider =
FutureProvider.family<List<Course>, ArgsModel>((ref, vendocode) async {
return ref.watch(courseControllerProvider).getCoursesByCategories(
category: vendocode.firstParams, context: vendocode.secondParams);
});
我也想把这些数据保存起来。这可能吗
1条答案
按热度按时间ctrmrzij1#
提供程序不缓存数据的原因可能是因为传递给提供程序的每个
ArgsModel
都是不同的示例,即使其中的参数具有相同的值。要解决这个问题,需要在ArgsModel
类中覆盖operator ==
和hashCode
。按照这里的例子。或者,您可以使用Riverpod的最新语法,该语法使用code generation。这允许您为提供程序定义多个参数,并且不再需要
ArgsModel
。下面是一个示例代码(注意,我假设类型为
firstParams
和secondParams
):