所以我未来有这样的提供者
final additionalCostsProvider = FutureProvider.autoDispose.family<List<ExtraCost>, List<String>>((ref, cartCodes) {
final cartAPI = ref.watch(cartAPIProvider);
return cartAPI.getAdditionalCosts(cartCodes: cartCodes);
});
Run Code Online (Sandbox Code Playgroud)
如您所见,我将购物车代码 ( List<String>) 作为参数传递给我的FutureProvider
然后我像这样使用它
@override
Widget build(context, ref) {
final List<String> cartCodes = carts.map((cart) => cart.code).toList();
final additionalCostsProviderAsynValue = ref.watch(additionalCostsProvider(cartCodes));
return Scaffold(
body: additionalCostsProviderAsynValue.when(
loading: () => CircularProgressIndicator(),
error: (error, stackTrace) {
return ErrorDisplay(
onButtonClicked: () => ref.refresh(additionalCostsProvider(cartCodes)),
);
},
data: (results) {
return Container();
},
),
);
}
Run Code Online (Sandbox Code Playgroud)
然后它会一遍又一遍地向服务器发出我的应用程序请求。
我相信问题出在.family修改器上。因为如果像下面的代码那样更改FutureProvider而不使用.family,则不会出现问题。
final additionalCostsProvider = FutureProvider.autoDispose<List<ExtraCost>>((ref) …Run Code Online (Sandbox Code Playgroud)