ویژگی های فلاتر ۲.۸ | Flutter 2.8

فلاتر ۲.۸

آن زمان از سال در نیمکره شمالی است – برگها در حال تغییر هستند، دما در حال خنک شدن است و آخرین نسخه پایدار سال اینجاست. سلام و به فلاتر 2.8 خوش آمدید! این نسخه نشان دهنده کار سخت 207 مشارکت کننده و 178 بازبین است که منجر به 2424 PR ادغام شده و 2976 شماره بسته شده است. تشکر ویژه از مشارکت کننده اصلی انجمن در این نسخه، Bartosz Selwesiuk، مهندس Flutter در Very Good Ventures، که 23 PR ارائه کرد، که بیشتر آنها عمدتاً بر روی دوربین عکاسی وب متمرکز شده بودند.


همه این کار جمعی باعث بهبود عملکرد موتور و Flutter DevTools شد، یک نسخه پایدار از Google Mobile Ads SDK برای Flutter، مجموعه‌ای از ویژگی‌ها و پیشرفت‌های جدید در Firebase، WebView 3.0، مجموعه جدیدی از بسته‌های مورد علاقه Flutter، مجموعه‌ای از به‌روزرسانی‌های دسکتاپ در راه انتشار پایدار، و نسخه جدیدی از DartPad با پشتیبانی از بسته‌های بیشتر، از جمله خود Firebase. این ممکن است آخرین نسخه سال باشد، اما کمترین آن نیست. بیایید آن را انجام دهیم!

کارایی


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

استارت آپ


این نسخه شامل بهبودهایی در تأخیر راه اندازی برنامه است. این پیشرفت‌ها را با گوگل پلی، یک برنامه بزرگ و محبوب با بیش از 1 میلیون خط کد، آزمایش کنید تا مطمئن شوید که این تغییرات تأثیر محسوسی در دنیای واقعی دارند. این بهبودها با هم منجر به کاهش 50 درصدی تأخیر راه‌اندازی گوگل پلی هنگام اجرا بر روی دستگاه‌های اندرویدی ارزان‌قیمت و بهبود 10 درصدی در دستگاه‌های پیشرفته شده است.

بهبود روشی که فلاتر بر سیاست جمع‌آوری زباله Dart VM تأثیر می‌گذارد، اکنون به جلوگیری از چرخه‌های نامناسب GC در طول دنباله راه‌اندازی برنامه کمک می‌کند. به عنوان مثال، قبل از رندر شدن اولین فریم در آندروید ، فلاتر اکنون فقط به Dart VM از فشار حافظه برای سیگنال‌های TRIM_LEVEL_RUNNING_CRITICAL و بالاتر اطلاع می‌دهد. در آزمایش محلی، این تغییر زمان رسیدن به فریم اول را تا 300 میلی ثانیه در یک دستگاه ارزان قیمت کاهش داد.

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

پیش از این، تنظیمات مدیریت فونت پیش‌فرض یک تاخیر مصنوعی را هنگام تنظیم اولین Dart Isolate ایجاد می‌کرد. به تعویق انداختن تنظیمات مدیریت فونت پیش‌فرض برای اجرای همزمان با تنظیمات Dart Isolate، تأخیر راه‌اندازی را بهبود بخشید و تأثیرات بهینه‌سازی‌های قبلی را بسیار بیشتر نمایان کرد، زیرا این گلوگاه اصلی بود.

حافظه


توسعه‌دهندگان فلاتر که دستگاه‌های دارای حافظه محدود را هدف قرار می‌دهند، در ردیابی عملکرد با مشکل مواجه بودند، زیرا فلاتر با اشتیاق مشغول بارگیری Dart VM “خدمات انزوا” بود، که کد AOT آن با برنامه گنجانده شده بود، به طوری که فلاتر هر دو را به طور همزمان در حافظه می خواند. برای اندروید در نسخه 2.8، سرویس ایزوله Dart VM به بسته خاص خود تقسیم شد که می‌توان آن را جداگانه بارگذاری کرد، که منجر به صرفه‌جویی در حافظه تا 40 مگابایت تا زمانی که به سرویس ایزوله نیاز باشد، می‌شود.

ردپای حافظه توسط Dart VM که به سیستم عامل اطلاع می دهد که صفحات موجود در حافظه مورد استفاده توسط برنامه AOT توسط فایلی پشتیبانی می شوند که احتمالاً نیازی به خواندن مجدد ندارند، تا 10٪ کاهش یافته است. بنابراین، صفحاتی که دارای یک کپی از داده‌های پشتیبان‌شده فایل بودند، قابل بازیابی و استفاده‌های دیگر هستند.

پروفایل کردن


گاهی اوقات توسعه دهندگان می خواهند داده های ردیابی عملکرد فلاتر را در کنار رویدادهای ردیابی بومی اندروید ببینند. همچنین، آنها اغلب مایلند رویدادهای ردیابی را حتی در ساخت‌های حالت انتشار ببینند تا مشکلات عملکرد را در برنامه‌های کاربردی خود بهتر درک کنند. برای این منظور، نسخه پایدار 2.8 اکنون رویدادهای ردیابی را به ضبط کننده systrace Android ارسال می کند، در صورتی که در هنگام راه اندازی برنامه فعال باشد، و این رویدادها حتی زمانی که برنامه فلاتر در حالت راه اندازی ساخته شده است، ارسال می شود.

systrace Android
رویدادهای ردیابی Flap اکنون (در زیر) در ابزارهای ضبط سیستم Android نمایش داده می شوند

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

Flutter DevTools


برای اشکال‌زدایی مشکلات عملکرد، این نسخه از DevTools یک ویژگی جدید “Trace Enhancement” اضافه می‌کند تا به شما در تشخیص خرابی رابط کاربری ( ui ) از عملیات‌های پرهزینه ساخت، طرح‌بندی و رنگ‌آمیزی کمک کند.

Flutter DevTools

هنگامی که هر یک از این ویژگی‌های ردیابی فعال می‌شود، جدول زمانی شامل رویدادهای جدید برای ویجت‌های ایجاد شده، رندر کردن اشیاء چیدمان‌شده و رندر اشیاء نقاشی شده، در صورت لزوم می‌شود.

dev tools

علاوه بر این، این نسخه از DevTools پشتیبانی جدیدی برای پروفایل عملکرد راه اندازی برنامه شما اضافه می کند. این نمایه شامل نمونه‌های CPU از زمان اولیه سازی Dart VM تا زمانی که اولین فریم فلاتر ارائه شده است. پس از اینکه دکمه «راه‌اندازی برنامه نمایه» را فشار دادید و نمایه راه‌اندازی برنامه بارگیری شد، خواهید دید که تگ کاربری «AppStartUp» برای نمایه انتخاب شده است.

همچنین می‌توانید نمایه راه‌اندازی برنامه را با انتخاب این فیلتر برچسب کاربر، در صورت وجود، در فهرست برچسب‌های کاربر در دسترس بارگیری کنید. انتخاب این برچسب داده های نمایه شما را برای راه اندازی برنامه شما نشان می دهد.

AppStartUp

نماهای پلت فرم وب Web platform views


اندروید و iOS تنها پلتفرم هایی نیستند که عملکردشان بهبود یافته است. این نسخه همچنین عملکرد نماهای پلتفرم را برای فلاتر وب بهبود می بخشد. اگر با نماهای پلتفرم آشنا نیستید، فلاتر به شما اجازه می‌دهد اجزای رابط کاربری بومی را از پلتفرم زیرین در برنامه خود میزبانی کنید. فلاتر وب این را با ویجت HtmlElementView پیاده سازی می کند، که به شما امکان می دهد عناصر HTML را در برنامه وب فلاتر خود میزبانی کنید.

اگر از نسخه‌های وب افزونه google_maps_flutter یا پلاگین video_player استفاده می‌کنید، یا از توصیه‌های تیم فلاتر درباره نحوه بهینه‌سازی تصاویر نمایش داده شده در وب پیروی می‌کنید، پس ازplatform views استفاده می‌کنید.

در نسخه‌های قبلی فلاتر، تعبیه یک نمای پلتفرم بلافاصله یک بوم جدید ایجاد کرد و هر نمای پلت فرم اضافی یک بوم دیگر را اضافه کرد. ایجاد بوم های اضافی گران است، زیرا هر کدام به اندازه کل پنجره است. این نسخه از بوم‌های ایجاد شده برای نماهای پلت‌فرم قبلی مجدداً استفاده می‌کند، بنابراین، به‌جای متحمل شدن هزینه 60 برابر در ثانیه، یک بار در طول عمر برنامه هزینه را متحمل می‌شوید. این بدان معناست که می‌توانید چندین نمونه HtmlElementView در برنامه‌های وب خود بدون کاهش عملکرد داشته باشید، در حالی که هنگام استفاده از نماهای پلتفرم، جابجایی اسکرول را کاهش دهید.

زیست بوم Ecosystem


Flutter فقط چارچوب، موتور و ابزار نیست – بیش از 20000 بسته و افزونه سازگار با Flutter در pub.dev وجود دارد که هر روز تعداد بیشتری اضافه می شود. مقدار قابل توجهی از آنچه توسعه دهندگان ۲.۸ Flutter روزانه با آن تعامل دارند بخشی از اکوسیستم بزرگتر است، بنابراین بیایید نگاهی به آنچه در اکوسیستم Flutter از نسخه قبلی در حال رخ دادن بوده است بیندازیم.


تبلیغات در فلاتر GA of Flutter Ads


اولین و مهم‌تر از همه، انتشار Google Mobile SDK برای Flutter در ماه نوامبر است.

تبلیغات در فلاتر

این نسخه از 5 فرمت تبلیغاتی پشتیبانی می‌کند، پشتیبانی AdMob و Ad Manager را ادغام می‌کند و شامل یک نسخه بتا از یک ویژگی میانجی جدید است که به شما در بهینه‌سازی عملکرد تبلیغات کمک می‌کند. برای اطلاعات بیشتر در مورد ادغام Google Ads در برنامه فلاتر و همچنین سایر گزینه های کسب درآمد، صفحه جدید کسب درآمد را در flutter.dev بررسی کنید.

WebView 3.0


نسخه جدید دیگری که این بار با فلاتر عرضه می شود، نسخه 3.0 پلاگین webview_flutter است. ما به دلیل تعداد ویژگی‌های جدید و همچنین به دلیل تغییر بالقوه در نحوه عملکرد نماهای وب در آندروید، شماره نسخه را افزایش داده‌ایم. در نسخه‌های قبلی webview_flutter، حالت ترکیب ترکیبی در دسترس بوده است، اما پیش‌فرض نیست. ترکیب ترکیبی تعدادی از مشکلاتی را که حالت نمایش مجازی پیش فرض قبلی دارد برطرف می کند.

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

  • پشتیبانی از POST و همچنین GET برای پر کردن محتوا
  • بارگیری HTML از فایل ها و رشته ها
  • پشتیبانی از پس زمینه شفاف
  • نوشتن کوکی ها قبل از بارگیری محتوا

علاوه بر این، در نسخه 3.0، webview_flutter پشتیبانی اولیه از یک پلتفرم جدید: وب را فراهم می کند. ما از بسیاری از شما خواسته‌ایم که قابلیت میزبانی وب‌نما را در یک برنامه وب فلاتر داشته باشید، که به شما امکان می‌دهد یک برنامه برای موبایل یا وب از یک پایه کد واحد بسازید. میزبانی وب ویو در یک برنامه وب فلاتر چگونه است؟

خوب، از منظر کدنویسی، دقیقاً یکسان به نظر می رسد:

هنگام اجرا در وب، همانطور که انتظار دارید کار می کند:

WebView 3.0

توجه داشته باشید که اجرای فعلی webview_flutter برای وب دارای تعدادی محدودیت است که بر اساس این واقعیت است که با استفاده از ای فریم ساخته شده است، که فقط از بارگیری URL ساده پشتیبانی می کند و توانایی کنترل یا تعامل با محتوای بارگذاری شده را ندارد (برای اطلاعات بیشتر، بررسی کنید webview_flutter_web README). با این حال، ما webview_flutter_web را به دلیل تقاضای رایج به عنوان یک افزونه تایید نشده در دسترس قرار می دهیم. اگر می خواهید آن را امتحان کنید، خط زیر را به pubspec.yaml خود اضافه کنید:

اگر بازخوردی در مورد webview_flutter نسخه 3.0 دارید، چه در وب و چه در حالت خاموش، لطفاً آنها را در مخزن فلاتر به عنوان مشکل مشاهده وب وارد کنید. همچنین، اگر قبلاً از webview استفاده نکرده‌اید یا می‌خواهید یک بازنگری داشته باشید، به کد لبه جدید webview مراجعه کنید، که شما را گام به گام در فرآیند میزبانی محتوای وب در برنامه فلاتر خود راهنمایی می‌کند.

فلاتر موارد دلخواه


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

  • سه بسته روتر سفارشی برای Router API جدید: beamer، routemaster و go_router
  • drift، تغییر نام یک کتابخانه پایدار واکنشی از قبل توانمند و محبوب برای فلاتر و دارت، ساخته شده در بالای sqlite
  • freezed، یک “وصله زبان” دارت برای ارائه یک نحو ساده برای تعریف مدل ها، شبیه سازی اشیاء، تطبیق الگو و موارد دیگر
  • dart_code_metrics
  • و چندین بسته رابط کاربری گرافیکی عالی: flex_color_scheme، flutter_svg، feedback، toggle_switch و auto_size_text
فلاتر موارد دلخواه
برنامه Flexfold با flex_color_scheme ساخته شده است

به نویسندگان بسته تبریک می گویم و از شما برای حمایت از انجمن فلاتر با تلاش سخت خود سپاسگزاریم. اگر علاقه مند به نامزدی بسته فلاتر مورد علاقه خود برای جایزه فلاتر مورد علاقه هستید، دستورالعمل ها و دستورالعمل های صفحه برنامه Flutter Favorite را دنبال کنید.

بسته های پلتفرم خاص Platform-specific Packages


اگر نویسنده بسته هستید، یکی از تصمیماتی که باید بگیرید این است که از کدام پلتفرم ها پشتیبانی می کنید. اگر در حال ساختن یک افزونه با کد بومی مخصوص پلتفرم هستید، می توانید این کار را با استفاده از ویژگی pluginClass در pubspec.yaml پروژه خود انجام دهید، که نشان دهنده کلاس بومی است که عملکرد را ارائه می دهد:

با این حال، همانطور که Dart FFI بالغ‌تر می‌شود، می‌توان مانند بسته path_provider_windows، عملکردهای مخصوص پلتفرم را در دارت 100% پیاده‌سازی کرد. وقتی هیچ کلاس بومی برای استفاده ندارید اما همچنان می‌خواهید بسته خود را به عنوان پشتیبانی از پلتفرم‌های خاصی مشخص کنید، به جای آن از ویژگی dartPluginClass استفاده کنید:

این تنظیم در جای خود، بسته خود را تنها به عنوان پشتیبانی از پلتفرم‌های خاصی مشخص می‌کند، حتی اگر کد بومی ندارید. شما همچنین باید کلاس پلاگین Dart را ارائه دهید. در اسناد پیاده سازی پلت فرم فقط دارت در flutter.dev بیشتر بیاموزید.

فایربیس در فلاتر Firebase


بخش بزرگ دیگری از اکوسیستم Flutter FlutterFire است که توسط دو سوم برنامه های فلاتر استفاده می شود. این نسخه مجموعه ای از ویژگی های جدید را اضافه می کند که ساخت برنامه ها را با استفاده از فلاتر و Firebase آسان تر می کند:

  • همه پلاگین های FlutterFire در حال فارغ التحصیلی از بتا به پایدار هستند
  • پشتیبانی جدید در DartPad برای چندین سرویس Firebase
  • کتابخانه‌های جدید برای ساخت آسان‌تر UI برای احراز هویت و جستارهای Firestore زنده
  • New Firestore Object/Document Mapping for Flutter, available in Alpha

کیفیت تولید Production Quality

پلاگین های FlutterFire (تقریباً) همه از نسخه بتا به کیفیت پایدار منتقل شده اند.

Production Quality

افزونه‌هایی که برای اندروید، iOS و وب به حالت پایدار می‌روند عبارتند از Analytics، پیوندهای پویا، پیام‌رسانی درون‌برنامه، نظارت بر عملکرد، پایگاه داده بیدرنگ، پیکربندی از راه دور و، بچه جدید در بلوک، نصب‌ها. افزونه App Check و پشتیبانی از پلتفرم macOS به دلیل فاز خود کتابخانه های Firebase که در مرحله بتا نیز هستند، هنوز در مرحله بتا هستند.

اگر نگران این هستید که آیا پایگاه داده Realtime، Analytics، یا Remote Config را انتخاب کنید زیرا کتابخانه‌های FlutterFire برای پرایم‌تایم آماده نیستند، دیگر نگران نباشید. اکنون این افزونه‌ها کاملاً پشتیبانی می‌شوند و آماده استفاده در تولید هستند.

راه اندازی Dart-only Firebase

از آنجایی که بسته‌ها به سمت کیفیت تولید حرکت کرده‌اند، ما توانایی اولیه‌سازی Firebase را در هر پلتفرم پشتیبانی شده از دارت اضافه کرده‌ایم:

این کد یک برنامه Firebase را با استفاده از گزینه‌های مناسب برای هر پلتفرم پشتیبانی شده، همانطور که در فایل firebase_options.dart تعریف شده است، مقداردهی اولیه می‌کند، که شامل ساختارهای داده برای هر پلتفرم است که به شکل زیر است:

برای جمع‌آوری داده‌ها برای ساختار داده گزینه اولیه هر پلتفرم، ابزار جدید flutterfire CLI را بررسی کنید.

Dart-only Firebase Initialization

این ابزار داده‌های موجود در زیرپوشه‌های مخصوص پلتفرم شما را برای یافتن شناسه بسته منحصربفرد جستجو می‌کند و سپس از آن برای جستجوی جزئیات خاص پروژه Firebase برای برنامه‌های خاص پلتفرم شما، حتی ایجاد یک پروژه Firebase جدید و/یا استفاده می‌کند. اگر برنامه‌های جدید مخصوص پلتفرم وجود نداشته باشد.

معنی این کار برای شما این است که دیگر فایل json را دانلود و به پروژه اندروید خود اضافه نکنید، فایل plist را به پروژه های iOS و macOS خود دانلود و اضافه کنید، یا کد را در index.html پروژه وب خود بچسبانید – مهم نیست که کدام پلتفرم Firebase را پشتیبانی می کند. با هدف قرار دادن، این تک تک کد دارت، Firebase را برای برنامه شما مقداردهی اولیه می کند.

توجه داشته باشید که این ممکن است تنها مقداردهی اولیه ای نباشد که باید انجام دهید تا برنامه FlutterFire شما کار کند. برای مثال، ممکن است بخواهید ایجاد نمادهای Crashlytics خود را در بیلد اندروید یا iOS خود ادغام کنید، اما باید آن را در عرض چند دقیقه با هر پروژه Firebase جدید راه اندازی و اجرا کنید.

با دارت پد از Firebase استفاده کنید

با این مقداردهی اولیه FlutterFire فقط دارت، اکنون می توانید Firebase را در داخل DartPad استفاده کنید.

Use Firebase with DartPad

این مثال یک برنامه چت کوچک با استفاده از Flutter، Firebase و DartPad را نشان می دهد، که همه آنها را می توانید در حال حاضر بدون نصب استفاده کنید. امروزه پشتیبانی DartPad Firebase شامل API های اصلی، احراز هویت و Firestore است. انتظار می رود سرویس های Firebase بیشتری در DartPad در طول زمان ظاهر شوند.

مورد دیگری که پشتیبانی از FlutterFire در دارت‌پد امکان‌پذیر می‌کند، امکان استفاده از نمونه‌های تعبیه‌شده DartPad درست در اسناد است.

Firestore

در این مثال، اسناد Cloud Firestore را با کد برنامه مثالی مشاهده می‌کنید که می‌توانید بدون نیاز به نصب چیزی، ایجاد یک پروژه آزمایشی، یا حتی کپی/پیست کردن کد، مستقیماً در مرورگر خود اجرا و ویرایش کنید. همه چیز برای استفاده فوری شما آماده است.

رابط کاربری Firebase


هنگام ادغام Firebase در یک برنامه، اکثر برنامه ها نوعی جریان احراز هویت دارند. این شامل اجازه دادن به کاربران برای ورود با ایمیل و رمز عبور، یا با ارائه‌دهنده تأیید اعتبار اجتماعی مانند آنچه که Google ارائه می‌کند، می‌شود. احراز هویت Firebase همچنین امکان ایجاد حساب‌های جدید، اعتبارسنجی آدرس‌های ایمیل، بازنشانی گذرواژه‌ها، و حتی ممکن است شامل تأیید دو مرحله‌ای با پیامک، ورود به سیستم با یک شماره تلفن یا حتی ادغام چندین حساب کاربری در یک حساب واحد باشد.

Firebase Authentication از همه این قابلیت‌ها پشتیبانی می‌کند، اما به عنوان یک توسعه‌دهنده Flutter، شما مسئول پیاده‌سازی UI برای همه آن هستید. تا امروز.

امروز، ما خوشحالیم که اعلام کنیم بسته flutterfire_ui می تواند یک تجربه احراز هویت اولیه با مقدار کمی کد ایجاد کند. به عنوان مثال، فرض کنید که در پروژه Firebase خود تنظیمات ایمیل و احراز هویت Google را دارید:

با این پیکربندی، می توانید یک تجربه احراز هویت را به صورت زیر راه اندازی کنید:

این Firebase را مقداردهی اولیه می کند و با توجه به اینکه کاربر قبلاً وارد نشده است، صفحه ورود به سیستم را نشان می دهد. ویجت SigninScreen با ارائه دهندگان احراز هویت ایمیل و گوگل پیکربندی شده است. کد همچنین با استفاده از بسته firebase_auth به وضعیت احراز هویت کاربر گوش می دهد، بنابراین پس از ورود کاربر می توانید بقیه برنامه را نمایش دهید. با استفاده از این کد، یک لاگین فعال برای همه پلتفرم های پشتیبانی شده توسط Firebase دریافت می کنید: آندروید ، iOS، وب و macOS.

با کمی پیکربندی بیشتر، می‌توانید به راحتی یک تصویر و متن سفارشی اضافه کنید (جزئیات در اسناد موجود است)، که یک تجربه ورود با امکانات کامل به شما می‌دهد:

flutterfire_ui

این اسکرین شات نسخه موبایل را نشان می‌دهد، اما از آنجایی که صفحه‌های flutterfire_ui پاسخگو هستند، آنچه را که در یک دستگاه دسک‌تاپ دریافت می‌کنید به شرح زیر است:

اگر کاربر قبلاً یک ایمیل / رمز عبور داشته باشد، می تواند وارد شود و کار را انجام دهد. اگر از Google auth استفاده می‌کنند، جریان عادی تأیید اعتبار Google به آنها نشان داده می‌شود، خواه در تلفن همراه، وب یا رایانه رومیزی باشند. اگر قبلاً حساب کاربری ندارند، می توانند دکمه روی صفحه ورود را فشار داده و به صفحه ثبت نام بروند.

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

پشتیبانی از احراز هویت در flutterfire_ui از تعدادی سناریو و طرح‌های ناوبری، همراه با گزینه‌های سفارشی‌سازی و محلی‌سازی پشتیبانی می‌کند. اسناد و نمونه های دقیق را در اسناد firebase.flutter.dev بررسی کنید.

علاوه بر این، احراز هویت تنها ویژگی مرتبط با Firebase UI نیست که flutterfire_ui از آن پشتیبانی می‌کند. برای نشان دادن لیست اسکرول زنده و بی‌نهایت به کاربران از یک جستار Firebase، این نسخه شامل FirestoreListView است که می‌توانید آن را با یک جستجوی زنده به صورت زیر در برنامه خود قرار دهید:

و این چیزی است که در عمل به نظر می رسد:

FirestoreListView

یا اگر می‌خواهید به کاربران خود توانایی ایجاد، خواندن، به‌روزرسانی و حذف ورودی‌های یک جدول را بدهید، شروع آن را در FirestoreDataTable دارید:

که به این صورت عمل می کند:

برای جزئیات در مورد احراز هویت، نمایش لیست و جداول داده، اسناد flutterfire_ui را بررسی کنید. از آنجایی که این نسخه پیش نمایش است، ویژگی های اضافی برنامه ریزی شده است. اگر سؤال یا درخواست ویژگی دارید، لطفاً به مخزن در گیت هاب بروید تا مشکلات را ثبت کنید یا در بخش بحث سؤال بپرسید.

Firestore Object / Document Mapping


و در آخر، یک ویژگی جدید برای ادغام بین Firebase و فلاتر که باید از آن آگاه باشید: انتشار آلفای Firestore Object / Document Mapper. هدف Firestore ODM کمک به توسعه دهندگان Flutter است که با ساده کردن استفاده از Firestore از طریق اشیا و روش های آشنا و ایمن از لحاظ نوع ایمن، سازنده تر باشند. با استفاده از تولید کد، Firestore ODM سینتکس تعامل با اسناد و مجموعه‌ها را بهبود می‌بخشد و به شما امکان می‌دهد داده‌های خود را به روشی ایمن مدل‌سازی کنید:

با وجود این انواع، اکنون می‌توانید پرس‌وجوهای نوع ایمن را اجرا کنید:

ODM همچنین از تعریف مجموعه‌های فرعی با تایپ قوی پشتیبانی می‌کند و گزینه‌های داخلی را برای بهینه‌سازی بازسازی‌های ویجت با ویژگی انتخابی خود ارائه می‌دهد. شما می توانید در مورد همه اینها و بیشتر در اسناد Firestore ODM مطالعه کنید. از آنجایی که این نسخه آلفا است، لطفاً بازخورد خود را ارائه دهید. برای ارائه بازخورد و پرسیدن سوال، به تاپیک Firestore ODM بحث FlutterFire بپیوندید.

دسکتاپ

انتشار فلاتر 2.8 شامل گام بزرگ دیگری در مسیر انتشار پایدار ویندوز، macOS و لینوکس است. نوار کیفیت بالا است، از جمله پشتیبانی بین‌المللی و بومی‌سازی مانند پشتیبانی IME چینی اخیراً، پشتیبانی IME کره‌ای و پشتیبانی Kanji IME. یا، مانند ادغام فشرده ای که در پشتیبانی دسترسی ویندوز ساخته شده است.

برای Flutter کافی نیست که روی دسکتاپ روی کانال پایدار اجرا شود (که قبلاً در نسخه بتا پشت پرچم انجام می‌شود)، باید برای زبان‌ها و فرهنگ‌های سراسر جهان و برای افراد با توانایی‌های مختلف به خوبی اجرا شود. هنوز به جایی نرسیده که می‌خواهیم باشیم، اما در حال رسیدن است!

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

کار اولیه در Flutter 2.5 و Flutter 2.8 با نزدیک شدن به کیفیت پایدار، رفع مشکلات و رگرسیون ها را اضافه می کند. این علاوه بر کار مداوم برای مهندسی مجدد نحوه مدیریت ورودی صفحه‌کلید خاص دستگاه و اصلاح روشی است که Flutter ویرایش متن را انجام می‌دهد، که همگی برای برنامه‌های دسک‌تاپ با ورودی‌های صفحه کلید ضروری هستند.

علاوه بر این، ما به گسترش پشتیبانی فلاتر 2.8 برای تراکم بصری و هم‌ترازی برای دیالوگ‌ها ادامه می‌دهیم تا هر دوی این‌ها رابط کاربری مناسب‌تر برای دسک‌تاپ را فعال کنیم.

dialog

و در نهایت، تیم فلاتر تنها کسی نیست که روی دسکتاپ فلاتر کار می کند. به عنوان یک مثال، تیم دسکتاپ در Canonical در حال کار با Invertase بر روی پیاده‌سازی لینوکس و ویندوز از محبوب‌ترین پلاگین‌های Firebase برای فلاتر هستند.

flutterfiredesktop

دارت پد
انتشار فلاتر بدون نگاهی به بهبودهای ابزار کامل نیست. این پست بر روی پیشرفت های دارت پد تمرکز دارد که بزرگترین آنها پشتیبانی از تعداد بیشتری از بسته ها است. در واقع 23 بسته برای واردات موجود است. علاوه بر چندین سرویس Firebase، این لیست شامل بسته‌های محبوبی مانند block، characters، collection، google_fonts و flutter_riverpod می‌شود.

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

دارت پد

یک ویژگی جدید DartPad نیز وجود دارد که بسیار مفید است. پیش از این، DartPad همیشه آخرین نسخه پایدار را اجرا می کرد. با استفاده از این نسخه، می‌توانید با استفاده از منوی کانال جدید در نوار وضعیت، آخرین نسخه‌های کانال بتا و همچنین نسخه پایدار قبلی (به نام «کانال قدیمی») را انتخاب کنید.

این می تواند بسیار مفید باشد، برای مثال، اگر در حال نوشتن یک پست وبلاگ هستید که در آن آخرین استیبل به اندازه کافی جدید نباشد …

در حال حذف کانال توسعه دهنده Removing the dev channel


یک «کانال» فلاتر، سرعت تغییر چارچوب و موتور فلاتر 2.8 زیربنایی در ماشین توسعه شما را کنترل می‌کند، با پایداری که کمترین ریزش را نشان می‌دهد و استاد بیش‌ترین را نشان می‌دهد. به دلیل محدودیت منابع، اخیراً به روز رسانی کانال توسعه دهنده را متوقف کردیم. در حالی که سؤالاتی در این مورد داشتیم، متوجه شدیم که کمتر از 3 درصد از توسعه دهندگان فلاتر 2.8 از کانال توسعه دهنده استفاده می کنند. بنابراین ما تصمیم گرفته‌ایم که فرآیند قطع رسمی کانال توسعه‌دهنده را آغاز کنیم.

در حالی که تعداد کمی از توسعه‌دهندگان از کانال توسعه‌دهنده استفاده می‌کنند، مهندسان فلاتر زمان و تلاش زیادی برای حفظ آن می‌طلبند. اگر تمام وقت خود را در کانال پایدار صرف کنید (همانطور که بیش از 90 درصد توسعه دهندگان فلاتر انجام می دهند)، آن را از دست نخواهید داد. با رها کردن آن، یک تصمیم کمتر برای گرفتن دارید و تیم فلاتر می‌تواند وقت و انرژی خود را صرف کارهای دیگر کند.

شما می توانید با استفاده از دستور flutter channel تصمیم بگیرید که کدام کانال را می خواهید. در اینجا نحوه تفکر تیم فلاتر 2.8 در مورد هر کانال آمده است:

  • کانال پایدار نشان دهنده بالاترین کیفیت ساخت های ما است. آنها به صورت سه ماهه (تقریبا) منتشر می شوند، و برای مسائل مهم در این بین رفع فوری می شوند. این کانال “آهسته” است: سرویس ایمن، بالغ، طولانی مدت.
  • کانال بتا یک جایگزین سریع برای پایدار برای کسانی که با آهنگ سریعتر راحت هستند ارائه می دهد.
  • کانال مستر کانال توسعه فعال ماست. ما هیچ پشتیبانی در این کانال ارائه نمی کنیم، اما مجموعه جامعی از تست های واحد را بر روی آن اجرا می کنیم. این کانال مناسب برای مشارکت‌کنندگان یا کاربران پیشرفته‌ای است که با ساخت‌های ناپایدار راحت هستند. در این کانال، ما سریع اجرا می‌کنیم و چیزها را خراب می‌کنیم (و سپس خیلی سریع آنها را هم درست می‌کنیم).

همانطور که در ماه‌های آینده کانال توسعه‌دهنده را از کار می‌اندازیم، کانال‌های بتا یا مستر را بسته به میزان تحمل شما برای ریزش و نیازتان به جدیدترین و بهترین‌ها در نظر بگیرید.

شکستن تغییرات


مانند همیشه، ما در تلاش هستیم تا تعداد تغییرات شکست در هر نسخه را کاهش دهیم. در این نسخه، فلاتر 2.8 به غیر از API های منسوخ شده ای که منقضی شده اند و طبق خط مشی تغییر شکستن ما حذف شده اند، بدون تغییر است.

  • حذف اعتبار سنجی خودکار
  • حذف FloatingHeaderSnap Configuration.vsync
  • حذف AndroidViewController.id
  • حذف BottomNavigationBarItem.title
  • کلاس‌های قالب‌بندی ورودی متن منسوخ را حذف کنید

اگر هنوز از این API ها استفاده می کنید و می خواهید جزئیاتی در مورد نحوه به روز رسانی کد خود داشته باشید، می توانید راهنمای مهاجرت را در flutter.dev بخوانید. مثل همیشه، از جامعه برای مشارکت در آزمایش هایی که به ما کمک می کند تا این تغییرات شکسته را شناسایی کنیم، بسیار سپاسگزاریم.

خلاصه


همانطور که سال 2021 را به پایان می رسانیم و مشتاقانه منتظر سال 2022 هستیم، تیم فلاتر 2.8 مایل است از کار و حمایت کل جامعه فلاتر قدردانی کند. در حالی که این درست است که ما در حال ساخت فلاتر 2.8 برای تعداد رو به رشد توسعه دهندگان در جهان هستیم، همچنین به معنای واقعی کلمه درست است که ما نمی‌توانیم آن را بدون شما بسازیم. انجمن فلاتر شبیه هیچ چیز دیگری نیست و ما از همه کارهایی که انجام می دهید سپاسگزاریم. فصل تعطیلات خوبی داشته باشید و در سال جدید شما را خواهیم دید!

منبع :‌ medium

علی داودی وب‌سایت

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

×