sasan safari – Telegram
sasan safari
1.13K subscribers
96 photos
20 videos
16 files
123 links
چنل شخصی تخصصی، از مهندسی نرم افزار، برنامه نویسی کراس پلتفورم و موبایل محتوا تقدیم میکنم.
Download Telegram
سؤال سوم
چطوری ساختار مدیریت Data و state رو طراحی کنیم که
داده‌های هر صفحه کش بشن (برای جلوگیری از رفرش مجدد)
در پس‌زمینه به‌روزرسانی شن (مثلا polling یا websocket)
خطاها به شکل مناسبی هندل بشن و UI واکنش درست نشون بده و وقتی کاربر برگشت به صفحه، داده‌ها سریع نمایش داده بشن ولی اگر اطلاعات جدید بود، به‌روزرسانی صورت بگیره؟


#فلاتر
13
راستی اگه دارید دوره رایگان کاتلین رو با من پیش میاید، یه گروه پشتیبانی هم داریم براش که میتونید اونجا جوین بشید
👍2👏2
گروه پشتیبانی دوره رایگان زبان کاتلین
https://news.1rj.ru/str/c/2774219603/1
👍6
sasan safari pinned «گروه پشتیبانی دوره رایگان زبان کاتلین https://news.1rj.ru/str/c/2774219603/1»
sasan safari
سؤال سوم چطوری ساختار مدیریت Data و state رو طراحی کنیم که داده‌های هر صفحه کش بشن (برای جلوگیری از رفرش مجدد) در پس‌زمینه به‌روزرسانی شن (مثلا polling یا websocket) خطاها به شکل مناسبی هندل بشن و UI واکنش درست نشون بده و وقتی کاربر برگشت به صفحه، داده‌ها…
جواب سوال سوم😊

کش کردن داده‌ها:
داده‌های دریافت شده رو داخل state مدیریت و برای کش دائمی‌تر، در حافظه لوکا مثل Hive یا Isar ذخیره کنید، این کار باعث میشه وقتی کاربر دوباره به اون صفحه میاد، داده‌ها سریع و بدون تاخیر نمایش داده بشن، یعنی همیشه اول کش رو نشون میدید..


به‌روزرسانی در پس‌زمینه:
با استفاده از polling دوره‌ای یا WebSocket، داده‌ها رو به‌صورت خودکار در پس‌زمینه بروز کن. وقتی داده‌ها تغییر کردن، state رو آپدیت کن تا UI هم به‌روزرسانی بشه


مدیریت خطا:
وضعیت‌های مختلف مثل loading، success و error رو در state نگه دارید و در صورت خطا، پیام مناسب به کاربر نمایش بذید و اگر داده کش شده هست، همچنان داده کش شده رو نمایش بدید تا تجربه کاربری خراب نشه (مثل اینستاگرام)

نمایش سریع داده هنگام بازگشت به صفحه:
زمانی که کاربر به صفحه برمیگرده، اول داده کش شده رو نشون بدید تا صفحه سریع بارگذاری بشه، بعدش در پس‌زمینه چک کنید که آیا داده جدیدی هست یا نه و در صورت تغییر، UI رو آپدیت میکنیم
13
sasan safari pinned «لینک گروه پشتیبانی دوره رایگان کاتلین https://news.1rj.ru/str/+TiSqH3pNPYNjYzY0 لینک دوره: https://codeyad.com/course/basic-to-advanced-kotlin-training»
sasan safari
https://medium.com/flutter/whats-new-in-flutter-3-35-c58ef72e3766?fbclid=PAQ0xDSwMMOnVleHRuA2FlbQIxMAABp3B8aMZZceF5ba-cjMvXEae8bgo6RWXk7Vla1wQkEAzbuql-GGSYG04P9eEi_aem_ftmAGxZxbOtMraTxIVic0Q
خلاصه:

قابلیت — Hot Reload برای Web به‌صورت پیش‌فرض فعال شده و سرعت توسعه اپ‌های وب رو شبیه موبایل کرده.

قابلیت — Multi-window support برای Windows و macOS اضافه شده (Linux در نسخه‌های بعدی).

ویجت — اضافه شدن DropdownMenuFormField، CupertinoExpansionTile، قابلیت Scroll در NavigationRail و Header/Footer در NavigationDrawer.

دسترس‌پذیری — بهبود Semantics در Web، iOS و Android با پشتیبانی بهتر RTL، VoiceOver و Talkback و ابزارهای جدید مثل SemanticsLabelBuilder و SliverEnsureSemantics.

امنیت — معرفی SensitiveContent widget برای جلوگیری از نمایش محتوای حساس هنگام media projection در Android (API 35+).

عملکرد — بهبود Engine و Impeller شامل کاهش load time، بهینه‌سازی rendering، پشتیبانی از GPUهای Vivante و رفع memory leak در VideoPlayer.

ابزار — اضافه شدن Widget Previews (Experimental) در DevTools برای تست ویجت‌ها در حالت مستقل و بهبود سرعت dart analyze و dart fix.

تغییر مهم — Breaking changes: جایگزینی همه Radioها با RadioGroup، نیاز به SliverToBoxAdapter برای Form در sliverها، تغییر value به initialValue در DropdownButtonFormField، و افزایش حداقل Android SDK به 24 و نیاز Java 17.
11👍7
سلام دوستان
این مدت تسک ها و کارام زیاد بود، بی نظمی حاصل از بی برقی هم دلیل بود که سخت بتونم افتخار همراهیتون رو داشته باشم
اما به هر حال باید ادامه داد، حضورتون ارزشمنده و من سعی میکنم برنامه هام رو بهتر مدیریت کنم، حتی با این اوضاع که بتونیم پیش بریم
18
#فلاتر #دارت
موضوع: Isolate vs compute — اجرای موازی کارهای سنگین در Flutter

در Dart همه چیز روی یک Thread اصلی اجرا می‌شود و همان Thread UI را رندر می‌کند. هر پردازش سنگین روی این Thread باعث لگ و افت فریم خواهد شد. راه حل اصولی، اجرای کارهای سنگین در Isolate است.

Isolate چیست
محیط اجرایی مستقل با حافظه جداست. تبادل داده فقط از طریق پیام انجام می‌شود. برای پردازش‌های سنگین و طولانی مناسب است و انعطاف بالایی برای ایجاد چند Worker و کانال ارتباطی پایدار دارد.

compute چیست
یک میانبر ساده برای اجرای یک کار سنگین در Isolate موقت است. برای وظایف تک‌مرحله‌ای و کوتاه‌عمر مناسب است. سربار مدیریتی کمتری دارد و برای ورودی و خروجی‌های ساده سریع‌تر پیاده‌سازی می‌شود.

زمان مناسب استفاده از Isolate

* نیاز به چند Worker همزمان یا پردازش زنجیره‌ای
* جریان داده مداوم و دوطرفه بین UI و Worker
* مدیریت چرخه عمر طولانی و کنترل دقیق منابع
* سناریوهای Real-time، پردازش تصویر، فشرده‌سازی، رمزنگاری، تحلیل داده

زمان مناسب استفاده از compute

* وظایف مستقل و ساده با ورودی/خروجی مشخص
* نیاز به پاسخ سریع بدون کانال ارتباطی مداوم
* سناریوهایی که سادگی و سرعت توسعه مهم‌تر از انعطاف هستند

نکات عملکردی

* داده‌های حجیم هزینه انتقال بالایی دارند، تا حد امکان ساده‌سازی کنید.
* ایجاد و نابودی مکرر Isolate هزینه‌بر است، برای بارهای مداوم از Pool استفاده کنید.
* UI Thread باید سبک بماند و فقط وظیفه هماهنگی و رندر را انجام دهد.
* مدیریت چرخه عمر و خطاها بسیار مهم است تا منابع هدر نرود.
16
sasan safari
#فلاتر #دارت موضوع: Isolate vs compute — اجرای موازی کارهای سنگین در Flutter در Dart همه چیز روی یک Thread اصلی اجرا می‌شود و همان Thread UI را رندر می‌کند. هر پردازش سنگین روی این Thread باعث لگ و افت فریم خواهد شد. راه حل اصولی، اجرای کارهای سنگین در Isolate…
اخیرا لازم شد یک پردازش بسیار سنگین رو در فلاتر وب هندل کنم، تسک سنگینی بود
فلاتر وب امکان استفاده از Isolate و Compute رو نداره و در همون ترد اصلی پردازش رو انجام میده
به هر حال تسک رو با موفقیت پیش بردم

شما چطور این چالش رو هندل میکنید؟
👍63
68👍1
sasan safari
Voice message
نگاه درست به معماری کلین
6
اینم یک موقعیت شغلی نسبتا خوب برای فلاتر، اگه شرایطش رو دارید اقدام کنید
👍112
The Quiet Shore, Lonely Tomb of the Mind
Da Voile
با تمام زخم ها، ادامه خواهی داد..

🎸
🔥72
مدیریت حافظه در Flutter — اصول و ابزارهای کاربردی

یکی از مهم‌ترین دغدغه‌های اپلیکیشن‌های موبایل، مدیریت درست حافظه است. Flutter و Dart به صورت پیش‌فرض یک سیستم Garbage Collector (GC) دارند که اشیای بدون استفاده را آزاد می‌کند. اما اگر در معماری و کدنویسی دقت نشود، همچنان نشت حافظه و افت کارایی اتفاق می‌افتد.

نکات کلیدی در مدیریت حافظه

همیشه controllerها (مثل TextEditingController یا AnimationController) را در متد dispose آزاد کنید.

برای Stream ها و Subnoscription ها متد cancel را فراموش نکنید.

ویجت‌هایی مثل ListView.builder یا GridView.builder را به جای نسخه ساده استفاده کنید تا آیتم‌های خارج از دید آزاد شوند.

از const برای ویجت‌های بدون تغییر استفاده کنید تا دوباره ساخته نشوند.

اشیای سنگین (مثل تصاویر یا داده‌های JSON بزرگ) را فقط زمانی بارگیری کنید که واقعاً نیاز باشد.

ابزارهای DevTools برای تحلیل حافظه
Flutter DevTools بخشی برای Memory دارد که امکانات زیر را ارائه می‌دهد:

بررسی Heap و اشیای زنده در حافظه

مشاهده رشد حافظه در طول زمان

شناسایی اشیای آزادنشده (Leaked Objects)

ثبت Snapshot برای مقایسه وضعیت حافظه در چند لحظه مختلف

خلاصه
با رعایت اصول بالا و استفاده از DevTools می‌توان اپلیکیشنی ساخت که حتی در شرایط سنگین هم روان اجرا شود و منابع دستگاه را بیهوده مصرف نکند. مدیریت حافظه بخش جدی از مهندسی نرم‌افزار است و نادیده گرفتن آن می‌تواند تجربه کاربری را تخریب کند.
22👍10🔥1
سلام
فکر کنم خیلی دور از ذهن نباشه دلیل حضور کمرنگم، سعی میکنم بیشتر باشم

و عجب داستانی شده
در انتظار هر فلاکت روز افزونی، مدام در حال تلاشیم که قدمی برداریم و از پیشرفت و آرزوهامون دست نکشیم

امیدوارم اوضاع به کاممون عوض بشه
37👍12
قدم بر می‌داریم
خود راه بگویدت که چون باید رفت...

اگر فلاتری هستید امشب من رو در یک جلسه دور همی همراهی کنید، کمی گپ بزنیم، در مورد فلاتر، وضعیت و....❤️

ساعت 10😊
20👍6