ویرگول
ورودثبت نام
علیرضا باشی
علیرضا باشییه برنامه‌نویس موبایل از جنس فلاتر، یه قلب پر از کد و یه ذهن پر از ایده! من علیرضام و اینجا دارم با عشق محتوا می‌سازم. حمایتت یعنی یه لبخند، یه انگیزه و کلی محتوای خفن‌تر! 😎🔥
علیرضا باشی
علیرضا باشی
خواندن ۲۰ دقیقه·۷ ماه پیش

جدیدترین قابلیت‌های فلاتر ۳.۳۲ که باید بدونی!

flutter 3.32
flutter 3.32

خوش اومدی به Flutter 3.32!
این نسخه پر از قابلیتهای جدیده که قراره سرعت توسعهتو بالا ببره و کیفیت اپهاتو بهتر کنه.
حالا دیگه روی وب هم hot reload داریم، آیکونهای squircle کوپرتینو برای تجربهی بومیتر اضافه شدن، و کلی قابلیت هوش مصنوعی جدید با Firebase هم بهش اضافه شده.
بریم ببینیم چه چیزای جدیدی اومده! 🚀



وب

خب Hot reload روی وب (بهصورت آزمایشی)

یه خبر خفن!
از این به بعد میتونی روی وب هم hot reload بزنی!
این یکی از پرطرفدارترین درخواستای بچههای Flutter بود و بالاخره اضافه شد.
حالا وقتشه خودت تو پروژههات امتحانش کنی و حالشو ببری! 🔥


حالا میرسیم به قسمت باحال ماجرا: چطوری از این قابلیت استفاده کنیم؟!!! 😎

یه فلگ ساده به Flutter اضافه شده به اسم --web-experimental-hot-reload
هرجا که از دستور flutter run استفاده میکنی، کافیه اینو هم بهش اضافه کنی تا hot reload روی وب برات فعال شه. 💻🔥


اجرای پروژه با VS Code

اگه از تنظیمات دیباگ توی VS Code استفاده میکنی، میتونی این تنظیم اضافی رو به فایل launch.json اضافه کنی:

&quotconfigurations&quot: [ … { &quotname&quot: &quotFlutter for web (hot reloadable)&quot, &quottype&quot: &quotdart&quot, &quotrequest&quot: &quotlaunch&quot, &quotprogram&quot: &quotlib/main.dart&quot, &quotargs&quot: [ &quot-d&quot, &quotchrome&quot, &quot--web-experimental-hot-reload&quot, ] } ]


برای اینکه همه چیز بینقص باشه، بهتره تو تنظیمات VS Code گزینه «Dart: Flutter Hot Reload On Save» رو روشن کنی.
وقتی خواستی هم میتونی با آیکون ⚡ که تو پنل Run/Debug هست، یه hot reload بزنی.
و اگه خواستی برنامه رو از اول راه بندازی، دکمه ⟳ رو فشار بده، همونه که hot restart میزنه.


اجرای پروژه از طریق خط فرمان

اگه از دستور “flutter run” تو خط فرمان استفاده میکنی، حالا میتونی با این دستور، روی وب هم hot reload رو اجرا کنی:

flutter run -d chrome --web-experimental-hot-reload


وقتی hot reload فعال باشه، میتونی با زدن حرف “r” توی ترمینال در حال اجرا، برنامهات رو دوباره بارگذاری کنی، یا با زدن “R” یه hot restart بزنی.


بارگذاری مجدد در DartPad


تو DartPad هم الان یه دکمه Reload اضافه شده که باهاش میتونی سریع برنامه رو ریلود کنی.
البته فقط وقتی که برنامهات Flutter باشه این دکمه فعال میشه.
میتونی با اپ نمونهای که DartPad داده، کلی حال کنی و تستش کنی!


فریمورک ( Framework )

میخوان منطق رو از کتابخانه Material بیارن توی کتابخانه Widgets.

تو این نسخه یه ویجت جدید به اسم Expansible اضافه شده که کار ساخت ویجتهایی که باز و بسته میشن رو با تمهای مختلف خیلی سادهتر کرده.
این ویجت پایه و اساس ExpansionTile به سبک Material هم هست.


یه چیز باحال دیگه هم هست به اسم RawMenuAnchor که یکی از بچههای جامعه، @davidhicks980 ساخته.
این ویجت شده پایه و اساس منوهای Material و کلی امکان میده که منوها رو با شکل و شمایل دلخواه بسازی.
حتی میتونی این ویجت رو جداگونه و بدون هیچ استایلی استفاده کنی و ظاهر منو رو کاملاً دست خودت بگیری!

RawMenuAnchor
RawMenuAnchor




کوپرتینو (Cupertino)

شکل بین مربع و دایره ( Squircles )

یه قابلیت خیلی توپ به Flutter اضافه شده به اسم rounded superellipse.

این شکلی که همه بهش میگن «Apple squircle» همون گوشههای نرم و خوشفرم اپلیه، خیلی بهتر از مستطیلهای گرد معمولیه.
خیلیها تو جامعه Flutter درخواستش رو کرده بودن و اضافه شدنش یعنی داریم میریم سمت UI هایی که کاملاً شبیه به چیزی باشن که تو دستگاههای اپل میبینی.


هم CupertinoAlertDialog و هم CupertinoActionSheet حالا این شکل جدید رو استفاده میکنن!


میتونی با این APIهای جدید، rounded superellipses رو به اپلیکیشنهات اضافه کنی:

RoundedSuperellipseBorder برای نقاشی یا استفاده بهعنوان شکل ویجت

ClipRSuperellipse برای برش دادن (clipping)

Canvas.drawRSuperellipse، Canvas.clipRSuperellipse و Path.addRSuperellipse برای APIهای سطح پایینتر که کنترل مستقیمتری رو فراهم میکنن


یه نکته اینکه rounded superellipse هنوز داره فعالانه روش کار میشه و داره بهتر میشه.
فعلاً فقط روی iOS و اندروید پشتیبانی میشه و تو بقیه پلتفرمها مثل یه مستطیل گرد ساده نمایش داده میشه.
بهینهسازیهای عملکردی هم هنوز در حال انجامه.
پس با این نکات تو ذهنت امتحانش کن و منتظر آپدیتهای بعدی باش که این قابلیتها بهتر میشن!


مودال Sheet

چند تا مشکل هم با مودال شیت Cupertino حل شده، از جمله اینکه وقتی شیت روی اندروید باز میشه، بهتر تنظیم میکنه سیستم UI تم رو.

مودال شیت تنظیم شد تا ارتفاع نوار ناوبری درست بشه و مطمئن بشه که محتوا از پایین بریده نمیشه.
عکس زیر هم قبل و بعد از این تغییر رو نشون میده.

یه سری باگ دیگه هم تو این نسخه رفع شده، مثلا اینکه موقع باز و بسته شدن شیت با PopupMenuButton خوب هماهنگ نبود،
و گوشههای گرد شیت هم بهتر شده که روی بیشتر گوشیها درست و بدون مشکل دیده بشه. قبلاً بعضی گوشیها گوشهها رو درست نشون نمیدادن.


حالا یه گزینه جدید هست به اسم enableDrag که میتونی توی CupertinoSheetRoute و showCupertinoSheet استفاده کنی تا وقتی شیت کوپرتینو بازه، دیگه با کشیدن پایین بسته نشه.

(#163923)


نوارهای ناوبری ( Navigation bars )

CupertinoSliverNavigationBar.search حالا انیمیشن باز و بسته شدن صفحه جستجو رو بهتر و نرمتر نشون میده و آیکونهای قبل و بعد از فیلد جستجو هم دقیقتر و درستتر چیده شدن.

در نهایت، انتقال بین صفحهها با CupertinoNavigationBars یا CupertinoSliverNavigationBars بهروزرسانی شده تا دقیقاً مثل جدیدترین انیمیشنهای iOS باشه (#164956).


متریال ( Material )

توی این نسخه کلی قابلیت جدید و باگفیکس برای کتابخونه Material اضافه شده که هم امکاناتش بهتر شده، هم کار کردن باهاش برای دولوپرها راحتتر شده.

قابلیتهای جدیدی که اضافه شدن شامل اینا میشن:


خب CarouselController حالا یه متد راحتتر به اسم animateToIndex داره که میتونی باهاش خیلی نرم بری روی آیتم خاصی از کاروسل — فرقی هم نمیکنه آیتمهات اندازه ثابت داشته باشن یا با flexWeights تنظیم شده باشن.


خب TabBar الان دوتا کالبک جدید داره:
یکی onHover برای وقتی که ماوس روش میره،
و یکی onFocusChange برای وقتی که فوکوس میگیره یا از دست میده.
با اینا میتونی کنترل بیشتری روی ظاهر تبهات تو حالتهای مختلف داشته باشی.


حالا توی SearchAnchor و SearchAnchor.bar، دو تا کالبک جدید اضافه شده:

viewOnOpen برای اولی

onOpen برای دومی

با اینا میتونی راحتتر بفهمی کی باز یا بسته میشن و واکنش نشون بدی. برای هندل کردن event باز و بسته شدن کلی کمک میکنن.

توی CalendarDatePicker حالا میتونی یه calendarDelegate بدی، که باهاش میتونی تقویم دلخواه خودت رو بسازی — نه فقط تقویم میلادی.

توی مثالش یه تقویم فرضی نشون داده که ماههای زوج ۲۱ روزهن، ماههای فرد ۲۸ روزهن، و هر ماه از دوشنبه شروع میشه!
با این قابلیت، انعطاف خیلی بیشتری برای ساخت تقویمهای خاص داری.

یه سری بهبود کوچیک دیگه هم داشتن:

حالا میتونی به showDialog، showAdaptiveDialog و DialogRoute یه animationStyle بدی، که انیمیشن باز و بسته شدن دیالوگ رو شخصیسازی کنی.

ویجت Divider هم یه borderRadius گرفته که بتونی گوشههای خط جداکننده رو گرد کنی — مخصوصاً وقتی که قطرش زیاده خیلی به درد میخوره.


جدا از فیچرهای جدید، توی این نسخه چندتا باگ مهم هم توی ویجتهای DropdownMenu و Slider توی لایبرری Material برطرف شده:

مثلاً:

  • مشکلاتی که باعث میشدن DropdownMenu درست کار نکنه یا نادرست رندر بشه
  • یا ایراداتی که توی اسلایدرها بودن و رو تعامل یا انیمیشنها تأثیر میذاشتن

در کل یه سری ریزهکاری فیکس شده که تجربه کار با این ویجتها رو بهتر و روانتر کرده.

حالا DropdownMenu میتونه عرض منوی خودش رو کوچیکتر از عرض فیلد متنی نشون بده. تو نسخههای قبلی این باعث میشد با خطای RenderFlex overflow مواجه بشی، ولی الان دیگه فیکس شده. ضمن اینکه عرض پیشفرض منو هم الان با توجه به متن داخل فیلد تنظیم میشه، نه یه اندازه ثابت.

  • وقتی روی یکی از دایرههای کنترلی (thumb) توی RangeSlider موس میبری، فقط همون یکی که روش هستی افکت "overlay" نشون میده. قبلاً جفتشون با هم فعال میشدن که اشتباه بود.
  • و حالا Slider میتونه حتی وقتی رنگ Track شفافه، تا آخر هر دو طرف بر

دسترسی پدیری ( Accessibility )

📦 یه قابلیت خفن دیگهای که تو این نسخه اضافه شده، بهینهسازی ساخت درخت semantics ـه!

✅ با این تغییر، زمان کامپایل درخت semantics تقریباً ۸۰٪ کمتر شده.
اگه داری برای وب کار میکنی، این یعنی چیزی حدود ۳۰٪ کاهش زمان رندر فریمها وقتی که semantics فعاله (مثلاً برای screen reader یا دسترسیپذیری).

خلاصهش اینه: هم سرعت بیشتر، هم تجربه بهتر، مخصوصاً برای پروژههایی که دسترسیپذیری براشون مهمه.


معرفی نقشهای semantics با جزئیات دقیقتر

یه API جدید به اسم SemanticsRole به ویجت Semantics و بخشهای مرتبطش اضافه شده که به توسعهدهندهها این امکان رو میده تا دقیقتر کنترل کنن که چطوری اجزای UI توسط تکنولوژیهای کمکی (مثل screen readerها) تفسیر بشن.

حالا میتونی یه نقش خاص رو به کل زیرشاخهای از ویجتها بدی، فقط کافیه اون زیرشاخه رو با یه ویجت Semantics که نقش دلخواه رو روش گذاشتی، بپیچی. اینجوری خیلی راحتتر و منظمتر میتونی دسترسیپذیری اپت رو بهتر کنی.


فعلاً این قابلیت پیشرفته semantics roles فقط برای برنامههای وب فعال شده و قراره تو آپدیتهای بعدی برای بقیه پلتفرمها هم اضافه بشه. داک


برای اطلاعات بیشتر، میتونی به بخش «بهبود دسترسیپذیری با نقشهای semantics» تو مستندات مراجعه کنی.


یه سری بهبودای دیگه هم برای دسترسیپذیری اضافه شده:

تجربه کاربری بهتر برای ویجتها و اسکرین ریدرها:

  • حالا ویجتهای مختلف مثل تکستفیلد، منوها، اسلایدرها و دراپداونها بهتر از قبل پشتیبانی میشن و وقتی کاربر باهاشون تعامل میکنه، اسکرین ریدر هم توضیحهای دقیقتر و بهتری میده.
  • ناوبری روانتر فوکوس تو وب وقتی semantics فعال باشه:
    رفت و آمد بین ویجتها با فوکوس دیگه پرشهای ناگهانی نداره و حرکت بین اجزا نرمتر و منطقیتر شده.
  • شناسایی بهتر لینکها تو Android TalkBack:
    الان TalkBack تو اندروید لینکهایی که با Semantics.linkUrl یا ویجت Link از پکیج url_launcher تعریف شدن رو درست تشخیص میده و اعلام میکنه.
  • پشتیبانی از حالت high-contrast ویندوز تو Flutter وب:
    حالت «forced colors» ویندوز که برای دیده شدن بهتر در شرایط کنتراست بالا استفاده میشه، حالا تو Flutter وب فعال شده.
    توسعهدهندهها میتونن با تنظیم useSystemColors تو ThemeData به صورت خودکار رنگهای سیستم رو تو تمهای Flutter اعمال کنن تا دید کاربرا بهتر بشه.
  • بهبود تجربه Voice Control در iOS:
    ویجتهایی که قابلیت تعامل ندارن دیگه برچسب اضافی نمایش نمیدن، پس تجربه کاربری برای کسانی که از Voice Control استفاده میکنن، سادهتر و مرتبتر شده.


تسکت اینپوت ( Text input )

میتونیم اینطوری خودمونی و راحت بگیم:

تو این نسخه چندتا بهبود مهم تو ورودی متن داشتیم:

  • منوی انتخاب متن سیستم تو iOS فعال شده که پایینتر تو بخش iOS بیشتر توضیح دادیم.
  • گزینههای ویجت Autocomplete حالا با OverlayPortal ساخته میشن که سرعتشون بهتر شده و باگهای چیدمان هم رفع شده.
  • الان میتونی رفتار onTapUpOutside تو تکستفیلدها رو شخصیسازی کنی.
  • توسعهدهندهها دیگه مجبور نیستن فقط متن خطا بذارن، میتونن هر ویجتی که میخوان برای پیام خطا تو FormField بسازن.
  • متن قابل انتخاب تو Flutter باگ کمتری داره و روی وب هم سریعتر و روانتر شده.


پشتیبانی از multi-window

یه عده از بچههای Canonical زحمت کشیدن و حسابی رفتن جلو که اپ دسکتاپ بتونه چندتا پنجره همزمان باز کنه!

Canonical چندتا باگ رو که موقع باز شدن چندتا پنجره همزمان تو اپ پیش میومد درست کردن، مثل:

  • دسترسی بهتر ( Accessibility )
  • اعلانهای چرخه زندگی اپ ( App lifecycle )
  • مدیریت فوکوس ( Focus )
  • اتفاقات کیبورد ( Keyboard events )
  • ورودی متن
  • اتفاقات موس ( Mouse events )

حالا خیلی بهتر شده همه چی وقتی چندتا پنجره داریم!


Canonical یه ویژگی جدید اضافه کرده که حالا کد دارت میتونه مستقیم با موتور Flutter از طریق FFI حرف بزنه (#163430). این یعنی دارن برای آیندهی windowing در Flutter آماده میشن.
همچنین، یه رشته ریستر هم روی لینوکس اضافه کردن (#161879) که باعث میشه فریمها خیلی نرمتر اجرا بشن و وقتی چندتا پنجره باز کردی، همهچی حسابی روان باشه.

(Raster)

مرج کردن Threadها در دسکتاپ

خب Canonical ویندوز و مکاواس رو هم آپدیت کرده تا اپها بتونن Threadهای رابط کاربری و پلتفرم رو با هم Merge کنن (#162883, #162935).


خب Merged threads این امکان رو میدن که با Dart FFI بتونی با APIهای native که باید روی platform thread اجرا بشن کار کنی. مثلاً اگه تو ویندوز merged threads رو فعال کنی، میتونی با Dart FFI اندازه پنجره اپت رو با استفاده از win32 APIs تغییر بدی!


توی ویندوز میتونی merged threads رو فعال کنی با اضافه کردن کد زیر به فایل windows/runner/main.cpp، داخل تابع wWinMain:

project.set_ui_thread_policy(UIThreadPolicy::RunOnPlatformThread)

توی مکاواس میتونی merged threads رو فعال کنی با اضافه کردن این تنظیمات به فایل macos/Runner/Info.plist، داخل عنصر <dict>:

<key>FLTEnableMergedPlatformUIThread</key> <true />

در آینده نزدیک، merged threads تو ویندوز و مک بهطور پیشفرض روشن میشه.



و iOS

تجربه (paste) تو اپهای Flutter روی iOS بهتر شده!
حالا وقتی تو تکستفیلدهای ساده که چیز خاصی روشون تنظیم نکردی محتوا (paste) میکنی، دیگه دیالوگ تأیید نمیاد بالا. این قابلیت بهصورت پیشفرض روی همه اپهای Flutter برای iOS فعال شده.
فقط اینو بدون که اگه تو اپت اکشنهای سفارشی مثل “Send Email” تو منوها داری، هنوز این قابلیت براشون کار نمیکنه.



اندروید

بازنویسی ابزارهای Gradle به زبان Kotlin

پلاگین Gradle در Flutter از زبان Groovy به Kotlin تبدیل شده. این تغییر باعث شده کدها راحتتر قابل ویرایش و توسعه باشن و همچنین امکان نوشتن تستهای واحد (unit tests) برای پلاگین فراهم بشه. با این تستها و تبدیل از زبان پویا به زبان استاتیک، روند ساخت (build) پروژهها پایدارتر و قابل اعتمادتر میشه. این بازنویسی قرار نیست رفتارهای قبلی رو تغییر بده


پشتیبانی از قلملمسی (Scribe / Stylus)

حالا میتونید با قلملمسی (stylus) روی اندروید هم توی فیلدهای متنی بنویسید، درست مثل قابلیت نوشتن با Apple Pencil توی اپهای Flutter روی iOS. کاربرها میتونن مستقیم روی هر فیلد متنی بنویسن و دستخطشون تبدیل به متن توی فیلد میشه. هنوز همه ژستها (gestures) پشتیبانی نمیشن ولی دارن روش کار میکنن که این نقصها برطرف بشه. این ویژگی فقط روی اندروید ۱۴ به بالا فعاله و اگه خواستید میتونید با تنظیمات TextField.stylusHandwritingEnabled یا CupertinoTextField.stylusHandwritingEnabled خاموشش کنید.




موتور ( Engine )

ایمپلر روی اندروید ( Impeller )

از نسخه ۳.۲۹.۳ به بعد، روی دستگاههایی که اندرویدشون API level 28 (اندروید ۹) یا قدیمیتره، اپهای Flutter بهصورت پیشفرض از رندرر قدیمی Skia استفاده میکنن. این کار باعث میشه Flutter روی دستگاههای قدیمیتر پایدارتر و کممشکلتر کار کنه. رندرر Impeller همچنان روی دستگاههایی با API level 29 (اندروید ۱۰) و بالاتر بهعنوان رندرر پیشفرض باقی میمونه.


با گرفتن بازخورد از کاربران با دستگاههای مختلف، تصمیم گرفتن که کدوم دستگاهها از Vulkan استفاده کنن و کدومها OpenGLES. تو این نسخه، امولاتور اندروید، دستگاههای MediaTek با API کمتر از ۳۱، دستگاههای PowerVR قدیمیتر از CXT، و نسخههای قدیمیتر GPUهای Samsung XClipse که Vulkan 1.3 رو ساپورت نمیکنن، به جای Vulkan میرن سراغ OpenGLES.


مثل نسخههای قبلی، هنوزم میتونی از Impeller انصراف بدی و از این راهنما استفاده کنی. ولی چون دارن بیشتر و بیشتر به پایداری و عملکرد Impeller مطمئن میشن، تو نسخههای پایدار بعدی این امکان حذف میشه و دیگه نمیتونی روی دستگاههای جدید اندروید از Impeller رد شی.


خلاصه اینکه تو Flutter 3.27 با Impeller روی دستگاههای Vulkanدار باگ و کرش داشتیم که تو 3.29 به بعد درست شده. این مشکلات رو قراره برای 3.27 درست نکنن، پس بهتره هرچی زودتر آپدیت کنید به 3.29 یا بالاتر. اگه هم نمیتونید، پیشنهاد میکنیم Impeller رو تو اندروید خاموش کنید تا دردسر نداشته باشید.


آپدیتهای دیگه Impeller

تو این نسخه، رندر کردن متن با Impeller خیلی بهتر شده. انیمیشنهای متنی نرمتر شدن و دیگه تکونهای اضافه و عجیب ندارن، چون کیفیت شکلهای متن (glyph) توی atlas بالاتر رفته و خطاهای گرد کردن اعداد شناور هم درست شده. اگر دوست داشتی میتونی جزئیات بیشترش رو تو flutter#149652 ببینی.

قبل اپدیت
قبل اپدیت
بعد اپدیت
بعد اپدیت


البته! اینجوری بهتره:

این نسخه کلی بهبود تو کیفیت و سرعت داره، مثل:

  • دیگه Conic curves تقریبی نیستن و مستقیماً tessellate میشن
  • و Partial repaint بهینه شده و دیگه frequent memory allocation اتفاق نمیفته
  • سرعت Blur بهتر شده چون redundant attachments حذف شدن
  • متنهایی که دقیقاً ۱۸۰ درجه چرخیده بودن، دیگه به هم نمیخورن و درست نمایش داده میشن




و DevTools and IDEs

[جدید] Flutter Property Editor
🛠️ حالا با ابزار جدید Flutter Property Editor خیلی راحت میتونی Property ویجتها رو تغییر بدی و مستنداتشون رو هم بخونی!

📌 چطوری بهش دسترسی داشته باشی؟

اگه از VS Code استفاده میکنی: از پنل کناری Property Editor.

اگه با Android Studio یا IntelliJ کار میکنی: از Tool Window مربوط به Property Editor.

🧪 به درد کی میخوره؟
همه کسایی که موقع طراحی UI با Flutter سر و کله میزنن! میتونی:

  • سریع ویجتها رو شخصیسازی کنی
  • مستندات هر خاصیت رو بخونی
  • بدون نیاز به نوشتن کد اضافی یا رفرش کردن، تغییرات رو ببینی

خلاصه، طراحی UI با Flutter حالا راحتتر از همیشه شده! 🚀


vs code
vs code
android studio
android studio

🎯 بهبودهای DevTools

ابزارهای DevTools این نسخه کلی ارتقاء داشتن که تجربهی توسعه باهاشون رو خیلی بهتر میکنه:

🔌 پشتیبانی آفلاین برای بخش Network
حالا میتونی ترافیک شبکه رو حتی وقتی آنلاین نیستی بررسی کنی. خیلی به درد دیباگ آفلاین میخوره.

🛠️ باگفیکسهای مختلف
یه سری باگهای اعصابخوردکن برطرف شدن، مثل:

  • مشکلات بررسی تاریخچه (Review History)
  • ارورهای Inspector
  • ابزار Deep Links

📊 بهبود ابزار CPU Profiler و Memory
دادهها دقیقتر شدن و رابط کاربری هم بهتر شده.

🚀 افزایش سرعت و کاهش مصرف حافظه
DevTools حالا سریعتر بالا میاد و کمتر کرش میکنه، مخصوصاً موقع کار با پروژههای سنگین.

خلاصه، اگه با Flutter زیاد سر و کار داری، این نسخه از DevTools حسابی به کارت میاد!


📝 اینا فقط یه بخش کوچیکی از تغییرات نسخه جدید Flutter بودن!

اگه میخوای با همهی آپدیتها و جزئیات Flutter 3.32 آشنا بشی، حتماً یه سر به release noteهای DevTools نسخههای 2.44.0 و 2.45.0 بزن. اونجا همه چی دقیقتر و کاملتر توضیح داده شده.

🎯 بهبودهای آنالایزر (Analyzer) در Dart

تیم Dart همچنان داره روی بهتر شدن تجربه توسعهدهنده کار میکنه! این سری کلی پیشرفت داشتیم توی Dart Analyzer که باعث میشه راحتتر و سریعتر کد بزنیم:

📚 معرفی قابلیت جدید doc imports: حالا میتونی توی کامنتهای مستندات (documentation comments) به المانهای خارجی اشاره کنی بدون اینکه لازم باشه واقعاً اونها رو import کنی. این خیلی برای مستندسازی مرتب و کمحجم مفیده!

🔧 کلی بهبود توی قابلیتهای quick fix، assist و rename شده که حسابی سرعت کارتو بالا میبره.

جزئیات بیشترشم میتونی توی سایت dart.dev بخونی.


🤖 حالا Gemini تو Android Studio باهات به زبون Flutter و Dart حرف میزنه!

اگه با Android Studio کار میکنی، یه خبر توپ دارم برات:
Gemini حالا پشتیبانی کامل از Flutter و Dart پیدا کرده!

یعنی چی؟ یعنی از این به بعد میتونی از هوش مصنوعی Gemini درست تو دل IDE محبوبت کمک بگیری تا:

  • سریعتر و راحتتر اپ بزنی 🚀
  • کدهای بهینهتری بنویسی ✨
  • راحتتر با ویجتها و ساختارهای Flutter کار کنی 🎯

همه اینا باعث میشن ساخت یه اپ Flutter باکیفیت بالا، هم سریعتر باشه هم لذتبخشتر.

اگر میخواد راجبش این داک بخون

✨ پشتیبانی از Model Context Protocol (MCP) برای Dart و Flutter تو راهه!

پشتیبانی از Model Context Protocol (یا همون MCP) داره برای Dart و Flutter میاد، و قراره یه تغییر اساسی تو تجربهی برنامهنویسیمون ایجاد کنه! 😍

Dart Tooling MCP Server

یعنی چی؟

یه MCP SDK برای Dart منتشر شده و حالا دارن یه سرور MCP مخصوص ابزارهای Dart میسازن. این سرور قراره اطلاعاتی مثل وضعیت کد، زمان اجرا، و حتی وابستگیهای پروژه رو بده به ابزارهایی مثل Android Studio یا VS Code.

چه فایدهای داره برامون؟ 🤔

✅ کدهای پیشنهاد میشن دقیقتر میشن
مثلاً وقتی autocomplete یا generate میزنی، خروجیها باهوشتر و کاربردیتر میشن.

🧠 کارهای پیچیده رو هم میتونه خودش انجام بده
مثل:
– درست کردن مشکل چیدمان
– مدیریت وابستگیها (dependencies)
– حتی رفع خطاهای زمان اجرا 😲

خلاصهاش:

یه دستیار حرفهایتر تو IDE خواهیم داشت که دقیقاً میدونه داره با چه پروژهای کار میکنه.
منتظر بمون... قراره کلی حال کنیم! 🚀




با هوش مصنوعی بساز! 🧠✨

معرفی Firebase AI Logic توی فلاتر!

حتماً اسم Vertex AI به گوشت خورده یا شاید تو پروژههات استفادهش کردی — همون سرویس گوگل برای آوردن قدرت مدلهای هوش مصنوعی مثل Gemini داخل اپها.

اما یه عالمه از شما گفتید که:

"میخوایم مستقیماً از Gemini Developer API استفاده کنیم، چون رایگانتره و راحتتر!"

خب، گوگل صداتون رو شنید! 😎

از امروز:

خب Vertex AI توی Firebase تبدیل شده به Firebase AI Logic!
با این ابزار جدید، میتونی با یه Flutter SDK ساده، هم از Gemini API استفاده کنی، هم از Imagen مدلها، اونم مستقیم از اپ سمت کلاینت، بدون نیاز به سرور! 🎉

🔧 یعنی چی دقیقتر؟

  • لازم نیست برای هوش مصنوعی بری سمت backend.
  • میتونی مستقیماً از فلاتر به مدلهای تولید متن یا تصویر وصل شی.
  • و از فری تیِر خفن Gemini Developer API هم لذت ببری!

🔥 خلاصهاش؟
هوش مصنوعی از همیشه سادهتر و دم دستتر شده برای اپهای Flutter. وقتشه یه قابلیت AI خفن به اپت اضافه کنی 💪

اگر الان داری از بستهی firebase_vertexai استفاده میکنی، فعلاً مثل قبل کار میکنه، ولی بهتره هر چه زودتر به بستهی جدید firebase_ai مهاجرت کنی تا از قابلیتهای بهروز و بهتر بهره ببری.

داشبورد AI Monitoring

داشبورد AI Monitoring جدید توی کنسول Firebase بهت یه دید دقیق و قابل استفاده میده از نحوه استفادهات از APIهای Gemini.
این داشبورد کلی اطلاعات مثل الگوهای مصرف، عملکرد سیستم، و مشکلات احتمالی رو نشون میده تا بتونی با داده تصمیم بگیری و مطمئن باشی که بهترین استفاده رو از APIها داری.
همچنین AI Monitoring کمکت میکنه باگها و رفتارهای عجیب توی استفاده از Gemini API رو پیدا و حل کنی.

تغییرات بزرگ و حذفها


تو اندروید، از API 36 به بعد دیگه نباید از semantic announcement events استفاده کنی چون منسوخ شدن.
به جای اون، باید از “polite” implicit announcements استفاده کنی که با تنظیم SemanticProperties.liveRegion انجام میشه.
یه مشکل فعلاً هست که وقتی متن باید اعلام بشه ولی نباید فوکوسپذیر باشه، اعلان به درستی کار نمیکنه.
برای جزئیات بیشتر و برنامههای حل این مشکل میتونی به issue شماره #165857 مراجعه کنی.
همچنین تو داکیومنت SemanticService.announce راهحلهای جایگزین هم هست که میتونی ببینی.


حمایت از ۶ پکیج متوقف شد

همونطور که قبلاً تو بلاگ انتشار Flutter 3.29 گفتیم، دیگه پشتیبانی از این پکیجها قطع شده:

flutter_markdown (جزئیات در issue شماره #162966)

ios_platform_images (#162961)

css_colors (#162962)

palette_generator (#162963)

flutter_image (#162964)

flutter_adaptive_scaffold (#162965)

بهتون پیشنهاد میکنیم برای جایگزینها و بحثهای بیشتر، به هر کدوم از اون issueها سر بزنید و نظرات رو ببینید



حداقل نسخههای iOS و macOS

خب Flutter در نسخهی بعدی پایدار، دیگه از iOS 12 و macOS 10.14 (Mojave) پشتیبانی نمیکنه و حداقل نسخهها رو میبره روی iOS 13 و macOS 10.15 (Catalina). یعنی برنامههایی که با نسخههای آیندهی Flutter ساخته بشن، روی iOS 12 یا macOS 10.14 اجرا نمیشن.



تغییرات مهم و حذفها در این نسخه:

اول ExpansionTileController در Material حذف شده و به جای اون باید از ExpansibleController در لایه Widgets استفاده کنید.

اسم SelectionChangedCause.scribble که حذف شده بود، به SelectionChangedCause.stylusHandwriting تغییر کرده، چون ویژگی Scribble اپل حالا با Scribe اندروید یکی شده.

برای هماهنگسازی بیشتر تمهای Material، ThemeData.indicatorColor حذف شده و باید به جای اون از TabBarThemeData.indicatorColor استفاده کنید. همچنین تمهای کامپوننت مثل cardTheme، dialogTheme و tabBarTheme باید به ترتیب به CardThemeData، DialogThemeData و TabBarThemeData مهاجرت داده بشن.

فرمول SpringDescription در بعضی رفتارها اصلاح شده تا رفتارهای فیزیکی واقعیتر و بدون خطا باشه. این تغییر باعث میشه که بعضی springهای با نسبت میرایی کمتر از 1 (underdamped) که جرمشون غیر از 1 بود، رفتار پرش متفاوتی بعد از آپدیت داشته باشن. برای برگردوندن رفتار قبلی باید پارامترهای spring رو طبق راهنمای Spring Description Underdamped تغییر بدید. اونجا همچنین ابزاری برای محاسبه تغییرات پارامترها هست.

اگر بخوای، میتونم لینک و راهنمای کامل این تغییرات رو هم برات بیارم!



خلاصه

نسخه ۳.۳۲ فلانتر یه قدم بزرگ دیگه رو به جلو برداشته که به لطف تلاش بینظیر جامعه توسعهدهندهها ممکن شده. کلی ویژگی جدید مثل وب هات ریلود و بهبودهای پیوسته روی پلتفرمها اضافه کردیم.

منبع

یه برنامه‌نویس موبایل از جنس فلاتر، یه قلب پر از کد و یه ذهن پر از ایده!

من علیرضام و اینجا دارم با عشق محتوا می‌سازم. حمایتت یعنی یه لبخند، یه انگیزه و کلی محتوای خفن‌تر! 😎🔥

کافی بده

بزن بریم! بزودی ویدیوش رو میزارم داخل یوتیوب:
کانال یوتیوب من
و همینطور تو تلگرام:
t.me/alirezabashi_98

منتظرتونم! 🙌🔥

هوش مصنوعیandroid studioflutterفلاتر
۷
۰
علیرضا باشی
علیرضا باشی
یه برنامه‌نویس موبایل از جنس فلاتر، یه قلب پر از کد و یه ذهن پر از ایده! من علیرضام و اینجا دارم با عشق محتوا می‌سازم. حمایتت یعنی یه لبخند، یه انگیزه و کلی محتوای خفن‌تر! 😎🔥
شاید از این پست‌ها خوشتان بیاید