首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个ChangeNotifierProxyProviders将更新输入ChangeNotifier

多个ChangeNotifierProxyProviders将更新输入ChangeNotifier
EN

Stack Overflow用户
提问于 2022-06-03 15:39:45
回答 1查看 244关注 0票数 1

我有三个ChangeNotifierProvider提供者,我们称它们为ABC

我需要的是修改提供者AB以更新提供程序C,但是下面的代码不起作用。

代码语言:javascript
复制
MultiProvider(
  providers: [
    ChangeNotifierProvider(create: (context) => A()),
    ChangeNotifierProvider(create: (context) => B()),
    ChangeNotifierProxyProvider<A, C>(
      create: (context) => C(),
      update: (_, a, c) => c!..updateFromA(a),
    ),
    ChangeNotifierProxyProvider<B, C>(
      create: (context) => C(),
      update: (_, b, c) => c!..updateFromB(b),
    ),
  ]

我认为它不能工作的原因是因为我最终得到了提供程序C的多个副本,但是我不知道如何修复它,或者一个更好的替代实现会是什么样的。

EN

回答 1

Stack Overflow用户

发布于 2022-06-03 18:57:09

如果有多个C实例是问题所在,那么我认为您可以使用Provider.of<C>(context)来获取一个实例。

代码语言:javascript
复制
MultiProvider(
  providers: [
    ChangeNotifierProvider(create: (context) => A()),
    ChangeNotifierProvider(create: (context) => B()),
    ChangeNotifierProvider(create: (context) => C()),
    ChangeNotifierProxyProvider<A, C>(
      create: (context) => Provider.of<C>(context),
      update: (_, a, c) => c!..updateFromA(a),
    ),
    ChangeNotifierProxyProvider<B, C>(
      create: (context) => Provider.of<C>(context),
      update: (_, b, c) => c!..updateFromB(b),
    ),
  ]

否则,您可以将单例模式应用于C:

代码语言:javascript
复制
class C {
  static final C _instance = C._();

  factory C() {
    return _instance;
  }

  C._();
}
代码语言:javascript
复制
MultiProvider(
  providers: [
    ChangeNotifierProvider(create: (context) => A()),
    ChangeNotifierProvider(create: (context) => B()),
    ChangeNotifierProxyProvider<A, C>(
      create: (context) => C(),
      update: (_, a, c) => c!..updateFromA(a),
    ),
    ChangeNotifierProxyProvider<B, C>(
      create: (context) => C(),
      update: (_, b, c) => c!..updateFromB(b),
    ),
  ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72492020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档