我有一个 GridView,其中包含一个 StatefulWidgets 列表,其中显示了正在上传的图像的预览以及该图像的上传进度。
列表中的每个小部件应该有自己的状态,其中一些可以成功上传,而另一些可能会失败,因此用户只能重试那些上传失败的图片。
问题是:
Riverpod 只能创建一个实例,并且同一个实例在整个项目中共享。因此,如果我使用 Riverpod 跟踪每个图像的状态,GridView 上的所有图像将共享相同的状态,而不是每个图像都有自己的状态。
有没有办法使用相同的提供程序,而不是每次调用 context.read(provider) 或 watch(provider.state) 时获取相同的实例> 我得到一个新的独立的新鲜的?
答案 0 :(得分:3)
您正在寻找 .family
修饰符。请参阅文档 here。您可以将 id 或 key 作为参数传递给 StateProvider。
例如:
final imageProvider = StateProvider.family<ImageModel, String>((ref, id) => ...);