Провайдер Flutter - добавление провайдера прокси, который зависит от провайдера потока.

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;
          },
     ),
   ],)

Я хочу заменить виджет Provider виджетом Stream Provider, поскольку я работаю с потоками. Как я могу использовать тот же поставщик changenotifierproxy (модель корзины), который зависит от поставщика потока, а не от Provider.


person narayan rathod    schedule 16.07.2020    source источник


Ответы (1)


Я думаю, вы можете попробовать использовать свойство builder для MultiProvider, чтобы получить новый BuildContext, у которого есть доступ к предыдущему построителю поставщиков (чтобы вы могли, например, вызвать Provider.of<CatalogModel>.yourStreamValue).

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

)

person Adrien Arcuri    schedule 30.03.2021