Middle
InheritedWidget nima va uni Flutterda qanday ishlatish mumkin?
sobes.tech AI
AIdan javob
InheritedWidget Flutter'da, widgetlar daraxtida ma'lumotlarni samarali tarzda pastga tarqatish imkonini beradigan maxsus turdagi widgetdir. Bu, har bir oraliq widgetning konstruktorlari orqali ularni aniq uzatmasdan, ma'lumotlar va xizmatlarni widgetlar daraxtiga taqdim etish uchun ishlatiladi.
InheritedWidget ning asosiy xususiyatlari:
- Ma'lumotlarni samarali tarqatish: InheritedWidget o'zgarganda, Flutter faqat unga bog'liq bo'lgan widgetlarni qayta quradi.
- Ma'lumotlarga oddiy kirish: Bolalar widgetlar
of()statik metod yordamida InheritedWidget ma'lumotlariga kirishlari mumkin. - Qaramliklarni boshqarish:
updateShouldNotifymetodi, qaysi vaqtda qaram bo'lgan widgetlar qayta qurilishi kerakligini nazorat qilish imkonini beradi.
InheritedWidget qanday ishlatiladi:
-
InheritedWidgetdan meros olgan sinfni yarating:class MyInheritedWidget extends InheritedWidget { const MyInheritedWidget({ Key? key, required this.data, required Widget child, }) : super(key: key, child: child); final String data; // Tarqatiladigan ma'lumotlar // InheritedWidget nusxasiga kirish uchun metod static MyInheritedWidget of(BuildContext context) { final MyInheritedWidget? result = context.dependOnInheritedWidgetOfExactType<MyInheritedWidget>(); assert(result != null, 'Contextda MyInheritedWidget topilmadi'); return result!; } // Qaram widgetlar o'zgarishlar haqida xabar berish kerakligini belgilaydi @override bool updateShouldNotify(MyInheritedWidget oldWidget) { return data != oldWidget.data; // Ma'lumotlar o'zgarganda xabar berish } } -
InheritedWidgetni widget daraxtiga joylashtiring:class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MyInheritedWidget( // Widget daraxtini o'rab oladi data: 'InheritedWidget dan salom', child: MaterialApp( title: 'InheritedWidget Demo', home: Scaffold( appBar: AppBar( title: const Text('InheritedWidget Demo'), ), body: const Center( child: MyDependentWidget(), // Ma'lumotlarni ishlatadigan widget ), ), ), ); } } -
Bolalar widgetdan ma'lumotlarga kirish:
class MyDependentWidget extends StatelessWidget { const MyDependentWidget({super.key}); @override Widget build(BuildContext context) { // of() metodidan foydalanib ma'lumotlarni olamiz final String receivedData = MyInheritedWidget.of(context).data; return Text( receivedData, style: Theme.of(context).textTheme.headlineMedium, ); } }
InheritedWidget Flutter'da ko'plab holatni boshqarish yechimlarining asosidir, masalan Provider, Bloc. U samarali va deklarativ tarzda ma'lumotlarni widgetlar daraxtida almashish imkonini beradi.