Выбор ответа Middle Анимации обновлено
Flutter: addListener с setState
Вопрос
Почему controller.addListener(() => setState(() {})) в большом экране считается плохим решением?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Весь build экрана выполняется на каждом кадре, хотя меняется одна деталь. Решение рабочее, но дорогое: весь экран строится заново на каждом кадре.
Варианты ответа
- Слушатель вообще нельзя добавить к контроллеру, код упадёт при запуске анимации
setStateнельзя вызывать чаще раза в секунду, лишние вызовы будут отброшены- Анимация пойдёт в обратную сторону, потому что
setStateсбрасывает контроллер - Весь
buildэкрана выполняется на каждом кадре, хотя меняется одна детальправильный ответ
Разбор
Решение рабочее, но дорогое: весь экран строится заново на каждом кадре. Лучше AnimatedBuilder или готовые FadeTransition, SlideTransition, которые перестраивают только свою часть, а child строится один раз. Ограничения на частоту setState нет, и направление анимации от этого не меняется.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.