چرا من عاشق Flutter شدم ؟

پنچ یا شش ماه قبل بود که با این فریم ورک توی وبگردی هایی که داشتم اشنا شدم عنوان این بود با زبان dart در flutter اپ cross platform طراحی کنید تعجب کردم flutter ? dart ? اینا دیگه چی هستن چرا تا به الان اسمشونو نشنیده بودم ؟

چون منبع موثق بود تصمیم گرفتم یه امتحانی بکنم توی نگاه اول خیلی گیج کننده بود از جمله زمانیکه شما توی محیط native اندروید طولانی مدت کار کرده باشی و بهش عادت کرده باشی , ولی بعد از اینکه یه مدت با هاش کار کردم خیلی برام جذاب و رضایت بخش بود !

توی این مطلب سعی میکنم چندین نکته ای که برام جذاب بود و باعث شده به اینده این زبان امیدوار باشم رو از منظر یک برنامه نویس اندروید که چندین سال تو محیط native کار کرده و روش غیرتی هست ولی با این حال عاشق flutter شده رو براتون بنویسم.

1- اگر شما اندروید native کار کرده باشی میدونی چقدر ساختن یک UI زیبا در اندروید سخت , پر دردسر و پر چالش هست باید layout, drawable , style , costume view, .... بنویسی تا اینکه فقط یک صحفه , یک صحفه نسبتا زیبا داشته باشی و همین مسئله تبدیل به یکی از نقاط ضعف در اکثر اپ های اندروید شده ولی وقتی که با flutter شروع به کار میکنی تازه میفهمی طراحی UI یکی از لذت بخش ترین قسمت های نوشتن یک اپ هست و سخت ترین و پیچیده ترین طرح ها برات اسون میشه

طراحی UI توی flutter به وسیله تعداد زیادی component که تیم flutter توسعه داده صورت میگیره یک سری component های پایه هستن که اینجا حرف اصلی رو میزنن و هر شکل و شمایلی رو میشه با استفاده از این کامپوننت ها ساخت و به عنوان یک widget ازش استفاده کرد اهان صحبت از widget شد توی Flutter کلمه View معنی نداره و همه چی یک widget هست حتی به عنوان مثال Padding خودش یک Widget پایه هست و نحوه چینش این widget ها شبیه چینش درون XML لایه های اندروید هست و با قدرت و ابزار بیشتر به عنوان مثال کد زیر رو ببینید

? از اینجا تصویر رو ببینید

2- ابزار Hot Reload یه زمانی بود توی اندروید ما یه چیز ساده ای رو تغیر میدادیم و میخواستیم اپمون رو روی دستگاه لانچ کنیم و تغیرمون رو ببینیم بیشتر از 10-15 دقیقه زمان میبرد ولی با این امکان این عمل کمتر از 1-2 ثانیه زمان میبره به GIF پایین توجه کنید

? از اینجا تصویر رو ببینید

3- یکی از جذابیت های دیگهflutter برای اندروید کار ها استفاده از زبان Dart هست درباره dart هم بگم که یک زبان static هست و توسط گوگل توسعه پیدا کرده برای جایگزینی Java Script الان طرفدارای js حمله میکنند میگن JS رو مگه میشه جایگزین کرد؟! که باید خدمتشون عرض کنم من هم حرفشون رو قبول دارم ولی این کاری هست که گوگل ادعا کرده و میخواد در یک سطحی حداقل در بعضی از پلتفرم های خودش این کار رو انجام بده و از جمله اینکه در سمت سرور - کلاینت چندین پروژه بزرگ گوگل بر روی همین زبان توسعه پیدا کرده البته اونطور که من میدونم در نهایت dart تبدیل به js میشد و چیزی که میره سمت کلاینت یک سری کد JS هست البته نماند که برای همه این ها برنامه ریخته و باید دید که قراره تو اینده چی کار بکنه خوب از بحث اصلی دور شدیم میخواستم بگم که یکی از خوبی های این زبان این هست که خیلی به زبان Java نزدیک هستش و بسیار از نظر Syntax به ساختار جاوا شباهت داره و C base هست به طوری که در جایی میخوندم گفته شده بود که یک سری از کارمندای java کار گوگل در عرض یکی دو هفته در حد خیلی مطلوبی به این زبان مسلط شدند Dart ویژگی ها و برتری های دیگه هم داره از جمله سطح بالا بودنش - نحوه کامپایل شدنش و ..... که اگر دوست داشتید توی اینترنت مطالب زیادی در این باره هست

4- توی بنچ مارک ها و سایت ها اگر جستجو کنید می بینید که dartنسبت به زبان های cross platform دیگه در اکثر الگوریتم های تست سرعت بالاتری رو کسب کرده در نتیجه اپ هایی که به این وسیله توسعه داده میشوند به طور کلیperformance بهتری دارند البته مهمترین دلیل فاحش بهتر بودن Performance در Flutterبا فریم ورک های cross platform دیگر در این هست که Flutter موتور رندر (Render engine) مخصوص به خودش رو نوشته و بر خلاف سایر cross platform ها از Bridge و OEM سیستم عامل ها یا واسط های دیگری برای نمایش المنت های UI و مدیریت ان ها استفاده نمی کنه و در حقیقت به نوعی به طور مستقیم با GPU ارتباط برقرار میکنه و تمام اشکال گرافیکی رو رسم میکنه این مسئله به غیر از افزایش performance این قابلیت رو ایجاد کرده UI شما در تمام سیستم عامل ها به یک شکل دیده بشه و توسعه UI به سیستم عامل بستگی نداشته (البته میتونید تعریف کنید که از کامپوننت های مربوط به خود OS استفاده بکند) به عنوان مثال توی Native اندروید شما برای اکثر ابزار هایی که برای طراحی material معرفی شده بخواید استفاده کنید محدودیت ساپورت از نسخه های قبلی رو دارید و در نتیجه اپ شما در سیستم عامل ها با نسخه های متفاوت به شکل متفاوتی دیده میشه ولی در flutter به این شکل نیست

5- مهمترین مطلب دیگه اینکه flutter توسط یک تیم خیلی حرفه ای و زیر نظر Google که صاحب سیستم عامل اندروید هست در حال توسعه است و از طرف دیگرflutter به صورت open source در حال توسعه است که باعث میشه ابزار های خیلی زیادی براش نوشته بشه و توسعه خیلی خوبی داشته باشه یکی از مهمترین اخبار های release هفته گذشته این بود که قابلیت استفاده از کد های flutter بر روی وب و دسکتاپ در حال ازمایش هست باید دید که در اینده چه اخبار دیگه ای از این فریم ورک به گوش خواهد رسید

اگر عمری و حوصله ای باقی بود ان شالله در یک یا چندین مطلب basic های این فریم ورک رو میخوام اموزش بدم

اگر شما هم تجربه ای مربوط به این فریم ورک داشتید یا نظری دارید که میتونه به بهتر شدن این مطلب کمک بکنه خوشحال میشم در موردش بشنوم