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.
قابلیت — 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 باید سبک بماند و فقط وظیفه هماهنگی و رندر را انجام دهد.
* مدیریت چرخه عمر و خطاها بسیار مهم است تا منابع هدر نرود.
موضوع: 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 رو نداره و در همون ترد اصلی پردازش رو انجام میده
به هر حال تسک رو با موفقیت پیش بردم
شما چطور این چالش رو هندل میکنید؟
فلاتر وب امکان استفاده از Isolate و Compute رو نداره و در همون ترد اصلی پردازش رو انجام میده
به هر حال تسک رو با موفقیت پیش بردم
شما چطور این چالش رو هندل میکنید؟
👍6❤3
مدیریت حافظه در 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 میتوان اپلیکیشنی ساخت که حتی در شرایط سنگین هم روان اجرا شود و منابع دستگاه را بیهوده مصرف نکند. مدیریت حافظه بخش جدی از مهندسی نرمافزار است و نادیده گرفتن آن میتواند تجربه کاربری را تخریب کند.
یکی از مهمترین دغدغههای اپلیکیشنهای موبایل، مدیریت درست حافظه است. 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😊
خود راه بگویدت که چون باید رفت...
اگر فلاتری هستید امشب من رو در یک جلسه دور همی همراهی کنید، کمی گپ بزنیم، در مورد فلاتر، وضعیت و....❤️
ساعت 10😊
❤20👍6
#flutter
در بسیاری از اپلیکیشنها حفظ وضعیت کاربر اهمیت دارد؛ برای مثال کاربری که در یک فرم چندمرحلهای قرار دارد یا در یک لیست اسکرول شده است، نباید پس از بسته شدن و باز شدن مجدد اپ همه چیز را از ابتدا شروع کند. Flutter برای حل این نیاز، مکانیزمی به نام State Restoration ارائه کرده است و RestorationMixin یکی از ابزارهای اصلی پیادهسازی آن است.
کاربرد اصلی
ریستوریشنمیکسین RestorationMixin به شما امکان میدهد وضعیت ویجت را از طریق مقادیر قابل ذخیره (RestorableProperty) ثبت کنید تا سیستم بتواند پس از بسته شدن یا توقف اپلیکیشن، همان وضعیت را بازگردانی کند. این قابلیت مخصوص سناریوهایی است که تجربه کاربری باید پایدار بماند، حتی اگر اپ توسط سیستمعامل متوقف شده باشد.
نحوه کارکرد در سطح معماری
هر ویجتی که از RestorationMixin استفاده میکند یک شناسه ترمیمی (restorationId) دارد.
مقادیر حالت مانند اعداد، متون، موقعیت اسکرول یا انتخابها میتوانند با انواع Restorable مانند RestorableInt, RestorableBool, RestorableTextEditingController مدیریت شوند.
هنگام رخ دادن تغییر در لایف سایکل، فریمورک نسخهای از وضعیت را ذخیره میکند و در صورت بازیابی اپ، آن را بازسازی مینماید.
اپهایی که ممکن است در پسزمینه توسط سیستمعامل kill شوند، با RestorationMixin قادر به بازیابی وضعیت پیشین هستند.
برای فرمهای طولانی، تبها، و مسیرهای چندمرحلهای، این قابلیت تجربه کاربری منسجمتری ایجاد میکند.
این سیستم مستقل از مدیریت state داخلی است و بخشی از معماری پایه Flutter محسوب میشود.
برای فعال شدن این قابلیت، باید در بالاترین سطح اپ مقدار restorationScopeId در MaterialApp تنظیم شود.
هر ویجتی که وضعیت قابل بازیابی دارد باید restoreState را پیادهسازی و مقادیرش را ثبت کند.
این قابلیت با ناوبری قابل بازگردانی، مانند Navigator.restorablePush، هماهنگ است.
در بسیاری از اپلیکیشنها حفظ وضعیت کاربر اهمیت دارد؛ برای مثال کاربری که در یک فرم چندمرحلهای قرار دارد یا در یک لیست اسکرول شده است، نباید پس از بسته شدن و باز شدن مجدد اپ همه چیز را از ابتدا شروع کند. Flutter برای حل این نیاز، مکانیزمی به نام State Restoration ارائه کرده است و RestorationMixin یکی از ابزارهای اصلی پیادهسازی آن است.
کاربرد اصلی
ریستوریشنمیکسین RestorationMixin به شما امکان میدهد وضعیت ویجت را از طریق مقادیر قابل ذخیره (RestorableProperty) ثبت کنید تا سیستم بتواند پس از بسته شدن یا توقف اپلیکیشن، همان وضعیت را بازگردانی کند. این قابلیت مخصوص سناریوهایی است که تجربه کاربری باید پایدار بماند، حتی اگر اپ توسط سیستمعامل متوقف شده باشد.
نحوه کارکرد در سطح معماری
هر ویجتی که از RestorationMixin استفاده میکند یک شناسه ترمیمی (restorationId) دارد.
مقادیر حالت مانند اعداد، متون، موقعیت اسکرول یا انتخابها میتوانند با انواع Restorable مانند RestorableInt, RestorableBool, RestorableTextEditingController مدیریت شوند.
هنگام رخ دادن تغییر در لایف سایکل، فریمورک نسخهای از وضعیت را ذخیره میکند و در صورت بازیابی اپ، آن را بازسازی مینماید.
اپهایی که ممکن است در پسزمینه توسط سیستمعامل kill شوند، با RestorationMixin قادر به بازیابی وضعیت پیشین هستند.
برای فرمهای طولانی، تبها، و مسیرهای چندمرحلهای، این قابلیت تجربه کاربری منسجمتری ایجاد میکند.
این سیستم مستقل از مدیریت state داخلی است و بخشی از معماری پایه Flutter محسوب میشود.
برای فعال شدن این قابلیت، باید در بالاترین سطح اپ مقدار restorationScopeId در MaterialApp تنظیم شود.
هر ویجتی که وضعیت قابل بازیابی دارد باید restoreState را پیادهسازی و مقادیرش را ثبت کند.
این قابلیت با ناوبری قابل بازگردانی، مانند Navigator.restorablePush، هماهنگ است.
❤24👍7🥰1