Sobes.tech
Junior — Middle

¿Puedes explicar el principio de funcionamiento de InheritedWidget en Flutter?

sobes.tech AI

Respuesta de la IA

InheritedWidget en Flutter se utiliza para transmitir datos hacia abajo en la jerarquía de widgets sin necesidad de pasarlos explícitamente a través de los constructores de cada widget hijo. Esto permite que los widgets hijos accedan a datos compartidos y se actualicen automáticamente cuando estos cambian.

Principio de funcionamiento:

  • InheritedWidget almacena datos que deben estar disponibles para los descendientes.
  • Los descendientes acceden a estos datos mediante el método of(context).
  • Si los datos en InheritedWidget cambian, Flutter notifica a todos los widgets que dependen de este InheritedWidget, y estos se reconstruyen.

Ejemplo:

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

// Uso:
// En el widget padre, envolver el árbol en MyData
// En los widgets hijos, obtener los datos mediante MyData.of(context)?.counter

De esta manera, InheritedWidget ayuda a compartir de manera eficiente el estado y los datos entre widgets sin una transmisión excesiva de parámetros.