TGViewer
Сёрф Flutter-разработка Сёрф Flutter-разработка @surf_flutter · 3.2K subscribers
Post #266 2.37K
Почему setState() в начале метода build() не вызывает бесконечный цикл?

Такой вопрос получил от своих студентов Flutter-разработчик Surf и ментор нашего курса Егор. Мы решили, что стоит оформить его ответ в виде отдельной заметки.

Итак, мы имеем такую ситуацию внутри State у StatefulWidget:

@override
Widget build(BuildContext context) {
setState((){});
return SomeWidget();
{

Мы знаем, что setState() вызывает перерисовку виджета, так почему же он не зацикливается?

В качестве затравки вот вам пару популярных (и неправильных) ответов, которые предложили студенты:

1. Нет, что ты! Бесконечный цикл непременно получится.
2. Бесконечный цикл не возникнет, поскольку на текущий момент у State свойство mounted равно false и мы не сможем вызвать метод setState().

Чтобы разобраться нам понадобится вспомнить следующее:
➡️ Что такое State и как он связан с StatefulElement?
➡️ Как работает метод setState()?

🔵 Vanilla state management
🔵 Ephemeral state
🔵 Почему появился setState()

#экспертный #от_сёрфера
  • 👍 39
  • 🔥 12
  • ❤ 3
  • 👎 1
  • 👏 1
More from @surf_flutter
  1. Aug 20, 2026🐦 Ищем Flutter-разработчика нового поколения. Если ты активно работаешь с AI-агентами, ис…
  2. Aug 18, 2026🧸 Продолжаем серию постов «Флаттер для самых маленьких». В новой части поговорим про меха…
  3. Aug 7, 2026🐳 Экран во Flutter держится на трёх китах, и если разобраться в их взаимодействии, рендер…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →