Я следую документации флаттера о классе BuildContext , потому что мне не ясно, как и зачем использовать этот класс.
Widget build(BuildContext context) {
// here, Scaffold.of(context) returns null
return Scaffold(
appBar: AppBar(title: Text('Demo')),
body: Builder(
builder: (BuildContext context) {
return FlatButton(
child: Text('BUTTON'),
onPressed: () {
// here, Scaffold.of(context) returns the locally created Scaffold
Scaffold.of(context).showSnackBar(SnackBar(
content: Text('Hello.')
));
}
);
}
)
);
}
Я не получаю этот абзац:
BuildContext для определенного виджета может со временем менять местоположение
как виджет перемещается вокруг дерева. Из-за этого ценности
возвращаемые из методов этого класса не должны кэшироваться за
выполнение одной синхронной функции.
Объекты BuildContext на самом деле являются объектами Element. The BuildContext
интерфейс используется для предотвращения прямых манипуляций с элементом
объекты.
при перемещении виджета по дереву -> как это происходит?
В соответствии с моим пониманием (и, пожалуйста, исправьте меня, если я ошибаюсь здесь), дерево виджетов - это в основном то, как виджеты «сложены» и как они строят друг друга. Поскольку не рекомендуется иметь подвиджеты, на которые ссылаются как на свойства в вашем классе CustomWidget, как я могу изменить положение в дереве виджета, возвращаемого во время метода сборки (или как это происходит по умолчанию из-за структуры)