Flutter "ChangeNotifierProxyProvider have an error. error: "The named parameter 'builder' isn't defined. "

Flutter "ChangeNotifierProxyProvider have an error. error: "The named parameter 'builder' isn't defined. "

main.dart 文件 ChangeNotifierProxyProvider 存在未定义生成器方法的问题。

 ChangeNotifierProxyProvider<Auth, Orders>(
      builder: (ctx, auth, previousOrders) => Orders(
        auth.token,
        auth.userId,
        previousOrders == null ? [] : previousOrders.orders,
      ),
    ),

他们没有像 ChangeNotifierProxyProvider 中的 builder 那样的论点,这就是你得到那个错误的原因。

在 ChangeNotifierProxyProvider 中,您必须提供创建、更新和子项。

在这里,在 create 中你可以创建你的对象,在 update 中你可以指定何时更改提供者的值,当通知程序依赖于其他模型时。

ChangeNotifierProxyProvider<MyModel, MyChangeNotifier>(
   create: (_) => MyChangeNotifier(),
   update: (_, myModel, myNotifier) => myNotifier
       ..update(myModel),
    child: ...
);

ChangeNotifierProvider 支持构建器参数,但从 v3.x.0 迁移到 v4.0.0+ 一些参数已更改且构建器是其中之一。

而不是 initialBuilder 应该替换为 create.

"proxy" 提供商 的构建者应替换为 更新

经典提供程序的构建器应替换为创建

ChangeNotifierProxyProvider<Auth, Products>(
      create: (_) => Products('', '', []),
      update: (_, auth, prevProducts) {
        return Products(
          auth.token,
          auth.userId,
          prevProducts == null ? [] : prevProducts.items,
        );
      },
    ),

provider: ^5.0.0 这也应该按预期工作

ChangeNotifierProxyProvider<Auth, Products>(
  create: (ctx) {
    return Products();
  },
  update: (ctx, auth, prev) {
    return Products()
      ..setAuthToken(auth.token ?? '')
      ..setItems(prev?.items ?? []);
  },
),