Выбор ответа Middle Виджеты и три дерева спрашивают часто обновлено
Flutter: что такое BuildContext
Вопрос
Чем на самом деле является BuildContext?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Это Element виджета, доступный через ограниченный интерфейс, он знает своё место в дереве. Element реализует интерфейс BuildContext.
Варианты ответа
- Это глобальный объект приложения, одинаковый для всех виджетов, через него ищут сервисы
- Это ссылка на
RenderObjectвиджета, поэтому через контекст можно узнать его размер - Это снимок темы и
MediaQueryна момент сборки, который передаётся в каждыйbuild - Это
Elementвиджета, доступный через ограниченный интерфейс, он знает своё место в деревеправильный ответ
Разбор
Element реализует интерфейс BuildContext. Поэтому контекст привязан к позиции в дереве, и Theme.of(context) ищет ближайшего предка от этого места. Глобального контекста нет. Рендер-объект можно получить через context.findRenderObject(), но сам контекст это элемент. Тема не копируется, а ищется в дереве при каждом вызове.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Виджеты и три дерева»
- StatelessWidget и StatefulWidget
- Widget, Element, RenderObject
- Flutter: когда нужен GlobalKey
- Flutter: удаление элемента списка без ключей
- Ключи и их назначение
- Код-ревью: список задач
- Flutter: Scaffold.of не находит Scaffold
- Flutter: что перестраивает setState