Выбор ответа Junior Виджеты и три дерева спрашивают часто обновлено

Flutter: что перестраивает setState

Вопрос

Что именно перестроится после setState в State виджета CounterCard?

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

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

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

Коротко

Правильный ответ: build этого State и возвращённое им поддерево, кроме неизменных const. setState помечает элемент этого State грязным, на следующем кадре вызывается его build.

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

  1. build этого State и возвращённое им поддерево, кроме неизменных constправильный ответ
  2. Всё приложение от MaterialApp, ведь Flutter не знает, где используется значение
  3. Только виджет Text, где выводится число, остальные элементы не трогаются
  4. Родитель CounterCard и все его потомки, чтобы родитель получил новые размеры

Разбор

setState помечает элемент этого State грязным, на следующем кадре вызывается его build. Дальше элементы детей сравнивают новые виджеты со старыми и обновляются; идентичные const-экземпляры пропускаются. Родитель не перестраивается. Flutter не знает, какой именно виджет использует переменную, поэтому вызывает build целиком: отсюда совет держать State маленьким.

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

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