Вступить в клуб →
средняявопросFlutter и Dart: виджеты, рендер и асинхронность

Каждое изменение корзины перерисовывает весь экран каталога с сотней карточек

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

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела