在 flutter 中更新 ChangeNotifierProxyProvider 的构建器

builder to update in ChangeNotifierProxyProvider on flutter

首先感谢您检查我的问题。

我是初学者,我有这段代码:

ChangeNotifierProxyProvider<Auth, ImgProvider>(
          builder: (ctx, auth, previousItem) => ImgProvider(
            auth.token,
            auth.userId,
            previousItem == null ? [] : previousItem.items,
          ),
        ),

ChangeNotifierProxyProvider

'。 :

ChangeNotifierProxyProvider<Auth, ImgProvider>(
          update: (ctx, auth, previousItem) => ImgProvider(
            auth.token,
            auth.userId,
            previousItem == null ? [] : previousItem.items,
          ),

" '' ."

:“”。 !

解决办法是改成这样:

 ChangeNotifierProxyProvider<Auth, ImgProvider>(
          create: (ctx) => ImgProvider(),
          update: (ctx, auth, previousItem) => previousItem
            ..receiveToken(
                auth, previousItem == null ? [] : previousItem.items),
        ), 

并在 ImgProvider() 中创建一个函数,如下所示:

void receiveToken(Auth auth, List<ImgVar> items) {
    authToken = auth.token;
    userId = auth.userId;
    _items = items;
  }

如果class有constrictor你必须像这样让参数为null

 ChangeNotifierProvider(create: (ctx) => Auth()),
      ChangeNotifierProxyProvider<Auth, ProductsProvider>(
        create: (ctx) => ProductsProvider('', []),
        update: (ctx, auth, previousProductsProviderState) =>
            ProductsProvider(
                auth.token, previousProductsProviderState!.items),
      ),