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

Flutter: что такое BuildContext

Вопрос

Чем на самом деле является BuildContext?

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

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

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

Коротко

Правильный ответ: Это Element виджета, доступный через ограниченный интерфейс, он знает своё место в дереве. Element реализует интерфейс BuildContext.

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

  1. Это глобальный объект приложения, одинаковый для всех виджетов, через него ищут сервисы
  2. Это ссылка на RenderObject виджета, поэтому через контекст можно узнать его размер
  3. Это снимок темы и MediaQuery на момент сборки, который передаётся в каждый build
  4. Это Element виджета, доступный через ограниченный интерфейс, он знает своё место в деревеправильный ответ

Разбор

Element реализует интерфейс BuildContext. Поэтому контекст привязан к позиции в дереве, и Theme.of(context) ищет ближайшего предка от этого места. Глобального контекста нет. Рендер-объект можно получить через context.findRenderObject(), но сам контекст это элемент. Тема не копируется, а ищется в дереве при каждом вызове.

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

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