【发布时间】:2021-06-24 08:21:38
【问题描述】:
我有一个类 Cart,它是 ChangeNotifier。它具有项目作为属性,它也是一个 ChangeNotifier。
当我更新项目的属性时,它不会立即反映。
class Cart with ChangeNotifier {
final List<Item> _items = [];
Customer customer;
setCustomer(Customer customer) {
customer = customer;
notifyListeners();
}
get items => _items;
...
removeItem(int index) {
_items.removeAt(index);
notifyListeners();
}
...
}
class InvoiceDetail with ChangeNotifier {
int id;
String name;
double price;
double qty;
InvoiceDetail(
{Key key,
this.id,
this.name,
this.price,
this.qty = 1,
})
: super();
double get lineTotal => unitPrice * qty - discount;
increaseQty() {
qty++
notifyListeners();
}
...
}
当我在子组件中使用 incrementQty 时,它不会立即得到反映。如何收听属性通知并触发它们?
【问题讨论】:
-
在父级中为每个项目添加监听器,然后在监听器中通知父级
-
能否提供样品。
-
我喜欢使用包
flutter_hooks和hooks_riverpod来执行此操作。它将允许您将更改通知程序包装在ChangeNotifierProvider中并在您的构建方法中调用useProvider以在更改通知程序更新时自动重新构建
标签: flutter dart flutter-provider state-management