【问题标题】:Flutter ChangeNotifierProvider the parameter 'update' is requiredFlutter ChangeNotifierProvider 参数 'update' 是必需的
【发布时间】:2019-12-19 15:28:23
【问题描述】:

我得到了最新的更新:

警告:参数“更新”是必需的。 . (缺少_required_pa​​ram 在 [pos_mobile] lib\main.dart)

 return MultiProvider(
        providers: [
          ChangeNotifierProvider.value(
            value: Auth(),
          ),
          ChangeNotifierProxyProvider<Auth, Operatori>( // here I got the warning
            builder: (ctx, auth, prevData) => Operatori(auth.token, auth.userId,
                prevData == null ? [] : prevData.operatori),
          ),

谢谢

【问题讨论】:

  • 第 38 行在哪里?
  • 只是代码的一部分,我在收到警告的地方添加了注释

标签: flutter dart


【解决方案1】:

检查 ChangeNotifierProxyProvider doc

应该是:

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

【讨论】:

  • 试过了但没用,我的提供者需要 3 个参数,create 给出一个: ChangeNotifierProxyProvider( create: (_) => Operatori(auth.token, auth.userId), . ...
  • @mrapi 然后您可以重构您的通知程序以使用此处显示的语法
  • 好的,我已经删除了构造函数并使用了setter,像这样更改了我的代码: ChangeNotifierProxyProvider( create: () => Operatori(), update: (, auth, myNotifier){ myNotifier..authToken=auth.token;myNotifier..userId= auth.userId;}, ),但现在得到:此函数的返回类型为 'Operatori',但没有以 return 语句结束。尝试添加 return 语句,或将返回类型更改为 'void'。
  • @mrapi 更新参数需要返回通知器,但你的没有。在您的代码中,在更新部分返回 myNotifier
  • 您可以根据您的逻辑业务做任何事情。但它必须在那里返回一个通知器:)。更新: (_, auth, myNotifier) { authToken=auth.token; userId= auth.userId;返回 myNotifier }。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
  • 2015-11-09
  • 2019-10-14
  • 1970-01-01
  • 2019-03-10
  • 2015-03-28
相关资源
最近更新 更多