Flutter – یک سال و نیم با فلاتر

اول از همه، پیشنهاد میکنم مطلب یک سال با فلاتر رو بخونید.

 

این مطلب رو باید زودتر مینوشتم، از ژانویه تا الان که نوامبر باشه، تقریبا یک سال میگذره که با یک سال قبلش میشه دو سال تجربه کار با فلاتر.

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

 

باگ های عجیب و همکاری در کشف و رفع باگ ها

وقتی دستور flutter channels رو در ترمینال بزنیم، میبینیم که موارد زیر لیست میشه:

beta
dev
master
stable

من چون علاقه داشتم همیشه جدیدترین امکانات فلاتر رو ببینم و استفاده کنم، از کانال master برای توسعه استفاده میکردم.

پایدارترین کانال، کانال stable هست که سعی میشه همه چیز بدون اشکال باشه و به خوبی کار کنه.

کانال master داغ ترین و جدیدترین کدها روش قرار میگیره، که احتمالش زیاده این کدها در آینده تغییر کنند یا برداشته بشند.

 

یک روز کارفرمای اپلیکیشن اُپتیچی، خیلی ناراحت و ناراضی با من تماس تلفنی داشت، گفت اپلیکیشن مدام میپره بیرون، فلان قسمتاش مشکل داره و …!

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

بعد نسخه های قبل رو دیدم که مشکل ندارن، کدهای من هم که خیلی تغییری نکرده بودن، پس مشکل چی بود؟

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

نسخه پایدار رو برای کارفرما فرستادم و خوشبختانه گفت که مشکل رفع شده.

حدودا 1 ماه با تیم پشتیبانی در تعامل بودم تا بتونیم ریشه اون باگ رو پیدا کنیم، تا که بالاخره پیدا شد و رفعش کردن.

با خودم گفتم چه خوب که از کانال master استفاده میکنم، اینجوری من از اولین نفرها هستم که میفهمم فلاتر عیبی پیدا کرده و گزارش میکنم تا این ایراد به کانال stable راه پیدا نکنه!

خلاصه این شد که منبعد دارم با یک هدف کاملتر (نه فقط لذت بردن از قابلیت های جدید، بلکه کمک به یافتن عیوب) از کانال master استفاده میکنم، به جز اون مشکل فک میکنم که 2-3 تا عیب بزرگ دیگه هم گزارش کرده باشم!

روند آموزشی بسیار سریع

اگه برنامه نویس خوبی باشین، میتونین فلاتر رو در 1 هفته یاد بگیرین و در 3 هفته بهش تسلط پیدا کنین!

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

قدرت، سرعت، کیفیت، هر آنچه که برای تولید یک اپ موبایل نیاز هست، همه در کنار سادگی در کد نویسی قرار بگیره نتیجه چیه؟!

فقط کافیه که منابع مناسب برای یادگیری رو پیدا کنین.

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

برای مثال، من میخوام یک ستون یا یک ردیف رو توی اپ نمایش بدم، پس جستجو میکنم flutter column برای ستون و flutter row برای ردیف، ببینید که چقدر محتوای مفید ارائه میشه.

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

اخیرا آنقدر سریع امکانات داره به فلاتر اضافه میشه که هر هفته که سر میزنم به Changelog فلاتر، یک قابلیت جدید میبینم.

این اتفاق قبلا شاید ماهی یک بار میافتاد!

Flutter خیلی داره از قبل قدرتمندتر میشه!

پشتیبانی از معماری x86

قبل از این، فلاتر فقط برای Release Build از معماری arm32 و arm64 پشتیبانی میکرد و برای Debug Build از x86 به علاوه اون دو تا قبلی، اما برخی دستگاه ها، که خیلی انگشت شمار هستن، از معماری x86 بهره میبرن.

با پیگیری هایی که جامعه فلاتر انجام داد، بالاخره تیم فلاتر برای Release Build پشتیبانی از این معماری رو توسعه داد.

فقط نکته ای که داره اینه که این معماری فعلا در حالت JIT پشتیبانی میشه و در آینده AOT هم اضافه میشه.

فقط کوتاه بگم که سرعت AOT بالاتره و حجم کمتری داره و JIT برای دیباگ استفاده میشه.

چالش با برخی موبایل ها از سال 2013

برخی مدل موبایل های سال 2013 رام ناقصی دارن.

درایور OpenGL که روی رام هاشون نصبه از یک بهینه سازی و قابلیت مهم پشتیبانی نمیکنه.

باعث میشه که فلاتر روی اون موبایل ها اجرا نشه، من این مشکل رو گزارش کردم و چند ماه آینده مطمئنا تیم فلاتر فکری به حالش میکنه.

بیشتر این ایراد در موبایل های هوآوی و انگشت شمار سامسونگ دیده شد.

جالب اینجاست که یک گوشی سونی اریکسون سال 2011 بدون مشکل فلاتر رو اجرا میکرد…

البته شاید سال آینده اصلا این موبایل ها در جهان (به جز ایران) دیگه موجود نباشن و تیم فلاتر بیخودری وقت برای این مورد نذاره!

پلاگین نویسی نیتیو (Native) برای Android و iOS

ما در پروژه اُپتیچی شدیدا از امکانات سخت افزاری گوشی برای پردازش تصویر استفاده میکنیم، دارت/فلاتر دسترسی مستقیم به سخت افزار برای اینجور کارها نمیدن مگر اینکه کتابخانه های C/C++ استفاده کنیم.

خوب راه ساده تر برای ما این بود که با نوشتن پلاگین، از API های هر سیستم عامل بهره ببریم.

پلاگین نویسی نیتیو برای فلاتر، به همان راحتی خوردن آب بعد از غذای شوره، راحت میره پایین، اولش بد مزس، ولی آخرش خوشمزه!

فلاتر برای وب

شاید این قسمت از همه چیزایی که بالاتر گفتم برام هیجان انگیزتره!

ما برای طراحی پنل هامون از فریم ورک Angular استفاده میکنیم.

خبر بهتر از این میتونه باشه که با همون چیزی که اپلیکیشن موبایل مینویسی، منبعد بتونی پنل های مدیریتتم بنویسی؟؟

فلاتر برای وب در دست توسعس، الان بعضی ویژگی های اساسی رو پشتیبانی نمیکنه (مثل پلاگین ها) اما به زودی میشه ازش در پروژه های واقعی استفاده کرد.

 

نتیجه اخلاقی؟

با رضایت این راه رو ادامه خواهیم داد!

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

نشانی ایمیل شما منتشر نخواهد شد.