相关疑难解决方法(0)

Riverpod FutureProvider 在添加 .family 修饰符后将继续触发

所以我未来有这样的提供者

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)

dart flutter riverpod

3
推荐指数
1
解决办法
2960
查看次数

标签 统计

dart ×1

flutter ×1

riverpod ×1