Sobes.tech
Junior — Middle

Оё метавонед принсипи кори InheritedWidget дар Flutter-ро шарҳ диҳед?

sobes.tech AI

Ҷавоб аз AI

Дар Flutter, InheritedWidget истифода мешавад барои интиқоли маълумот ба поён дар дарахти widgetҳо бе ниёз ба онҳо ба таври ошкоро тавассути конструкторҳои ҳар як фарзанди widget гузаштан. Ин имкон медиҳад, ки widgetҳои фарзанд ба маълумоти умумӣ дастрасӣ пайдо кунанд ва автоматӣ навсозӣ шаванд вақте ки онҳо тағйир меёбанд.

Принсипи кор:

  • InheritedWidget маълумотҳоро нигоҳ медорад, ки бояд барои фарзандон дастрас бошанд.
  • Фарзандон ба ин маълумотҳо тавассути усули of(context) дастрасӣ мегиранд.
  • Агар маълумот дар InheritedWidget тағйир ёбад, Flutter ҳамаи widgetҳое, ки аз он вобастаанд, огоҳ мекунад ва онҳо дубора сохта мешаванд.

Масалан:

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

// Истифода:
// Дар widget-и падар, дарахтро бо MyData пӯшонед
// Дар widget-и фарзандон, маълумотҳоро тавассути MyData.of(context)?.counter гиред

Инчунин, InheritedWidget кӯмак мекунад, ки ҳолат ва маълумотҳоро байни widgetҳо самаранок тақсим кунед, бе интиқоли зиёди параметрҳо.