Sobes.tech
Junior — Middle

Pode explicar o princípio de funcionamento do InheritedWidget no Flutter?

sobes.tech IA

Resposta da IA

InheritedWidget no Flutter é utilizado para transmitir dados para baixo na árvore de widgets sem necessidade de passá-los explicitamente através dos construtores de cada widget filho. Isso permite que os widgets filhos acessem dados comuns e se atualizem automaticamente quando esses dados mudam.

Princípio de funcionamento:

  • InheritedWidget armazena dados que devem estar acessíveis aos descendentes.
  • Os descendentes acessam esses dados através do método of(context).
  • Se os dados no InheritedWidget mudarem, o Flutter notifica todos os widgets que dependem dele, e eles são reconstruídos.

Exemplo:

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:
// No widget pai, envolver a árvore com MyData
// Nos widgets filhos, obter os dados através de MyData.of(context)?.counter

Assim, InheritedWidget ajuda a compartilhar de forma eficiente o estado e os dados entre widgets sem transmissão excessiva de parâmetros.