Sobes.tech
Junior — Middle

Können Sie das Funktionsprinzip von InheritedWidget in Flutter erklären?

sobes.tech KI

Antwort von AI

InheritedWidget in Flutter wird verwendet, um Daten nach unten im Widget-Baum zu übertragen, ohne sie explizit durch die Konstruktoren jedes Kind-Widgets zu übergeben. Dies ermöglicht es Kind-Widgets, auf gemeinsame Daten zuzugreifen und sich automatisch zu aktualisieren, wenn sich diese ändern.

Funktionsprinzip:

  • InheritedWidget speichert Daten, die für Nachkommen zugänglich sein sollen.
  • Nachkommen greifen auf diese Daten über die Methode of(context) zu.
  • Wenn sich die Daten im InheritedWidget ändern, benachrichtigt Flutter alle Widgets, die davon abhängen, und sie werden neu aufgebaut.

Beispiel:

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;
  }
}

// Verwendung:
// Im Eltern-Widget den Baum in MyData einwickeln
// In den Kind-Widgets Daten über MyData.of(context)?.counter abrufen

Auf diese Weise hilft InheritedWidget, den Zustand und die Daten effizient zwischen Widgets zu teilen, ohne übermäßige Parameterübergabe.