Sobes.tech
Junior — Middle

Vai jūs varat izskaidrot InheritedWidget darbības principu Flutter?

sobes.tech AI

Atbilde no AI

Flutter'ā InheritedWidget tiek izmantots datu nodošanai uz leju pa widgetu koku, nemainot tos tieši caur katra bērna widget konstruktoru. Tas ļauj bērnu widgetiem piekļūt kopīgiem datiem un automātiski atjaunoties to izmaiņu gadījumā.

Darbības princips:

  • InheritedWidget glabā datus, kas jābūt pieejamiem pēcnācējiem.
  • Pēcnācēji piekļūst šiem datiem, izmantojot metodi of(context).
  • Ja dati InheritedWidget mainās, Flutter informē visus ar to saistītos widgetus, un tie tiek pārveidoti.

Piemērs:

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

// Lietošana:
// Vecā widgeta ietvaros ietveriet koku ar MyData
// Bērnu widgetos iegūstiet datus ar MyData.of(context)?.counter

Tādējādi InheritedWidget palīdz efektīvi dalīties ar stāvokli un datiem starp widgetiem, ne pārāk daudz parametrus pārsūtot.