⚡️⚡️Flutter Key⚡️⚡️
1⃣
توی چند پست آینده در مورد key ها صحبت میکنیم.
انواع اون ها رو بررسی میکنیم و کاربرد هر کدومشون رو میگیم.
🔥توی فلاتر یه کلاس به اسم Key داریم که abstract هست و پایه و اساس کلاس های دیگه هست.
این کلاس دو نوع فرزند داره
LocalKey
GlobalKey
این ها کلاس هایی هستند که از Key ارث بری کردند و دو نوع مختلف Key رو با کاربرد های مختلف برای ما میسازند.
پست های بعدی رو از دست ندید. 😍
#key
#flutter_key
#local_key
#global_key
1⃣
توی چند پست آینده در مورد key ها صحبت میکنیم.
انواع اون ها رو بررسی میکنیم و کاربرد هر کدومشون رو میگیم.
🔥توی فلاتر یه کلاس به اسم Key داریم که abstract هست و پایه و اساس کلاس های دیگه هست.
این کلاس دو نوع فرزند داره
LocalKey
GlobalKey
این ها کلاس هایی هستند که از Key ارث بری کردند و دو نوع مختلف Key رو با کاربرد های مختلف برای ما میسازند.
پست های بعدی رو از دست ندید. 😍
#key
#flutter_key
#local_key
#global_key
❤1👍1
⚡️⚡️Flutter Key⚡️⚡️
2⃣
🔥اولین نکته و اولین تفاوت این دو نوع Key رو از اسمشون میگیریم.
✔️کلید های global باید در کل اپ یکتا باشن ، یعنی اینکه اگه به یک ویجتی یه GlobalKey دادیم اون key رو دیگه نمیتونم به ویجت دیگه ای بدیم.
✔️اما LocalKey ها فقط در یک sub tree بررسی میشن یعنی اینکه میتونیم به دو تا ویجت LocalKey یکسان بدیم به شرط اینکه در یک sub tree نباشن.
🤔حالا اینکه این sub tree رو چگونه تحلیل کنیم و از کجا بفهمیم که کجاها مجاز نیستیم از LocalKey یکسان استفاده کنیم بستگی به مورد استفاده داره که به موقش در موردش صحبت میکنیم.
#key
#flutter_key
#local_key
#global_key
2⃣
🔥اولین نکته و اولین تفاوت این دو نوع Key رو از اسمشون میگیریم.
✔️کلید های global باید در کل اپ یکتا باشن ، یعنی اینکه اگه به یک ویجتی یه GlobalKey دادیم اون key رو دیگه نمیتونم به ویجت دیگه ای بدیم.
✔️اما LocalKey ها فقط در یک sub tree بررسی میشن یعنی اینکه میتونیم به دو تا ویجت LocalKey یکسان بدیم به شرط اینکه در یک sub tree نباشن.
🤔حالا اینکه این sub tree رو چگونه تحلیل کنیم و از کجا بفهمیم که کجاها مجاز نیستیم از LocalKey یکسان استفاده کنیم بستگی به مورد استفاده داره که به موقش در موردش صحبت میکنیم.
#key
#flutter_key
#local_key
#global_key
⚡️⚡️Flutter Key⚡️⚡️
3⃣
خب بریم سر وقت مهمترین تفاوت بین global ها و local ها :
🔥تفاوت اصلی اینجاست که GlobalKey ها حافظه دارن و LocalKey ها هیچ حافظه ای ندارن.
❓یعنی چی؟ وقتی که به یه ویجتی یه دونه GlobalKey اختصاص میدیم ، GlobalKey یه کار مهم میکنه و context ویجت رو توی خودش ذخیره میکنه (BuildContext).
✔️در نتیجه بعد از اون هر موقع و هر جایی با استفاده از اون key میتونیم به context ویجت دسترسی داشته باشیم و چون خود context هم اطلاعات دیگه از قبیل widget و State رو توی خودش داره میتونیم به اون ها هم دسترسی داشته باشیم.
✔️علاوه بر اون اگه اون ویجت توی درخت جابجا بشه و context اش تغییر کنه باز هم به context جدید دسترسی داریم.
🔥یه نکته هم بگیم که همه ویجت ها یه BuildContext اختصاصی برای خودشون دارن، همه ویجت ها و نه فقط استیت لس و استیت فول هایی که خودمون میسازیم.
همه ویجت شامل Text و Container و... یه BuildContext اختصاصی دارن که این context موقع ساخته شدن ویجت توی درخت ساخته میشه.
❌برخلاف global ها LocalKey هیچ حافظه ای نداره و هیچی توی خودش نگه نمیداره.
پس با توجه به این نکات :
✅ وقتی از GlobalKey استفاده میکنیم که بعدن و یه جای دیگه از برنامه نیاز داشته باشیم به context یا state یا خود اون widget دسترسی داشته باشیم.
✅وقتی از LocalKey ها استفاده میکنیم که فقط بخوایم به برچسب به اون ویجت بزنیم و با اون برچسب اون ویجت رو از بقیه متمایز کنیم.
🔥پس GlobalKey ها حافظه دارن و LocalKey ها صرفن یه برچسب هستن.
🔥البته GlobalKey ها علاوه بر داشتن حافظه میتونن کار برچسب گذاری (متمایز کردن) رو هم انجام بدن ولی اگه هدفمون فقط متمایز کردن ویجت از بقیه هست و نمیخایم بعدن یه جای دیگه به اطلاعاتش دسترسی داشته باشیم از LocalKey استفاده میکنیم.
#key
#flutter_key
#local_key
#global_key
3⃣
خب بریم سر وقت مهمترین تفاوت بین global ها و local ها :
🔥تفاوت اصلی اینجاست که GlobalKey ها حافظه دارن و LocalKey ها هیچ حافظه ای ندارن.
❓یعنی چی؟ وقتی که به یه ویجتی یه دونه GlobalKey اختصاص میدیم ، GlobalKey یه کار مهم میکنه و context ویجت رو توی خودش ذخیره میکنه (BuildContext).
✔️در نتیجه بعد از اون هر موقع و هر جایی با استفاده از اون key میتونیم به context ویجت دسترسی داشته باشیم و چون خود context هم اطلاعات دیگه از قبیل widget و State رو توی خودش داره میتونیم به اون ها هم دسترسی داشته باشیم.
✔️علاوه بر اون اگه اون ویجت توی درخت جابجا بشه و context اش تغییر کنه باز هم به context جدید دسترسی داریم.
🔥یه نکته هم بگیم که همه ویجت ها یه BuildContext اختصاصی برای خودشون دارن، همه ویجت ها و نه فقط استیت لس و استیت فول هایی که خودمون میسازیم.
همه ویجت شامل Text و Container و... یه BuildContext اختصاصی دارن که این context موقع ساخته شدن ویجت توی درخت ساخته میشه.
❌برخلاف global ها LocalKey هیچ حافظه ای نداره و هیچی توی خودش نگه نمیداره.
پس با توجه به این نکات :
✅ وقتی از GlobalKey استفاده میکنیم که بعدن و یه جای دیگه از برنامه نیاز داشته باشیم به context یا state یا خود اون widget دسترسی داشته باشیم.
✅وقتی از LocalKey ها استفاده میکنیم که فقط بخوایم به برچسب به اون ویجت بزنیم و با اون برچسب اون ویجت رو از بقیه متمایز کنیم.
🔥پس GlobalKey ها حافظه دارن و LocalKey ها صرفن یه برچسب هستن.
🔥البته GlobalKey ها علاوه بر داشتن حافظه میتونن کار برچسب گذاری (متمایز کردن) رو هم انجام بدن ولی اگه هدفمون فقط متمایز کردن ویجت از بقیه هست و نمیخایم بعدن یه جای دیگه به اطلاعاتش دسترسی داشته باشیم از LocalKey استفاده میکنیم.
#key
#flutter_key
#local_key
#global_key