sasan safari
رفتن به کانال در Telegram
لینک چنل😃👇 https://t.me/sasansafari_dev1400 گروهمون 😊👇 https://t.me/persian_flutter_Community
نمایش بیشتر777
مشترکین
-124 ساعت
-17 روز
+1130 روز
آرشیو پست ها
777
میسن باز های فلاتری برای درک بهتر استفاده از clean architecture Riverpod و go router میتونن ریپو hello riverpod رو مطالعه کنن
نحوه اینستال بریک و آدرس ریپو رو از صفحه بریکهاب میتونید ببینید
https://brickhub.dev/bricks/hello_riverpod/1.0.0+9
777
Repost from کدیاد | Codeyad | آموزش برنامه نویسی
✅دوره رایگان : ساخت API برای فروشگاه ساعت با استفاده از لاراول و لایووایر و سووگر
📍در این دوره قصد داریم با ایجاد یک وب سرویس در قالب پروژه فروشگاه ساعت بر پایه معماری REST با لاراول بپردازیم و API های تولید شده را در قالب رابط کاربری SWAGGER بررسی و به نمایش بگذاریم. ایجاد پروژه فروشگاهی ساده شامل بخش های زیر می شود
🔻مدیریت کاربران
🔻محصولات
🔻ثبت سفارش
🔻درگاه پرداخت
🔻کار با SWAGGER
💠پیش نیازهای این دوره چیست :
برای اینکه بتوانید این دوره را مشاهده کنید پیش از هر چیز نیاز هست که با لاراول آشنایی داشته باشید و مفاهیم Api و نحوه ساخت آن در لاراول رو بلد باشید. همچنین از لایووایر توی این پروژه استفاده میکنیم و سورس پروژه رو روی GitHub میفرستیم
🔗لینک:
https://codeyad.com/c/ac8
777
با چت جی پی تی زبان تمرین کنید :)
تصویر و مکالمه جنبه آموزشی برای شما داره که بدونید چطور میشه باهاش تمرین رو شروع کرد
777
کلمات کلیدی بیشتر برای درک بهتر و یادگیری Bloc
❇️ Emit
فرآیند ارسال وضعیت جدید بلاک به بخشهای دیگر برنامه را emit گفته میشود. با فراخوانی این تابع، میتوانید وضعیت جدید بلاک را به صورت رویدادی (event) به بخشهای دیگر از جمله ویجتها و بلاکهای دیگری که به آن مشترک هستند، اعلام کنید.
❇️ Cubit
Cubit یک نوع دیگر از الگوی مدیریت وضعیت در فلاتر است که برای مدیریت وضعیت سادهتر و کمحجمتر برنامههای فلاتر استفاده میشود. بر خلاف Bloc که برای پروژههای بزرگ و پیچیده استفاده میشود، Cubit برای پروژههای سادهتر و کوچکتر مورد استفاده قرار میگیرد.
❇️ Transition
هر وضعیت (state) در یک بلاک شامل یک سری اطلاعات مختلف است. هنگامی که وضعیت بلاک تغییر میکند، یک Transition جدید به وجود میآید که شامل وضعیت جدید، وضعیت قبلی و رویدادی است که منجر به تغییر وضعیت شده است.
❇️ Repository
Repository یک الگوی طراحی است که به شما اجازه میدهد دادهها را از منابع مختلفی مانند دیتابیسها، سرویسهای وب و فایلها به دست آورید. Repository برای جلوگیری از ارتباط مستقیم بین لایهی UI و منابع داده استفاده میشود.
❇️ Dependency Injection
Dependency Injection یک الگوی طراحی است که به شما اجازه میدهد وابستگیهای یک کلاس را با استفاده از مفهوم ابسترکشن (abstraction) و تزریق
777
بلاک در فلاتر (Flutter) یک الگوی طراحی (design pattern) است که به شما اجازه میدهد برنامه را به چندین بخش کوچک تقسیم کنید و هر قسمت را به صورت مستقل پردازش کنید. به این صورت که هر قسمت از برنامه، یک بلاک مجزا (Bloc) خواهد داشت که وظیفه دارد اطلاعات و وضعیت آن قسمت را مدیریت کند. بلاک در فلاتر یک الگوی رویداد محور (event-driven) است که بر اساس رویدادهایی که در برنامه اتفاق میافتد، وضعیت (state) برنامه را به روزرسانی میکند. برای یادگیری بلاک در فلاتر بهتر است با مفاهیم کلیدی مانند State, Stream, Event و Sink آشنا شوید.
کلمات کلیدی مهم در BloC
✅ State
وضعیتی که برنامه در آن قرار دارد و به روزرسانیهای بعدی وابسته به آن است.
✅ Stream
دادهای است که به صورت پیوسته و آنی از یک منبع به دست میآید.
✅ Event
یک عملیات یا رویداد که میتواند وضعیت برنامه را تغییر دهد.
✅ Sink
یک منبع داده است که میتواند دادههایی را دریافت کند و به یک Stream بفرستد.
✅ BlocProvider
یک کلاس که به عنوان یک ارائهدهنده بلاکها عمل میکند.
✅ BlocBuilder
یک کلاس که وضعیت بلاک را مشاهده میکند و در صورت تغییر آن، اجزایی را از جمله ویجتها بهروزرسانی میکند.
✅ BlocListener
یک کلاس که به رویدادهایی که توسط بلاک تولید شدهاند گوش میدهد و به وضعیت بلاک دسترسی ندارد.
✅ StreamSubscription
یک شیء که با استفاده از آن میتوانید به یک Stream مشترک شوید و هربار که داده جدیدی در Stream در دسترس است، از آن باخبر شوید.
#bloc
https://t.me/sasansafari_dev1400
777
#stream in dart
توابع و خواص کلیدی استریم در دارت
StreamController()
یک متود سازنده برای ایجاد یک StreamController جدید است.
add()
برای ارسال داده های جدید به Stream استفاده می شود.
Stream
یک Getter است که یک Stream جدید باز می گرداند.
Sink
یک Getter است که Sink مربوط به StreamController را باز می گرداند.
close()
برای بستن StreamController استفاده می شود. این عمل باعث می شود تا دیگر نتوان داده ای به Stream فرستاد.
addError()
برای افزودن یک خطای خاص به Stream استفاده می شود.
hasListener
یک Getter است که بررسی می کند که آیا یک Listener فعال برای Stream وجود دارد یا خیر.
isClosed
یک Getter است که بررسی می کند که آیا StreamController بسته شده است یا خیر.
isPaused
یک Getter است که بررسی می کند که آیا StreamController متوقف شده است یا خیر.
onPause
یک Callback است که برای توقف Stream استفاده می شود.
onResume
یک Callback است که برای ادامه دادن Stream بعد از توقف استفاده می شود.
با استفاده از این توابع، شما می توانید Stream خود را به راحتی مدیریت کنید و داده های جدید را به آن اضافه کنید، خطاها را به آن اضافه کنید و Stream را بسته و یا توقف کنید.
777
StreamController یک کلاس در زبان برنامهنویسی Dart است که برای کنترل جریان دادهها در برنامههایی که از Stream و StreamBuilder استفاده میکنند، استفاده میشود.
یک StreamController دارای دو متد sink و stream است. با استفاده از متد sink، میتوان دادههای جدید را به Stream ارسال کرد و با استفاده از متد stream میتوان Stream را برای خواندن دادهها و دریافت اطلاعات از Stream بکار برد.
استفاده از StreamController بسیار مفید است زیرا با استفاده از آن میتوان دادههای جدید را به Stream اضافه کرد و در همان زمان، از StreamBuilder برای بروزرسانی UI بر اساس دادههای جدید استفاده کرد. به علاوه، با استفاده از StreamController میتوان برنامههایی با کارایی بالاتر و با مصرف منابع کمتر نوشت.
777
برای ترمینیت کردن اپ ، اگه از exit استفاده میکنید باید توجه کنید که اپل اپتون رو ساسپند میکنه، طبق این صفحه
بهتره برای این کار حتما پلتفورم رو چک کنید.
777
در برنامهنویسی، کلاس های helper به عنوان کلاس های کمکی برای کلاس ها و توابع دیگر استفاده میشوند. این کلاس ها معمولا توابع کمکی را برای اجرای کارهای خاصی در اختیار قرار میدهند. به عبارت دیگر، کلاس های helper به برنامه نویسان کمک میکنند تا کد خود را به صورت ماژولار و سازمانیافتهتری بنویسند.
در معماری نرمافزار، ایده اصلی پشت helper class، جلوگیری از تکرار و تکمیل کد در برنامه نویسی است. یکی از مزیتهای استفاده از helper class، میتواند افزایش قابلیت خواندن کد باشد. با استفاده از helper class، میتوان کدهایی را که به صورت تکراری و یا خاص هستند جدا کرد. بدین ترتیب، با نگاه به نامهای توابع و متغیرهای کلاس، میتوان به راحتی درک کرد که کلاس چه کارهایی انجام میدهد و توابع آن چه معنایی دارند.
777
با این ریپازیتوری ها فلاتر رو یادبگیرید!
1. Fwitter
یکی از بهترین راه ها برای یادگیری هر فناوری یا زبان برنامه نویسی جدید، ایجاد یک کلون از یک برنامه بزرگ است. همانطور که از اسمش حدس زدید این ریپازیتوری یک کلون از برنامه توییتر هست.
https://github.com/TheAlphamerc/flutter_twitter_clone
2. MovieLab
سورس کد یک اپلیکشن فیلم و سریال که از api سایت IMDb برای دریافت اطلاعات خودش استفاده میکنه.
https://github.com/ErfanRht/MovieLab
3. Flutter Weather
یک اپلیکیشن هواشناسی که از api سایت OpenWeatherMap استفاده میکنه و قابلیت به دست آوردن خودکار مکان فعلی کاربر و پیش بینی اب و هوای 7 روز آینده رو داره.
https://github.com/ArizArmeidi/FlutterWeather
4. Chillify
یک موزیک پلیر با رابط کاربری جذاب و توسعه داده شده با الگوی Bloc. این برنامه قابلیت های بازیابی همه آهنگ ها، مکث، پخش،تکرار و جستجوی آهنگ ها رو داره.
https://github.com/KarimElghamry/chillify
5. Timy messenger
یک پیام رسان حرفه ای با 1.7 هزار ستاره در GitHub. این برنامه امکاناتی مثل ساخت گروه و کانال، اشتراک گذاری فیلم و عکس، واکنش نشون دادن به پیام با ایموجی رو داره.
https://github.com/janoodleFTW/timy-messenger
