Выбор ответа Middle Жизненный цикл спрашивают часто обновлено

Flutter: запрос в build

Вопрос

Почему нельзя запускать сетевой запрос внутри build?

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

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

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

Коротко

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

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

  1. build вызывается много раз, и каждый вызов отправит новый запросправильный ответ
  2. build выполняется в отдельном изоляте, где нет доступа к сети и плагинам
  3. build вызывается ровно один раз, и ответ некуда будет положить при обновлении
  4. Компилятор запрещает await в build, а обычный вызов без await вполне безопасен

Разбор

build должен быть чистым и быстрым: фреймворк вызывает его когда угодно и сколько угодно. Запрос в нём дублируется на каждом перестроении. Запросы запускают в initState, didUpdateWidget (при смене параметров) или в стейт-менеджере. Изолятов у build нет, а «один раз» как раз неверно.

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

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