Flutter Zone | فلاتر و دارت
783 subscribers
517 photos
310 videos
1.07K files
806 links
ناحیه‌ی فلاتر
برای فلاتر
اموزش های فلاتر و دارت از یودمی

لینک گروه : https://t.me/flutterzone_group
Download Telegram
Forwarded from Pure Coder
⚡️⚡️Flutter Key⚡️⚡️
1️⃣0️⃣ GlobalKey

🔥یه نکته مهم دیگه در مورد GlobalKey ها اینکه همیشه توی پروژتون یه کلاس برای مدیریت GlobalKey ها داشته باشید.

مثلن یه فولدر به اسم common داشته باشید و اونجا یه فایل به اسم keys.dart درست کنید و کلاس زیر رو داخلش بگذارید :

class Keys{

static final navigatorKey = GlobalKey<NavigatorState>();
}

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

اگه خواستید یه GlobalKey خارج این کلاس تعریف کنید .
مثلن یه GlobalKey توی یه State تعریف کنید اصلن و به هیچ وجه اون رو توی متد build نسازید :
Widget build(BuildContext context){
final gKey = GlobalKey();
return Scaffold(key: gkey);
}

اصلن این کار رو نکنید , چون با هر بار rebuild شدن یه GlobalKey جدید و کاملن متفاوت از قبلی میسازه.

توی چنین مواردی GlobalKey رو قبل متد build و توی initState بهش مقدار بدید.

#key
#flutter_key
#local_key
#global_key
Forwarded from Pure Coder
⚡️⚡️Flutter Key⚡️⚡️
1️⃣2️⃣ LocalKey

کار LocalKey ها این هست که به ویجت مورد نظر یه برچسب بزنن و اون رو از بقیه متمایز کنن.

حالا این برچسب زدن به چه درد میخوره و کجا باید ازشون استفاده کنیم؟
✔️دقیقن فقط یه کاربرد خاص دارن و اگه اون کاربرد رو بشناسیم میتونیم به خوبی ازشون استفاده کنیم.

🔥قبل از پرداختن به کاربرد یه یاداوری داشته باشیم.
همون طور که توی شماتیک پست قبل دیدیم LocalKey خودش یه کلاس abstract هست و نمیتونیم ازش نمونه بسازیم و برای استفاده از اون از subclass هاش یعنی ValueKey , ObjectKey یا uniqueKey استفاده میکنیم.
نوع PageStorageKey هم یه کاربرد دیگه داره که بعدن راجبش صحبت میکینم.
پس الان صحبتمون راجب سه نوع ValueKey , ObjectKey و uniqueKey هست.

بریم سر اصل مطلب...
کی از این ها استفاده کنیم ؟

✔️✔️✔️اگه یه لیست از ویجت های Stateful هم نوع داشتیم که قرار بود جایگاهشون توی لیست تغییر کنه برای هر Stateful یه key اختصاصی از این نوع در نظر میگیریم.

مثلن وقتی که یه ListView داریم یا یه Column یا هر ویجت دیگه ای که قراره یه لیست از ویجت ها رو توی خودش داشته باشه.

✔️حالا اگه این ویجت هایی که قراره توی لیست قرار بگیرن از نوع Stateful بودن.
✔️همچنین Type یکسانی داشتن (مثلن همه از جنس MyStatefulWidget بودن / ویجت اختصاصی که از StatefulWidget ارث بری کرده)
✔️و علاوه بر اون قرار بود توی build های مختلف(setState) جایگاهشون توی لیست تغییر کنه.
در این حالت برای هر کدوم یه key اختصاص میدیم.

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

#key
#flutter_key
#local_key
#global_key