Flutter Provider - 添加依赖 Stream Provider 的 Proxy Provider

Posted

技术标签:

【中文标题】Flutter Provider - 添加依赖 Stream Provider 的 Proxy Provider【英文标题】:Flutter Provider -Adding Proxy Provider that has dependency on Stream Provider 【发布时间】:2020-11-06 00:27:28 【问题描述】:
MultiProvider(
    providers: [
         // In this sample app, CatalogModel never changes, so a simple Provider
     // is sufficient.
      Provider(create: (context) => CatalogModel()),
      // CartModel is implemented as a ChangeNotifier, which calls for the use
         // of ChangeNotifierProvider. Moreover, CartModel depends
     // on CatalogModel, so a ProxyProvider is needed.
     ChangeNotifierProxyProvider<CatalogModel, CartModel>(
         create: (context) => CartModel(),
         update: (context, catalog, cart) 
          cart.catalog = catalog;
          return cart;
          ,
     ),
   ],)

在处理流时,我想用 Stream Provider 小部件替换 Provider 小部件。我怎样才能拥有依赖于 Stream Provider 而不是 Provider 的相同 changenotifierproxy(购物车模型)提供者。

【问题讨论】:

【参考方案1】:

我认为您可以尝试使用MultiProviderbuilder 属性来获得一个新的BuildContext,该BuildContext 可以访问以前的提供程序构建器(例如,您可以调用Provider.of&lt;CatalogModel&gt;.yourStreamValue)。

MultiProvider(
  providers:[Provider(create:(context)=>CatalogModel()],
  builder: (context, child) => StreamProvider<CartModel>.value(
     initialData: null,
     value: Provider.of<CatalogModel>.yourStreamValue,
     child: child,
  )
  child: child,

)

【讨论】:

以上是关于Flutter Provider - 添加依赖 Stream Provider 的 Proxy Provider的主要内容,如果未能解决你的问题,请参考以下文章

将提供程序包添加到 Flutter Web 项目时出错

Flutter Provider - 使用 ProxyProvider 的循环依赖

Flutter Provider:提供 2 个流,一个依赖另一个

flutter 中文件工具类

添加依赖后无法在flutter 2.5.3中构建android模块

Flutter 应用程序 Multi Provider 和相互依赖的 Stream Providers