ChangeNotifierProxyProvider构建器vs更新问题

时间:2020-04-09 11:29:31

标签: flutter flutter-layout flutter-dependencies flutter-animation flutter-test

我正在使用提供程序:^ 3.0.0,其中具有ChangeNotifierProxyProvider参数'builder',其中我在其中提供数据。现在提供程序版本已更改,现在其更新版本为provider:^ 4.0.4,并且它不具有“ builder”功能,而现在具有创建和更新功能。请告诉我,创建和更新背后的逻辑是什么。 我认为周转箱只在第一次运行,而更新在每次第一次运行后都运行? 我对吗!但是我有一个问题,我必须将一些数据传递给参数中的下一个类。 查看我的代码

    ChangeNotifierProxyProvider<Auth, Shops>(
      create: (ctx)=> Shops('778b2f743f2aebd4d73d2431881a88ba54c53c01', []),
      update: (ctx, auth, prevShop)=> Shops(auth.token, prevShop.items),
      ),

我想将authToken传递给Shop类,在更新时可以从该auth对象获取此数据,但是在创建时我该怎么办? 我想将商店列表作为商店类中的第二个参数传递,这将是从服务器中获取的商店列表,但是在这里,因为我没有引用,所以我必须在create中传递一个空列表。 / p>

这意味着第一次加载页面时,没有商店列表,而当我再次打开同一页面时,商店列表将在屏幕上列出。

请帮助我解决此问题。

1 个答案:

答案 0 :(得分:0)

我也遇到了同样的问题。我搜索了文档并找到了解决方案。

您需要在 Shops()类中定义函数 update(),该函数接受您的参数: auth.token prevShop.items ,您需要更新该更新功能中想要的任何内容。

ChangeNotifierProxyProvider<Auth, Shops>(
      create: (ctx)=> Shops(),
      update: (ctx, auth, prevShop)=> prevShop..update(auth, prevShop.items),
      ),

我们使用 .. update(auth.token,prevShop.items)返回相同的 Shops()小部件。