Выбор ответа Middle Производительность обновлено
Flutter: метод _buildX или отдельный виджет
Вопрос
Почему часть UI лучше вынести в отдельный класс-виджет, а не в метод _buildHeader()?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Отдельный const-виджет не перестраивается с родителем и имеет свой контекст. Метод выполняется при каждом build родителя, и его результат всегда строится заново.
Варианты ответа
- Методы в Dart вызываются медленнее конструкторов, и на больших экранах это заметно
- Методы, возвращающие виджеты, запрещены линтером Flutter и не пройдут анализ
- Отдельный
const-виджет не перестраивается с родителем и имеет свой контекстправильный ответ - Разницы нет: это вопрос стиля, Flutter обрабатывает оба варианта одинаково
Разбор
Метод выполняется при каждом build родителя, и его результат всегда строится заново. Отдельный виджет с const-конструктором Flutter пропустит, если параметры не менялись, а setState внутри него перестроит только его. Плюс свой контекст (полезно для Theme.of, Scaffold.of). Скорость вызова не отличается, и методы не запрещены, но на собесе ожидают именно этот аргумент.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.