تغییرات جدید فلاتر 3.24

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

  1. پیش‌نمایش Flutter GPU: این قابلیت جدید امکان استفاده از گرافیک پیشرفته و ایجاد صحنه‌های سه‌بعدی را به صورت مستقیم در فلاتر فراهم می‌کند.

  2. امکان جاسازی چندین نما (view) از فلاتر در برنامه‌های وب: این ویژگی جدید به شما اجازه می‌دهد تا انعطاف‌پذیری برنامه‌های وب خود را افزایش دهید.

  3. پشتیبانی از درآمدزایی از طریق تبلیغات ویدئویی: این قابلیت جدید به شما کمک می‌کند تا از طریق نمایش تبلیغات ویدئویی در برنامه‌های خود، درآمدزایی کنید.

علاوه بر این ویژگی‌ها، جامعه فلاتر در چند ماه گذشته بسیار فعال بوده و تعداد زیادی تغییرات در فریمورک و موتور فلاتر ایجاد شده است. همچنین، 49 مشارکت‌کننده جدید به این جامعه پیوسته‌اند که در این نسخه نقش مهمی داشته‌اند. این پیام قدردانی از تلاش‌ها و اشتیاق این افراد را نیز ابراز می‌کند.

 

# تغییرات فریم ورک

 

اسلیور (Slivers) های جدید

در این به‌روزرسانی فلاتر، اسلیورهای (Slivers) جدیدی معرفی شده‌اند که به توسعه‌دهندگان امکان می‌دهند تا رفتارهای پویای اپ بار (App Bar) را پیاده‌سازی کنند. این اسلیورها شامل موارد زیر هستند:

  1. PinnedHeaderSliver: این اسلیور به شما اجازه می‌دهد تا یک هدر (Header) بسازید که هنگام اسکرول کاربر، در جای خود ثابت باقی بماند.

  2. SliverResizingHeader: این اسلیور به شما امکان می‌دهد تا هدرهایی ایجاد کنید که هنگام اسکرول کردن، تغییر اندازه دهند.

این اسلیورهای جدید به توسعه‌دهندگان اجازه می‌دهند تا هدرهایی بسازند که شناور، ثابت یا قابل تغییر اندازه باشند، و این ویژگی‌ها می‌توانند با هم ترکیب شوند تا نتایج جذاب‌تری ایجاد شود. این اسلیورها مشابه اسلیورهای موجود مانند SliverPersistentHeader و SliverAppBar هستند، اما با API‌های ساده‌تر ارائه شده‌اند که امکان ترکیب آنها برای ایجاد اثرات بیشتر را فراهم می‌کند.

به همراه این اسلیورهای جدید، کد نمونه‌ای نیز ارائه شده است. به عنوان مثال، مستندات API مربوط به PinnedHeaderSliver شامل مثالی است که اثراتی مشابه با اپ بار موجود در برنامه تنظیمات (Settings) iOS را بازسازی می‌کند:

برای دیدن این Pull Request کلیک کنید.

 

Cupertino library

در این به‌روزرسانی، کتابخانه Cupertino بهبودهایی داشته است. به‌طور خاص، دقت و کیفیت CupertinoActionSheet افزایش یافته است. حالا وقتی انگشت خود را روی دکمه‌های این اکشن شیت (Action Sheet) می‌کشید، بازخورد لمسی (haptic feedback) دریافت می‌کنید. همچنین، اندازه و وزن فونت دکمه‌ها به گونه‌ای تغییر کرده که با نمونه‌های بومی (native counterparts) خود در سیستم عامل iOS تطابق بیشتری داشته باشد. این بهبودها باعث می‌شود تجربه کاربری نزدیک‌تری به برنامه‌های بومی iOS داشته باشید.

برای دیدن این Pull Request کلیک کنید.

 

TreeView

بسته‌ی two_dimensional_scrollables ویجت جدیدی به نام TreeView را منتشر کرده است. این ویجت همراه با چندین کلاس جانبی ارائه شده که به شما کمک می‌کند تا درخت‌های پیمایشی (scrolling trees) کارآمدی بسازید که با رشد درخت، بتوانند به همه جهات اسکرول شوند. همچنین، اپلیکیشن نمونه‌ای که در این بسته قرار دارد، به‌روزرسانی شده و اکنون شامل چندین مثال جدید از نحوه استفاده از ویجت‌های TableView و TreeView است. این به‌روزرسانی به توسعه‌دهندگان کمک می‌کند تا درخت‌های پیمایشی پیچیده‌تری ایجاد کنند که از نظر عملکرد نیز بهینه باشند.

ویجت TreeSliver نیز به فریمورک فلاتر اضافه شده است. این ویجت برای ساخت درخت‌هایی است که فقط در یک بُعد (به صورت عمودی یا افقی) اسکرول می‌شوند. APIهای TreeView و TreeSliver به گونه‌ای طراحی شده‌اند که با هم سازگار باشند، بنابراین به راحتی می‌توانید بین این دو ویجت جابه‌جا شوید و هر کدام را که مناسب نیازتان است انتخاب کنید.

 

CarouselView

در این نسخه از فلاتر، ویجت CarouselView که بر اساس طراحی متریال دیزاین (Material Design) ساخته شده، معرفی شده است. CarouselView یک لیست اسکرول‌شدنی از آیتم‌ها را نمایش می‌دهد که به صورت Uncontained (بدون محدودیت درون یک کانتینر خاص) طراحی شده است. در این ویجت، آیتم‌ها تا لبه‌ی کانتینر اسکرول می‌شوند و آیتم‌های ابتدایی و انتهایی (leading and trailing) می‌توانند به صورت دینامیک اندازه خود را تغییر دهند. این تغییر اندازه زمانی رخ می‌دهد که این آیتم‌ها در حال خروج از نما یا ورود به نما هستند.

برای دیدن این Pull Request کلیک کنید.

 

More Functionality for Widgets

در این نسخه از فلاتر، بخشی از منطق اصلی ویجت‌ها که به طراحی خاصی وابسته نیست، از کتابخانه‌ی Material به کتابخانه‌ی Widgets منتقل شده است تا امکان استفاده‌ی عمومی‌تری داشته باشد. این تغییرات شامل موارد زیر است:

  1. ویجت Feedback: این ویجت دسترسی آسان به بازخورد لمسی (haptic) و صوتی (audio) از دستگاه را فراهم می‌کند که در پاسخ به ژست‌های کاربری مانند ضربه (tap)، نگه داشتن طولانی (long press) و موارد دیگر فعال می‌شود.

  2. ToggleableStateMixin و ToggleablePainter: این دو کلاس پایه برای ساخت ویجت‌های تگلبل (toggle)، مانند چک‌باکس‌ها، سوئیچ‌ها و دکمه‌های رادیویی استفاده می‌شوند.

این تغییرات به توسعه‌دهندگان اجازه می‌دهد تا از این قابلیت‌ها به صورت گسترده‌تری در طراحی‌های خود استفاده کنند، بدون اینکه محدود به کتابخانه‌ی Material شوند.

 

AnimationStatus

در این ورژن قابلیت‌های مربوط به enum در AnimationStatus را ارتقا می‌دهد. این ارتقا شامل افزودن getterهایی به AnimationStatus است که وضعیت انیمیشن را بررسی می‌کنند. این getterها شامل موارد زیر هستند:

  • isDismissed: بررسی می‌کند که آیا انیمیشن به حالت پایان اولیه خود (ابتدای مسیر) بازگشته است.
  • isCompleted: بررسی می‌کند که آیا انیمیشن به پایان رسیده است.
  • isRunning: بررسی می‌کند که آیا انیمیشن در حال اجرا است.
  • isForwardOrCompleted: بررسی می‌کند که آیا انیمیشن در جهت رو به جلو اجرا می‌شود یا به پایان رسیده است.

برخی از این getterها قبلاً در زیرکلاس‌های Animation مانند AnimationController و CurvedAnimation وجود داشتند. اکنون، همه‌ی این getterهای وضعیت علاوه بر AnimationStatus، در تمام زیرکلاس‌های Animation نیز در دسترس هستند.

برای دیدن این Pull Request کلیک کنید.

 

آپدیت کردن SelectionArea

Triple click (سه‌بار کلیک): وقتی کاربر سه بار روی یک نقطه کلیک می‌کند، پاراگرافی که در آن نقطه قرار دارد به‌طور کامل انتخاب می‌شود:

Triple click + drag (سه‌بار کلیک و کشیدن): این ژست باعث می‌شود که انتخاب به صورت بلوک‌های پاراگراف گسترش یابد؛ یعنی با کشیدن موس پس از سه‌بار کلیک، کل پاراگراف‌ها یکی پس از دیگری انتخاب می‌شوند:

برای دیدن این Pull Request کلیک کنید.

 

# تغییرات انجین (Engine)

 

Impeller

  • بهبود عملکرد: به عنوان مثال، مجموعه‌ای طولانی از بهبودها در رندرینگ متن (text rendering) صورت گرفته که به طور ویژه عملکرد اسکرول کردن ایموجی‌ها را بهبود بخشیده است. این تغییرات باعث شده که هنگام اسکرول کردن یک مجموعه بزرگ از ایموجی‌ها، دیگر مشکل کندی (jank) وجود نداشته باشد، که به خوبی توانایی‌های رندرینگ متن Impeller را آزمایش کرده است.

  • افزایش دقت: با حل تعدادی از مشکلات، دقت رندرینگ متن Impeller نیز به طور چشمگیری بهبود یافته است. به خصوص، وزن متن (text weight)، فاصله بین حروف (spacing)، و فاصله بین کاراکترها (kerning) اکنون با دقت رندرر قدیمی (legacy renderer) هم‌خوانی دارد.

 

Flutter GPU

  • Flutter GPU: این API گرافیکی سطح پایین به توسعه‌دهندگان این امکان را می‌دهد که رندرهای سفارشی ایجاد کنند.
  • استفاده از Dart و GLSL: با استفاده از این API، می‌توان با کد Dart و شیدرهای GLSL (OpenGL Shading Language) رندرهای سفارشی را پیاده‌سازی کرد.
  • بدون نیاز به کد native: یکی از ویژگی‌های برجسته این است که برای استفاده از Flutter GPU نیازی به نوشتن (native platform code) نیست.
  • توانمندی‌های جدید: Flutter GPU به شما این امکان را می‌دهد که گرافیک‌های پیچیده و صحنه‌های سه‌بعدی را به‌طور مستقیم در فلاتر رندر کنید.
  • پشتیبانی از Impeller: برای استفاده از Flutter GPU، به سیستم رندرینگ Impeller نیاز دارید. این سیستم در حال حاضر بر روی iOS، macOS، و Android پشتیبانی می‌شود.
  • پیش‌نمایش اولیه: هرچند که Flutter GPU هنوز در مرحله پیش‌نمایش اولیه (early preview) است، هدف نهایی آن این است که از تمام پلتفرم‌های فلاتر پشتیبانی کند.

 

# تغییرات وب (Web)

 

Multi-view embedding

برنامه‌های وب فلاتر اکنون می‌توانند از multi-view embedding بهره‌برداری کنند، که به توسعه‌دهندگان این امکان را می‌دهد تا محتوا را به طور هم‌زمان در چندین عنصر HTML رندر کنند. این ویژگی که به آن "مدل تعبیه‌شده" یا "multi-view" گفته می‌شود، انعطاف‌پذیری بیشتری برای ادغام نماهای فلاتر در برنامه‌های وب موجود فراهم می‌آورد.

  • عدم رندر فوری: در حالت multi-view، برنامه وب فلاتر به محض راه‌اندازی به طور خودکار رندر نمی‌شود. بلکه تا زمانی که برنامه میزبان (host application) اولین "ویو" را با استفاده از متد addView اضافه کند، صبر می‌کند.
  • مدیریت داینامیک ویوها: برنامه میزبان می‌تواند به طور داینامیک ویوها را اضافه یا حذف کند و فلاتر به طور خودکار ویجت‌های خود را مطابق با این تغییرات تنظیم می‌کند.

 

# تغییرات IOS

 

Swift Package Manager initial support

فلاتر نسخه 3.24 از Swift Package Manager پشتیبانی اولیه (early support) را اضافه کرده است و این تغییر مزایای مختلفی به همراه دارد:

  1. دسترسی به اکوسیستم بسته‌های Swift: با این ویژگی جدید، پلاگین‌های فلاتر قادر خواهند بود از اکوسیستم در حال رشد بسته‌های Swift بهره‌برداری کنند. این به معنای امکان استفاده از کتابخانه‌ها و ابزارهای جدیدی است که در Swift Package Manager موجود هستند.

  2. سادگی در نصب فلاتر: Swift Package Manager به همراه Xcode ارائه می‌شود. در آینده، برای استفاده از فلاتر در پلتفرم‌های اپل نیازی به نصب Ruby و CocoaPods نخواهید داشت. این تغییر باعث می‌شود فرآیند نصب و تنظیم فلاتر بر روی سیستم‌های اپل ساده‌تر و مستقیم‌تر باشد.

به عبارت دیگر، این پشتیبانی اولیه از Swift Package Manager به توسعه‌دهندگان این امکان را می‌دهد که از بسته‌های Swift استفاده کنند و همچنین فرآیند نصب فلاتر را بر روی پلتفرم‌های اپل تسهیل می‌کند.

 

برای دیدن فایل changelog.md این ورژن کلیک کنید.

برای دیدن release این ورژن کلیک کنید.

0 🔥
0 🎉
0 😮
0 👍
0 💜
0 👏
میلاد خسروی
نویسنده کد نیوز

برنامه نویس فان | Fun Developer یک آدم ساده که عاشق برنامه نویسی و کد زدنه :) تلاش میکنه تا به بقیه کمک کنه. توسعه دهنده هسته لاراول و فضای اوپن سورس. فاندر پرانتز و کد نیوز.

0+ نظر

برای ثبت نظر ابتدا ورود کنید.

0 نظر

    اولین نفر باش که نظر ثبت میکنی :) یعنی یه کامنت به ما نمیرسه 😁