Pure Coder
787 subscribers
189 photos
30 videos
8 files
150 links
⭕️آدرس سایت:
https://purecoder.ir

⭕️گروه پرسش و پاسخ:
@purecoder_gp

⭕️پشتیبانی:
@PureCoder_support
@MohammadTaherri
Download Telegram
Channel created
🔥Flutter Challenge
🔥چالش فلاتر

توی این کانال با چالش های متنوع و جذاب فلاتر رو عمیق تر و بهتر یاد می گیریم.

کوییز های متنوع و مفهومی
مینی اموزش های کاربردی
مقاله های شیرین
بحث های چالشی جذاب
و....

🔥برای نفوذ به اعماق فلاتر با این کانال همراه باش.😍😍
⚡️⚡️Dart Const⚡️⚡️

🔥🔥🔥حتا اگه مفهوم const توی دارت رو بلدی این مجموعه مقاله رو از دست نده
🔴Introduction
https://vrgl.ir/P0OY9

🟢 Const variables
https://vrgl.ir/9gY6l

🔴Classes - static const
https://vrgl.ir/tSm5E

🟢Const values
https://vrgl.ir/CP6nf

🔴Classes - const constructor
https://vrgl.ir/0nqKn

🟢Flutter
https://vrgl.ir/VCfTr
در آینده بحث null safety رو خواهیم داشت...

شبیه مقالاتی که برای const داشتیم پیش میریم...

همون طور که const توسط کامپایلر مدیریت میشه، null safety هم موضوعی هست که توسط کامپایلر مدیریت میشه و برای درک و استفاده درست باید دقیقن بدونیم که کامپایلر در این مورد چکار میکنه.
⚡️⚡️Three types of equality⚡️⚡️

توی مقاله های مربوط به const گفتیم که وقتی که از اپراتور == استفاده میکنیم و دو تا variable رو با هم مقایسه میکنیم بررسی میکنه که آیا این دو تا variable دقیقن به یک مکان از حافظه اختصاص دارن (یا بهتره بگیم اون دو تا متغیر دقیقن به یک خونه از حافظه اشاره میکنن) یا که نه....

به این نوع مقایسه دو تا variable نوع Reference equality میگن.

یعنی آیا رفرنس یکسانی دارن...

اما علاوه بر این دو روش دیگه هم برای بررسی برابری توی دنیای برنامه نویسی استفاده میشه .

انواع روش های بررسی برابری در دنیای برنامه نویسی.

1) Reference equality
2) Identifier equality
3) Structural equality

هر کدوم از اینها کاربرد خاصی دارن و باید توی جایگاه مناسب ازشون استفاده بشه...
⚡️⚡️Widget is immutable⚡️⚡️

🔥ویجت توی فلاتر کلن immutable هست، فرقی نمیکنه ویجتمون Stateless باشه یا Stateful یا...

بعضی جاها میبینم که میگن Stateless ها immutable هستن و Stateful ها mutable هستن.
این جمله اصلن درست نیست.
ویجت های Stateful هم immutable هستن فقط یه State دارن که اون State در واقع mutable هست.

پس در هر صورت ویجت immutable هست و همه instance field های اون باید final باشن.

🔥پس طبق مفهوم کلاس های immutable( که توی مقاله const contractor ) بهش اشاره کردیم، هر وقت خواستیم ویجت مورد نظرمون رو بر اساس کانفیگ جدید تغییر بدیم باید یه ویجت جدید با کانفیگ جدید بسازیم نه اینکه ویجت قبلی رو اپدیت کنیم...
Pure Coder
⚡️⚡️Widget is immutable⚡️⚡️ 🔥ویجت توی فلاتر کلن immutable هست، فرقی نمیکنه ویجتمون Stateless باشه یا Stateful یا... بعضی جاها میبینم که میگن Stateless ها immutable هستن و Stateful ها mutable هستن. این جمله اصلن درست نیست. ویجت های Stateful هم immutable…
Prefer declaring const constructors on @immutable classes.dartprefer_const_constructors_in_immutables

اگه موقع ایجاد یه ویجت جدید توی نسخه جدید فلاتر (۲/۵) با این warning روبرو شدید.

بخاطر این هستش که از const constructor استفاده نکردین...

اگه روی لینک هشدار بزنید و صفحه مربوطه رو باز کنید عکس بالا رو میبنید که کامل توضیح داده.

همون طور که گفتیم ویجت ها توی فلاتر immutable هستن و باید const constructor داشته باشن.

حالا توی این ورژن به const constructor حساس تر شده و در صورت عدم رعایت هشدار میده....
⚡️⚡️Const Widget⚡️⚡️

🔥وقتی که یه ویجت رو به const constructor مجهز میکنیم و موقع ساخت ابجکت ازش به جای new از const استفاده میکنیم، چه اتفاقی میوفته؟

اول اینکه باعث میشه از اون کلاس ابجکت های مختلف ساخته نشه و بر اساس نیاز هایی که داریم موقع کامپایل ابجکت های مورد نیاز ساخته بشه و این باعث مدیریت رم میشه.

دوم باعث میشه که موقع rebuild شدن صفحه اون ویجت rebuild نشه (به خاطر نوع برخوردی که فریمورک فلاتر با ویجت های const میکنه) و این کمک میکنه که cpu کار کمتری انجام بده.

🔥پس هم کمک کردیم به مدیریت رم و هم کمک کردیم به بهینه تر شدن پردازش هایی که قراره cpu انجام بده.

🔥🔥با توجه به اینکه اینجور مواقع اون ویجتی که واسش از const استفاده کردین دیگه rebuild نمیشه، حواستون باشه اگه یه ویجتی هست که نیازه که rebuild بشه از const استفاده نکنین.
⚡️⚡️print⚡️⚡️

اگه موقع استفاده از دستور print بهتون Warning داد که توی پروداکشن از print استفاده نکنید...

میتونید به جاش از دستور debugPrint استفاده کنید
⚡️⚡️Theme.of⚡️⚡️

🔥اگه برنامتون قراره از چند تم استفاده کنه یا به هر طریقی قراره که تم برنامه آپدیت بشه مهم هست که Theme.of رو کجا صدا بزنید...

از Theme.of استفاده میکینم برای بدست اوردن اطلاعات تم برنامه.

وقتی که تم برنامه اپدیت میشه (پارامتر theme توی متریال اپ اپدیت میشه) یا اینکه تم برنامه سوییچ میشه (توی متریال اپ themeMode تغییر میکنه), مهم هست که همه ویجت هایی که از تم استفاده میکنن خودشون رو براساس تم جدید اپدیت کنن.

حالا این جا هست که مهم میشه که Theme.of رو باید کجا صدا بزنیم؟ و با اپدیت تم برنامه چه اتفاقی رخ میده؟
Pure Coder
⚡️⚡️Theme.of⚡️⚡️ 🔥اگه برنامتون قراره از چند تم استفاده کنه یا به هر طریقی قراره که تم برنامه آپدیت بشه مهم هست که Theme.of رو کجا صدا بزنید... از Theme.of استفاده میکینم برای بدست اوردن اطلاعات تم برنامه. وقتی که تم برنامه اپدیت میشه (پارامتر theme توی…
⚡️⚡️Theme.of⚡️⚡️

🔥هر ویجتی که این متد رو صدا میزنه و context خودش رو به این متد پاس میده (خیلی مهم هست که حتمن context خودش رو پاس بده) بعد از اپدیت تم ریبیلد میشه.

🔥به صورت دقیق تر اگه یه استیت لس این متد رو صدا بزنه بعد از اپدیت تم اون ویجت ریبیلد میشه

و اگه داخل استیت یه استیت فول این متد صدا زده بشه بعد از اپدیت تم به ترتیب
didChangeDependencies
build
صدا زده میشن.

پس این متد رو داخل متد build استیت لس و یا داخل متد didChangeDependencies یا build استیت صدا بزنید.

🔥حتمن context خود ویجت رو بهش پاس بدید.

🔥🔥اگه ویجت از نوع const هم باشه بعد از اپدیت تم ریبیلد میشه. و اینجا const بودن از ریبیلد شدن جلوگیری نمیکنه.
فلاتر چند نوع ویجت داره؟ (ویجت های بیس)
اسم ویجت های مورد نظرتون رو کامنت کنید، بعدن کامل راجبش توضیح میدیم...
Anonymous Poll
51%
2
13%
3
8%
4
21%
5
8%
هیچکدوم
⚡️⚡️Types of widgets⚡️⚡️

🔥انواع ویجت ها توی فلاتر به دسته های زیر تقسیم میشن :
1) StatelessWidget
2) StatefulWidget
3) InheritedWidget
4) ParentDataWidget
5) RenderObjectWidget

خود RenderObjectWidget انواع مختلفی داره :
LeafRenderObjectWidget
SingleChildRenderObjectWidget
MultiChildRenderObjectWidget

😍در مورد هر کدوم از اینها و کاربرد هاشون صحبت میکنیم...