Flutter 在内部侦听提供程序
假设这是我的提供商模型:Flutter 在内部侦听提供程序,flutter,flutter-provider,Flutter,Flutter Provider,假设这是我的提供商模型: class Model extends ChangeNotifier { Product _product = Product(-1); Product get product => _product; void updateProduct(Product newProduct) { _product = newProduct; notifyListeners(); } } class Product{ final int
class Model extends ChangeNotifier {
Product _product = Product(-1);
Product get product => _product;
void updateProduct(Product newProduct) {
_product = newProduct;
notifyListeners();
}
}
class Product{
final int id;
Product(this.id);
static Product of(BuildContext context) {
final model = Provider.of<Model>(context, listen: false);
return model.product;
}
static void update(BuildContext context, Product newProduct) {
final model = Provider.of<Model>(context, listen: false); // desc_1
model.updateProduct(newProduct);
}
}
我正在lib/home.dart文件中收听:
谁能告诉我怎么才能做到
我知道我可以直接使用提供商。当然。。。直接在我的构建方法中,让这个模型工作,但是那样的话,我总是需要使用两行代码
final provider = Provider.of<Model>(context);
final product = provider.product;
要想做你想做的事:
在您的ChangeNotifierProvider之后。。。在你的主飞镖和你的材料之前。。。添加此代码:
... 孩子:建筑工人
生成器:上下文{
返回ChangeNotifierProvider.value
值:Provider.ofcontext.product
孩子:MaterialApp。。。;
}
这样,您将添加一个将侦听模型产品更改的提供者
现在确保类Product扩展ChangeNotifier{…},而不是使用Product.ofcontext.id;这是不需要的,因为现在有一个提供商为您处理此问题,您可以执行以下操作:
Provider.ofcontext.id
函数更新和更新产品应按预期工作。谢谢,过几天我会试一试,并会让您知道。
final id = Product.of(context).id; // doesn't listen to changes
final provider = Provider.of<Model>(context);
final product = provider.product;