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