Back to questions
Яндекс
Junior — Middle
99
Можете объяснить принцип работы InheritedWidget в Flutter?
Companies where asked
HamkorBank
Answer from AI
sobes.tech AI
InheritedWidget в Flutter используется для передачи данных вниз по дереву виджетов без необходимости явно передавать их через конструкторы каждого дочернего виджета. Это позволяет дочерним виджетам получать доступ к общим данным и автоматически обновляться при их изменении.
Принцип работы:
- InheritedWidget хранит данные, которые должны быть доступны потомкам.
- Потомки получают доступ к этим данным через метод
of(context). - Если данные в InheritedWidget изменяются, Flutter уведомляет все виджеты, которые зависят от этого InheritedWidget, и они перестраиваются.
Пример:
class MyData extends InheritedWidget {
final int counter;
MyData({required this.counter, required Widget child}) : super(child: child);
static MyData? of(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType<MyData>();
}
@override
bool updateShouldNotify(MyData oldWidget) {
return oldWidget.counter != counter;
}
}
// Использование:
// В виджете-родителе оборачиваем дерево в MyData
// В дочерних виджетах получаем данные через MyData.of(context)?.counter
Таким образом, InheritedWidget помогает эффективно делиться состоянием и данными между виджетами без избыточной передачи параметров.