Sobes.tech
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 помогает эффективно делиться состоянием и данными между виджетами без избыточной передачи параметров.