学官方文档的时候看见的一个叫ChangeNotifierProxyProvider,他是Provider中的一种,网上找了下关于这个Provider的介绍并不多,而且有官方的例子也是以前的了不是最新版本,我把代码片段贴一下。
MultiProvider(
providers:[
Provider(create: (context) => CatalogModel()),
ChangeNotifierProxyProvider<CatalogModel, CartModel>(
create: (context) => CartModel(),
update: (context, catalog, cart){
if(cart == null) throw ArgumentError.notNull('cart');
cart.catalog = catalog;
return cart;
},
)
],
child:
.......
MultiProvider就不多说了,就是一个providers的集合,是因为防止多层provider嵌套而出现的。具体可以看下官方文档。其中第一个provider就是不能最基础的provier。
第二个ChangeNotifierProxyProvider,其实它就是ChangeNotifierProvider和ProxyProvider的一个联和使用,CartModel就是被创建成ChangeNotifierProvider,而update就对应ProxyProvider,他的意思就是当CatalogModel被更新的时候,CartModel响应的内容也要被更新。其中响应的内容也就是指update中的内容。