Каждое изменение корзины перерисовывает весь экран каталога с сотней карточек
Widget build(BuildContext context) {
final cart = context.watch<Cart>();
return Scaffold(
appBar: AppBar(actions: [CartBadge(count: cart.count)]),
body: CatalogGrid(products: products),
);
}
Корзина — ChangeNotifier из provider. Бейдж — единственное место, где она нужна, но при добавлении товара DevTools показывает пересборку всего CatalogGrid. Что сделать?
- Слушать корзину только внутри виджета бейджа
- Заменить context.watch на context.read
- Вызывать notifyListeners реже, раз в секунду
- Сделать CatalogGrid виджетом StatefulWidget
