Выбор ответа Middle Анимации обновлено

Flutter: addListener с setState

Вопрос

Почему controller.addListener(() => setState(() {})) в большом экране считается плохим решением?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Весь build экрана выполняется на каждом кадре, хотя меняется одна деталь. Решение рабочее, но дорогое: весь экран строится заново на каждом кадре.

Варианты ответа

  1. Слушатель вообще нельзя добавить к контроллеру, код упадёт при запуске анимации
  2. setState нельзя вызывать чаще раза в секунду, лишние вызовы будут отброшены
  3. Анимация пойдёт в обратную сторону, потому что setState сбрасывает контроллер
  4. Весь build экрана выполняется на каждом кадре, хотя меняется одна детальправильный ответ

Разбор

Решение рабочее, но дорогое: весь экран строится заново на каждом кадре. Лучше AnimatedBuilder или готовые FadeTransition, SlideTransition, которые перестраивают только свою часть, а child строится один раз. Ограничения на частоту setState нет, и направление анимации от этого не меняется.

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

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