Flutter Zone | فلاتر و دارت
739 subscribers
522 photos
312 videos
1.07K files
817 links
ناحیه‌ی فلاتر
برای فلاتر
اموزش های فلاتر و دارت از یودمی

لینک گروه : https://t.me/flutterzone_group
Download Telegram
‏یک اشتباه متداول در بین برنامه نویس ها این هست که به در تمام زبان ها با یک سبک کد میزن.

به این معنا که اگر فرد اولین زبان برنامه نویسی که یاد گرفته باشد جاوا یا... باشد
در زبان بعدی برای مثال پایتون یا همان طرز فکر کد می‌زند!


یادگیری یک زبان جدید چیزی فراتر از یادگیری سیتکس جدید هست :)

هر زبان برنامه نویسی برای هدفی به وجود اومده و سبک و ساختار مخصوص خود را دارد.
نحوه نام گذاری متغییر ها از هر زبان به زبان دیگر می‌تواند متفاوت باشد و حتی این نام گذاری ها روی معنا و رفتار نیز متاثر هستن.

‏برای مثال در زبان go ما اگر متغییر (یا اسم تابع) رو با حروف بزرگ شروع کنیم باعث می‌شود از خارج از Package اش بهش دسترسی داشته باشیم درحالی که اگر با حروف کوچک شروع شود از خارج از پکیج به آن دسترسی نداریم .

حتی قوائد و ساختار چیدمان کد در هر زبان متفاوت هست.

‏پس بهتر است قبل از شروع به کد نویسی در زبان جدید برای جلوگیری از ایجاد کد های بی کیفیت ابتدا چند نمونه پروژه OpenSource خوب از زبان مطالعه کنیم.

@DevTwitter | <MAHDI AKBARI/>
This media is not supported in your browser
VIEW IN TELEGRAM
Animated Segmented Tab Control

A customizable segment tab control. Can be used with or without TabView.

https://pub.dev/packages/animated_segmented_tab_control
Forwarded from Pure Coder
⚡️⚡️Flutter Key⚡️⚡️
5⃣

تقسیم بندی انواع key ها در فلاتر

✔️اون هایی که رنگ مشکی دارن abstract هستن و بقیه کلاس های معمولی هستن .

✔️اون هایی که با <T> مشخص شدن Generic هستن.

#key #local_key
#flutter_key #flutter_key
#value_key #object_key #unique_key
Forwarded from IranCoderz (Farid Ghaderi)
کلین کدِ بچه های دیتا سنتر🤤

* SMhdHsn *

🆔 @IranCoderz | 👩‍💻🧑‍💻
اگر میخواهید ارتفاع ایتم های GridView رو تغییر بدید میتونید از کلاس زیر استفاده کنید
Forwarded from Pure Coder
⚡️⚡️Flutter Key⚡️⚡️
8️⃣ GlobalKey

مثال )
میدونیم که وقتی که از MaterialApp استفاده میکنیم یه دونه Navigator برامون میسازه و توی درخت قراره میده.

بعد از اون هر موقع که بخوایم از نویگیتور استفاده کنیم میگیم :
Navigator.of(context)

این کد دقیقن چکار مکینه ؟
با استفاده از context ای که بهش دادیم شروع میکنه به جستجو توی درخت (از parent ویجت شروع میکنه) و میره بالا تا یه نویگتور توی درخت پیدا کنه و بعد state اون رو برمیگیردونه , یعنی خروجی این متد یه NavigatorState هست.

🔥ویجت Navigator یه StatefulWidget هست و یه state به نام NavigatorState داره و متد Navigator.of(context) یه NavigatorState برمیگردونه.

حالا بعد از اون میگیم
Navigator.of(context).push...
که این متد push و بقیه متد هایی که استفاده میکنیم متد هایی هستن که داخل NavigatorState تعریف شدن.

🔥🔥حالا به جای این کار میتونیم موقع ساخت MaterialApp یه پارامتر به اسم navigatorKey بهش بدیم. و توی این پارامتر یه GlobalKey بدیم. در نتیجه MaterialApp این key رو میده به Navigator و بعد از اون میتونیم ازش برای پیدا کردن NavigatorState استفاده کنیم :‌

var myNavKey = GlobalKey<NavigatorState>();
......

return MaterialApp(
navigatorKey: myNavKey,
.....
);

حالا به جای :
Navigator.of(context)
میگیم :
myNavKey.currentState.push...

🔥پس بدون نیاز به context تونستیم که نویگیت رو انجام بدیم.
🔥این کاری هست که پکیج GetX انجام میده.

#key
#flutter_key
#local_key
#global_key
Forwarded from Pure Coder
⚡️⚡️Flutter Key⚡️⚡️
9️⃣ GlobalKey

آیا کاری که توی پست قبلی کردیم توی پرفرمانس تاثیر داره؟؟

😍😍صدردرصد بلههههه.

🔥🔥وقتی که از
Navigator.of
استفاده میکنیم شروع میکنه توی درخت حرکت کردن و به دنبال Navigator گشتن.

هرچه ویجت Navigator به ویجتی که داخلش این متد رو call کردیم نزدیکتر باشه این جستجو سریع تر انجام میشه و هر چقدر دورتر باشه زمان بیشتری میبره.

ولی وقتی از GlobalKey استفاده میکنیم دیگه نیازی به جستجو نیست و همون موقع در لحظه با استفاده از key میتونیم به NavigatorSate برسیم.



#key
#flutter_key
#local_key
#global_key
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
This media is not supported in your browser
VIEW IN TELEGRAM
Windows Taskbar 😍😍

Flutter plugin serving utilities related to Windows taskbar

https://pub.dev/packages/windows_taskbar
الان دیگه پکیج just_audio از ویندوز و لینوکسم
پشتیبانی میکنه 😍😍

دیگه همه چی برای ساخت موزیک پلیرم اماده‌س
فکر نمی‌کنید بهتر بود Pub.dev دسته بندی (تگ) داشت برای پکیج ‌ها تا بهتر پیداشون میکردیم! 🤨
Open source geo based video sharing social app created with Flutter And Supabase

https://github.com/dshukertjr/spot
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
اگه تو Flutter Web از لودینگ قبل از لود کامل اپ استفاده میکنین
با پکیج universal_html یا dart:html
و کد بالا میتونین کدهای لودینگ رو بعد اجرای اپ بردارین که اون پشت منابع مصرف نکنن!🤨