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

لینک گروه : https://t.me/flutterzone_group
Download Telegram
Forwarded from Pure Coder
⚡️⚡️Function⚡️⚡️
1⃣
🔥توی دارت هر function خودش یه آبجکت به حساب میاد.

یعنی چی؟

یعنی دقیقن مثل وقتی که یک کلاس داریم و از اون کلاس یه آبجکت (نمونه /شی) میسازیم :
class User{}
var user = User() ;

یا وقتی که به عدد صحیح تعریف میکنیم :
int a = 2;
و a یه ابجکت از کلاس int به حساب میاد.

دقیقن همین اتفاق هم برای function ها میوفته.

🔥توی دارت یه کلاس داریم به اسم
Function
همه function هایی که میسازیم یه ابجکت (نمونه) از این کلاس به حساب میان.

void myFunc() {}

print(myFunc is Function) //true

🔥پس وقتی که یه function مینویسیم، دارت واسمون یه ابجکت جدید از کلاس Function ایجاد میکنه و اسمی که ما برای اون function گذاشتیم مثل اسم یه متغیر هست (که یه رفرنس از اون ابجکت توی حافظه هست)

پس توی مثال بالا یه ابجکت از کلاس Function ایجاد میشه و myFunc یه متغیری هست که رفرنس اون ابجکت رو نگه میداره (دقیقن مثل قضیه کلاس ها)

#function
A fully-functional video streaming app made in Flutter using Custom Nodejs backend

https://github.com/Hritik-Chaurasia/Lavender
‏یک اشتباه متداول در بین برنامه نویس ها این هست که به در تمام زبان ها با یک سبک کد میزن.

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


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

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

‏برای مثال در زبان 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