Какой стейт-менеджер выбрать
Вопрос
Какой подход к управлению состоянием вы бы выбрали для нового Flutter-приложения и почему?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Разделить локальное (`setState`) и общее состояние
Все решения основаны на `InheritedWidget` и подписке
Критерии: размер команды, асинхронность, тестируемость, порог входа
Riverpod для асинхронных данных и зависимостей, BLoC для строгих правил и сложных потоков событий
Неизменяемое состояние, побочные эффекты отдельно от построения UI
Что могут спросить следом
- Как вы тестируете бизнес-логику без UI?
- Как избежать перестроения всего экрана при изменении одного поля?
- Где хранить состояние формы?
Разбор
Образцовый ответ: «Сначала разделяю состояние. Локальное, вроде раскрытия карточки или текущей вкладки, держу в State. Для общего выбираю по проекту. Если много асинхронных данных, кеша и зависимостей между сервисами, беру Riverpod: провайдеры не зависят от дерева, удобно подменять в тестах, есть AsyncValue и autoDispose. Если команда большая и нужны строгие правила, предсказуемость и логирование событий, BLoC: события на вход, состояния на выход, blocTest. Для маленького приложения хватит Provider. Независимо от выбора состояние делаю неизменяемым через freezed, подписываюсь точечно через select или buildWhen, а побочные эффекты вроде навигации делаю в слушателях, а не в build»
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.