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

اصلا فلاتر چیست؟
اگر به تازگی کلمه ی فلاتر به گوشتان خورده پس در ابتدا توضیحاتی را در مورد این پلتفرم محبوب خواهم داد. Flutter کیت توسعه نرمافزار متنباز و رایگان گوگل است که برای توسعه برنامههای موبایلی چند پلتفرمی عرضه شده. Flutter با استفاده از یک پایگاه کد مبتنی بر پلتفرم آگنوستیک به توسعهدهندگان کمک میکند تا برنامههایی با کارایی بالا و مقیاسپذیر با رابطهای کاربری جذاب و کاربردی برای Android یا IOS و البته وب و ویندوز و حتی لینوکس بسازند. بله درست شنیدید! همه ی این پلتفرم ها تنها با یک بار کد نوشتن بسیار ساده تر از آن چه فکر کنید امکان پذیر است.
Flutter متکی به کتابخانه ای از ویجت های از پیش ساخته شده است تفریبا برای هر چیزی که در ذهن دارید و می خواهید پیاده کنید فلاتر یک ویجت را در دل فلاتر جاسازی کرده که منجر راه اندازی سریع برنامه های موبایلی می شود.
Flutter در سال 2015 توسط گوگل ایجاد شد و به طور رسمی در سال 2018 عرضه شد، که به سرعت تبدیل به جعبه ابزار منتخب توسعه دهندگان شده. طبق آمار Statista، فلاتر اخیراً از React Native پیشی گرفته و به عنوان اولین فریمورک توسعه اپلیکیشن موبایل تبدیل شده است.
فلاتر چگونه کار می کند؟
فلاتر یک سیستم لایهای است که شامل فریمورک، موتور و جاسازیکنندههای مخصوص پلتفرم است. برنامه های فلاتر با استفاده از زبان برنامه نویسی شی گرا دارت گوگل ساخته می شوند. خود موتور فلاتر در درجه اول به زبان C/C++ نوشته شده است. و کتابخانه Skia ستون فقرات قابلیتهای گرافیکی Flutter است.

دارت اساس بسیاری از مزایای عملکرد فلاتر است. هم از کامپایل پیش از زمان (AOT) و هم بهموقع (JIT) پشتیبانی میکند. AOT کد عملکرد بالاتر را در کد بومی سطح پایین کامپایل می کند، که منجر به راهاندازی سریعتر میشوند و JIT قابلیت بارگذاری مجدد داغ Flutter (Hot Reload) را تسهیل می کند (که در ادامه با جزئیات بیشتر توضیح خواهم داد)، که زمان توسعه را کاهش می دهد. دارت همچنین مستقیماً روی کدهای ARM یا Intel x64 بومی کامپایل میشود و تفاوتهای عملکردی بین برنامههای Flutter و برنامههای بومی که در زمان اجرا به تفسیر کدهای میانی متکی هستند را به حداقل میرساند.
معماری Flutter همچنین اضافه کردن قابلیت ها یا پذیرش کاربران جدید را ساده و سریع می کند و در نتیجه بسیار توسعه پذیر و مقیاس پذیر است. یعنی به راحتی می توانید برای فلاتر پکیچ بسازید یا پکیج های ساخته شده برای آن را به دلخواه خود کاستومایز کنید.
چرا توسعه دهندگان اپلیکیشن موبایلی، فلاتر را دوست دارند؟
محبوبیت فلاتر دلایل بسیار زیادی دارد. Flutter طیف وسیعی از مزایایی را به توسعه دهندگان ارائه می دهد که توسعه را به معنای واقعی کلمه سرعت می بخشد و منجر به تولید اپلیکیشن های موبایلی کاربرپسندتر می شود.
فلاتر platform-agnostic است.
هر توسعهدهندهای که قصد توسعه یک اپلیکیشن موبایلی را دارد میداند که داشتن نسخههایی برای اندروید و iOS چقدر مهم است. از سپتامبر 2021، اندروید 72 درصد سهم بازار تلفن همراه را گرفته است. و iOS نیز نزدیک به 27 درصد سهم بازار را در اختیار دارد.
تمرکز بر ساخت یک اپلیکیشن بومی فقط برای یک پلتفرم، بخش بزرگی از بازار را نادیده می گیرد و موفقیت بالقوه اپلیکیشن در آینده را محدود می کند. و توسعه اپلیکیشن های بومی جداگانه هم می تواند زمان بر و پرهزینه باشد.
Flutter توسعه چند پلتفرمی را ساده می کند. بهجای ایجاد کد جداگانه برای هر پلتفرم، توسعهدهندگان میتوانند از پایگاه کد واحد Flutter استفاده کنند.
اما مناسب بودن Flutter برای توسعه بین پلتفرمی فراتر از قابلیت حمل کد است. برخلاف سایر فریمورکهای چند پلتفرمی مانند React Native و Xamarin، رابطهای کاربری ساختهشده توسط Flutter (UI) نیز دارای پلتفرمهای آگنوستیک هستند، چون موتور رندر Skia فلاتر به اجزای رابط کاربری که مخصوص یک پلتفرم ویژه مثلا IOS نیاز ندارد.
فلاتر توسعه اپلیکیشن را ساده و سرعت می بخشد
Flutter دارای ویژگیهای بسیار متفاوتی است که توسعه اپلیکیشن های موبایلی چند پلتفرمی را سادهتر و سریعتر میکند. در واقع، توانایی تکیه بر یک منبع کد و موتور UI برای توسعه بین پلتفرمها، تلاش لازم برای تولید نسخههای یک اپلیکیشن برای اندروید و iOS را کاهش میدهد.
همچنین وجود کتابخانه های گسترده آماده برای توسعه دهندگان امکان دسترسی سریع به عملکردهای از پیش ساخته شده را می دهد و زمان کلی کدنویسی را به طور چشمگیری کاهش می دهد. و کاهش زمان کدنویسی منجر به کاهش هزینه های توسعه می شود.
یکی از مهم ترین ویژگی های فلاتر برای کاهش زمان توسعه، قابلیت بارگذاری مجدد یا همان Hot Reload آن است. بارگذاری مجدد داغ، به کامپایل JIT متکی است، اجرای تغییرات در کد را سرعت می بخشد. در بارگذاری مجدد داغ، Flutter تغییرات کد را بدون تغییر حالت های حفظ شده در ماشین مجازی دارت در حال اجرا وارد می کند. از آنجایی که کد برنامه مجدداً کاملی کامپایل نشده است، بارگذاری مجدد داغ با سرعت بیشتری تأثیرات ویرایش کد را نشان می دهد. Hot Reload به توسعه دهندگان اجازه می دهد تا تأثیر تغییرات را در زمان واقعی بدون تغییر وضعیت فعلی برنامه مشاهده کنند. در نتیجه، توسعهدهندگان میتوانند با سرعت بیشتری ویژگیها و نسخهها را آزمایش کنند و همچنین باگها را برطرف کنند. در نتیجه، زمان کمتری برای ارائه برنامه های اولیه و به روز رسانی به بازار نیاز است. بنابراین فلاتر برای ساخت و انتشار برنامه های MVP بسیار بهینه است.
فلاتر به دلیل کاراییاش، یک انتخاب عالی برای استارتآپهایی با بودجه محدود است. به عنوان مثال، یک استارتاپ ممکن است قبلاً حداقل 150 هزار تومان در ساعت برای طراحی یک صفحه وب سرمایه گذاری کرده باشد و به دنبال هزینه های مشابه یا بالاتر برای توسعه دهندگان برنامه ی خود باشد. Flutter با کاهش زمان توسعه و سرعت بخشیدن به محصولات به بازار، یک ابزار توسعه موثر برای مشاغل مقرون به صرفه فراهم می کند.
Flutter هم یادگیری آن آسان است و هم استفاده از آن
یادگرفتن Flutter ساده است، چه تجربه توسعه گسترده ای داشته باشید یا نه. توسعه دهندگانی که اغلب با زبان های دیگری مانند جاوا، پایتون، سی شارپ یا سایر زبان های شی گرا کار می کنند، مشکلی برای اضافه کردن فلاتر و دارت به مجموعه خود نخواهند داشت، زیرا دارت هم از نظر ساختاری و هم از نظر سینتکس شبیه به زبان های نام برده است. علاوه بر این، برای کسانی که تجربه توسعه کمتری دارند، کتابخانه های گسترده ای وجود دارد که ساخت اپلیکیشن را بدون نوشتن کدهای دشوار و اضافه میسر میکند. چندین پلتفرم وجود دارند که از Flutter برای ساختن اپلیکیشن بدون نوشتن هیچ کدی استفاده می کنند!
فلاتر همچنین مستندات عالی دارد. علاوه بر داکیومنت راهنمای مرجع عمومی، منابع کمکی Flutter شامل برنامههای کاربردی متعدد، یک «کتاب آشپزی» است که به توسعهدهندگان نشان میدهد چگونه وظایف رایج را انجام دهند.
پذیرش گسترده Flutter یک جامعه پر رونق ایجاد کرده است که کمک و منابعی را برای توسعه دهندگان جدید یا با تجربه Flutter فراهم می کند. توسعه دهندگان می توانند اطلاعات و کمک را از طریق انواع وبلاگ ها، انجمن ها و سایر انجمن های آنلاین پیدا کنند، از جمله:
- سایت StackOverflow
- سایت Flutter Awesome
- سایت flutter-dev Google Group
- سایت flutter-dev subreddit
البته اینها تنها تعدادی از منابع موجود هستند. تنها کاری که لازم است چیزی را که نمی دانید در گوگل جستجو کنید.
معایب استفاده از فلاتر؟
مانند هر SDK دیگری، Flutter هم کامل نیست. البته نقاط ضعف آن با مزایای زیادی که دارد جبران می شود، اما توسعه دهندگان آینده نگر Flutter باید از محدودیت های آن آگاه باشند.
حجم خروجی برنامه ها
حجم زیاد برنامه یک نگرانی اساسی برای بسیاری از توسعه دهندگان است. اگرچه اکثر دستگاههای تلفن همراه دارای فضای ذخیرهسازی زیادی هستند، عکسها، ویدیوها و بازیهای گرافیکی متعدد میتوانند به سرعت ظرفیت دستگاه را پر کنند. و هر چه دستگاه قدیمی تر باشد، این مشکل بزرگتر است.
برنامههای Flutter مستقل هستند و همه کدهای لازم برای اجرای برنامه را دارند، بهجای تکیه بر عناصر پلتفرم، که در نتیجه حجم برنامهها بزرگتر از سایر برنامهها است. برای توسعه دهندگانی که به دنبال جذب گسترده ترین طیف کاربران بالقوه هستند، اندازه برنامه های Flutter ممکن است مشکل ساز باشد و توسعه دهنده را به انتخاب یک زبان دیگر سوق دهد.
عدم پشتیبانی از کتابخانه های غیر فلاتری
دسترسی به کتابخانه های غیر فلاتری به کاهش زمان و هزینه های توسعه کمک می کند و بسیاری از توسعه دهندگان به شدت به منابع غیر فلاتری متکی هستند. کاتالوگ ویجت داخلی Flutter گسترده است و سایت بسته رسمی Flutter هزاران گزینه دارد. با این حال، از آنجایی که Flutter هنوز نسبتاً جوان است، کتابخانه های غیر فلاتری هنوز منابع کمتری نسبت به سایر ابزارهای توسعه در دسترس دارند. با این حال، محیط Flutter شخص ثالث با انتقال کاربران بیشتری به Flutter به سرعت در حال رشد است و میتوانید انتظار داشته باشید که با گذشت زمان این مشکل از بین برود.
پلتفرم های محدود
در حال حاضر تعداد پلتفرم هایی که اپلیکیشن های فلاتر در آن ها کار می کنند محدود است. به عنوان مثال، نمی توانید برنامه های watchOS یا tvOS یا Apple CarPlay را با استفاده از Flutter توسعه دهید. با توجه به اینکه انتظار می رود کل فروش ساعت هوشمند در پنج سال آینده به یک چهارم میلیارد دستگاه برسد، این یک محدودیت حیاتی است. Flutter سعی می کند با ارائه راه حل هایی مانند افزودن پسوندهای بومی Apple Watch به برنامه های Flutter این مشکل را برطرف کند.
الزام یادگیری زبان دارت
برای استفاده از فلاتر، باید زبان برنامه نویسی دارت گوگل را بدانید. در حالی که یادگیری Dart برای برنامه نویسان شی گرا چندان دشوار نیست، اما به اندازه زبان های شی گرا دیگر مانند C#، جاوا و جاوا اسکریپت شناخته شده یا مورد استفاده قرار نمی گیرد. در نتیجه، توسعه دهندگانی که به دنبال رسیدن سریع به بازار هستند ممکن است فلاتر را به دلیل این اضافه شدن به منحنی یادگیری دور بزنند.
شاید برای اندروید بهتر از iOS باشد
جای تعجب نیست که عملکرد Flutter ممکن است در اندروید بهتر از iOS باشد. در حال حاضر نمونههایی از ویژگیهای iOS وجود دارد که در اندروید عقب ماندهاند، زیرا اصلاحات و بهروزرسانیهای Flutter به بازار آمدند. به هر حال، گوگل، برجستهترین حامی اندروید، نیروی پشت فلاتر است و اندروید اکثریت قریب به اتفاق بازار موبایل را تشکیل میدهد. از آنجایی که Flutter یکی از محصولات گوگل است، توسعه دهندگان اندروید بیشتر از توسعه دهندگان iOS از آن استفاده می کنند. و برخی پیشنهادها وجود دارد که ویژگیهای جدید اندروید سریعتر از ویژگیهای iOS به Flutter اضافه می شود.
آینده فلاتر چگونه خواهد بود؟
پس از افزایش انفجاری در استفاده در سه سال گذشته، سهم بازار فلاتر در حال افزایش است. اما توسعه دهندگان نباید به این موضوع به عنوان نشانه ای نگاه کنند که Flutter به زودی از بین می رود. شما فقط می توانید فرض کنید که محبوبیت فعلی این ابزار باعث می شود Google تلاش کند تا برخی از مشکلات مشکل سازتر Flutter، به ویژه حجم برنامه را برطرف کند و کمبود منابع پکیج های غیر فلاتری خود به خود حل خواهد شد. با توجه به سادگی و قدرت Flutter، احتمالاً به طور گسترده توسط توسعه دهندگان استفاده خواهد شد.
آیا ابزارهای جدیدی که سعی در جایگزینی فلاتر دارند، به وجود خواهند آمد؟ قریب به یقین بله. ولی چشم اندازی روشن هم برای فلاتر در آینده قابل پش بینی است.
