Ответ вслух Middle Управление состоянием спрашивают часто обновлено

Какой стейт-менеджер выбрать

Вопрос

Какой подход к управлению состоянием вы бы выбрали для нового Flutter-приложения и почему?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Сначала разделяю состояние. Локальное, вроде раскрытия карточки или текущей вкладки, держу в State.

Что должно прозвучать в ответе

  • Разделить локальное (`setState`) и общее состояние

  • Все решения основаны на `InheritedWidget` и подписке

  • Критерии: размер команды, асинхронность, тестируемость, порог входа

  • Riverpod для асинхронных данных и зависимостей, BLoC для строгих правил и сложных потоков событий

  • Неизменяемое состояние, побочные эффекты отдельно от построения UI

Что могут спросить следом

  • Как вы тестируете бизнес-логику без UI?
  • Как избежать перестроения всего экрана при изменении одного поля?
  • Где хранить состояние формы?

Разбор

Образцовый ответ: «Сначала разделяю состояние. Локальное, вроде раскрытия карточки или текущей вкладки, держу в State. Для общего выбираю по проекту. Если много асинхронных данных, кеша и зависимостей между сервисами, беру Riverpod: провайдеры не зависят от дерева, удобно подменять в тестах, есть AsyncValue и autoDispose. Если команда большая и нужны строгие правила, предсказуемость и логирование событий, BLoC: события на вход, состояния на выход, blocTest. Для маленького приложения хватит Provider. Независимо от выбора состояние делаю неизменяемым через freezed, подписываюсь точечно через select или buildWhen, а побочные эффекты вроде навигации делаю в слушателях, а не в build»

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме