⚡️⚡️InheritedWidget⚡️⚡️
1⃣
در مورد انواع ویجت های فلاتر گفتیم که برخلاف تصور رایج دو نوع ویجت بیس در فلاتر نداریم و علاوه بر ویجت های stateless و stateful ویجت های دیگه ای هم هستن .
🔥از جمله این ویجت ها که خیلی هم مهم و کاربردی هست و در core فلاتر هم ازش خیلی استفاده شده InheritedWidget هست.
🔥اولین نکته اینکه این ویجت بیس ترین و مهمترین ویجت فلاتر برای بحث state management هست.
✅پکیج معروف provider چیزی نیست جز یک wrapper روی این ویجت فلاتر و در واقع کار با اون رو راحت تر کرده.
✅پکیج Bloc هم خودش از provider و در واقع InheritedWidget استفاده میکنه.
😍😍در پست های بعدی بیشتر راجبش صحبت میکنیم.
#inherited_widget
#widgets
1⃣
در مورد انواع ویجت های فلاتر گفتیم که برخلاف تصور رایج دو نوع ویجت بیس در فلاتر نداریم و علاوه بر ویجت های stateless و stateful ویجت های دیگه ای هم هستن .
🔥از جمله این ویجت ها که خیلی هم مهم و کاربردی هست و در core فلاتر هم ازش خیلی استفاده شده InheritedWidget هست.
🔥اولین نکته اینکه این ویجت بیس ترین و مهمترین ویجت فلاتر برای بحث state management هست.
✅پکیج معروف provider چیزی نیست جز یک wrapper روی این ویجت فلاتر و در واقع کار با اون رو راحت تر کرده.
✅پکیج Bloc هم خودش از provider و در واقع InheritedWidget استفاده میکنه.
😍😍در پست های بعدی بیشتر راجبش صحبت میکنیم.
#inherited_widget
#widgets
⚡️⚡️InheritedWidget⚡️⚡️
2⃣
وقتی که از stateful استفاده میکینم بعد از setState فقط متد build کلاس state یک بار دیگه اجرا میشه و باعث میشه که کل درختی که زیر مجموعه اون هست یک بار دیگه ساخته و کانفیگ بشه.
🔥ولی قابلیتی که inheritedWidget ارائه میده این هست که با استفاده از اون میشه هر قسمت دلخواهی از درخت رو که خواستیم (به صورت دقیق تر هر قسمت درخت که به inheritedWidget مربوطه وابسته بود) آپدیت (rebuild) کنیم.
✅برای این منظور یک InheritedWidget در راس درخت مورد نظر قرار میگیره.
از اونجایی که InheritedWidget یک پروکسی هست یک ویجت به عنوان child میگیره و با اون child زیر درخت اون ساخته میشه.
علاوه بر اون یک سری data هم میتونه داشته باشه و ویجت های زیر مجموعه با استفاده از دستور
widgetName.of(context)
میتونن به اون دیتا که داخل inheritedWidget هست دسترسی پیدا کنن.
🔥حالا نکته مهم اینجاست که هر موقع که inheritedWidget مربوطه اپدیت بشه و دیتاش تغییر کنه هر ویجتی که توی زیر درختش با استفاده از متد
.of
بهش وابسته شده باشه rebuild میشه و ویجت هایی که بهش وابسته نشدن rebuild نمیشن.
😍😍یعنی یک rebuild کاملن هوشمند.
🔥فقط اون هایی که بهش وابسته شدن rebuild میشن.
#inherited_widget
#widgets
2⃣
وقتی که از stateful استفاده میکینم بعد از setState فقط متد build کلاس state یک بار دیگه اجرا میشه و باعث میشه که کل درختی که زیر مجموعه اون هست یک بار دیگه ساخته و کانفیگ بشه.
🔥ولی قابلیتی که inheritedWidget ارائه میده این هست که با استفاده از اون میشه هر قسمت دلخواهی از درخت رو که خواستیم (به صورت دقیق تر هر قسمت درخت که به inheritedWidget مربوطه وابسته بود) آپدیت (rebuild) کنیم.
✅برای این منظور یک InheritedWidget در راس درخت مورد نظر قرار میگیره.
از اونجایی که InheritedWidget یک پروکسی هست یک ویجت به عنوان child میگیره و با اون child زیر درخت اون ساخته میشه.
علاوه بر اون یک سری data هم میتونه داشته باشه و ویجت های زیر مجموعه با استفاده از دستور
widgetName.of(context)
میتونن به اون دیتا که داخل inheritedWidget هست دسترسی پیدا کنن.
🔥حالا نکته مهم اینجاست که هر موقع که inheritedWidget مربوطه اپدیت بشه و دیتاش تغییر کنه هر ویجتی که توی زیر درختش با استفاده از متد
.of
بهش وابسته شده باشه rebuild میشه و ویجت هایی که بهش وابسته نشدن rebuild نمیشن.
😍😍یعنی یک rebuild کاملن هوشمند.
🔥فقط اون هایی که بهش وابسته شدن rebuild میشن.
#inherited_widget
#widgets
⚡️⚡️InheritedWidget⚡️⚡️
3⃣
🛑مثالی که میشه از این ویجت زد ویجت Theme هست که از ویجت های فلاتر هست که از InheritedWidget استفاده کرده و باعث میشه که هر ویجتی که با استفاده از دستور Theme.of بهش وابسته شد بعد از اپدیت تم برنامه rebuild بشه.
دستور Theme.of هم دیتای مربوط به این ویجت یعنی ThemeData رو برمیگردونه که هر بار این دیتا آپدیت بشه ، ویجت های وابسته توی کل برنامه rebuild میشن.
🔥شاید برید توی کدهای فلاتر و ببینید که Theme از نوع inheritedWidget نیست.
یکم بیشتر جستجو کنید میبیند که از inheritedWidget استفاده کرده.
#inherited_widget
#widgets
3⃣
🛑مثالی که میشه از این ویجت زد ویجت Theme هست که از ویجت های فلاتر هست که از InheritedWidget استفاده کرده و باعث میشه که هر ویجتی که با استفاده از دستور Theme.of بهش وابسته شد بعد از اپدیت تم برنامه rebuild بشه.
دستور Theme.of هم دیتای مربوط به این ویجت یعنی ThemeData رو برمیگردونه که هر بار این دیتا آپدیت بشه ، ویجت های وابسته توی کل برنامه rebuild میشن.
🔥شاید برید توی کدهای فلاتر و ببینید که Theme از نوع inheritedWidget نیست.
یکم بیشتر جستجو کنید میبیند که از inheritedWidget استفاده کرده.
#inherited_widget
#widgets