【问题标题】:ChangeNotifierProxyProvider 2 positional argument(s) expected in the parameter 'create'ChangeNotifierProxyProvider 参数“create”中预期的 2 个位置参数
【发布时间】:2021-09-15 15:31:00
【问题描述】:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  runApp(
    MultiProvider(
      providers: [
        ChangeNotifierProvider<Auth>(
          create: (_) => Auth(),
        ),
        ChangeNotifierProxyProvider<Auth, Products>(
          create: (ctx) => Products(),
          update: (ctx, value, previousProducts) => Products(value.idToken,
              previousProducts == null ? [] : previousProducts.productsList),
        ),
      ],
      child: MyApp(),
    ),
  );
}

在这一行 'create: (ctx) =&gt; Products(),' Products() 期望 2 参数,我不知道如何解决此错误 Products 类是这样的:

class Products with ChangeNotifier {
  List<Product> productsList = [];

  final String authToken;
  Products(this.authToken, this.productsList);

【问题讨论】:

    标签: flutter flutter-provider


    【解决方案1】:

    因为您的构造函数需要 2 个参数,即 authToken 和 productsList。

    您可以从构造函数中删除参数,使它们可以为空,或者为它们分配默认值,如下所示:

    class Products with ChangeNotifier {
      List<Product> productsList = [];
    
      final String authToken;
      Products({this.authToken = "someDefaultValue", this.productsList =  const []});
    }
    

    【讨论】:

    • 尝试您的解决方案解决了这个特定错误,但在更新参数update: (ctx, value, previousProducts) =&gt; Products(value.idToken, previousProducts == null ? [] : previousProducts.productsList), ), value.idToken 中给了我另一个错误。位置参数太多:预期为 0,但找到了 2。尝试删除额外的位置参数,或指定命名参数的名称
    猜你喜欢
    • 2022-07-25
    • 2021-06-14
    • 2023-02-10
    • 1970-01-01
    • 2020-11-27
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    相关资源
    最近更新 更多