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.