فلاتر یک ابزار توسعه اپلیکیشن چند پلتفرمی است که توسط شرکت گوگل قدم به عرصه رقابت با دیگر فریمورک های توسعه برنامه های موبایلی گذاشته است. این فناوری جوان و نوین قابلیت های زیادی برای برنامه نویسان به همراه آورده است. به کمک Flutter می توان نرم افزارهایی ارزان قیمت و در زمان کوتاه طراحی و تولید نمود. در این مقاله از رادار قصد داریم در رابطه با این فریمورک توسعه موبایل به طور مفصل صحبت کنیم.
معرفی زبان برنامه نویسی فلاتر
فلاتر در حقیقت یک فریم ورک طراحی اپلیکیشن برای موبایل است که از آن در ساخت رابط کاربری (UI) و توسعه نرم افزار (Software Development Kit | SDK) استفاده می شود. این فریمورک متن باز (Open Source)، قابلیت طراحی و تولید اپلیکیشن موبایل بومی (Native Application) را تنها با یک کد مبنا دارد. نرم افزارهای بومی با هدف استفاده در یک دستگاه خاص و سیستم عامل مخصوص آن ساخته می شوند.
زبان برنامه نویسی فلاتر از دو بخش SDK و چهارچوب نرم افزاری تشکیل شده است. SDK اشاره به مجموعه ای از ابزارها دارد که در توسعه اپ به کار می روند. چهارچوب نرم افزاری هم مجموعه ای از اجزای رابط کاربری است که امکان شخصی سازی آن ها وجود دارد. به این چهارچوب ها، واسط مبتنی بر ویجت نیز می گویند.
ویجت در فلاتر به چه معناست؟
برای ساخت یک واسط کاربری از صفر تا صد در فلاتر، از ویجت ها (widget) استفاده می شود. یک ویجت می تواند به حالت های مختلف اعم از عنصر ساختاری (Structural Element)، عنصر شیوهمند (Stylistic)، جنبه طرحبندی (Layout Aspect) و … تعریف شود. به طور مثال دکمه و منوهای نرم افزار، عناصر ساختاری هستند. فونت و رنگ بندی در زمره عناصر شیوهمند قرار گرفته و مواردی مانند حاشیه متن ها، از جنبه های طرحبندی به شمار می آیند.
Flutter ویجت های پیش ساخته مخصوص به خود را دارد که از آن ها برای ساخت اپلیکیشن های اندروید و iOS استفاده می شود. طوری که در نهایت اپ ها طراحی شده، دقیقا همانند نرم افزارهای بومی به نظر می رسند. البته در فلاتر توسعه دهندگان این امکان را دارند که ویجت های دلخواه خودشان را طرح ریزی کنند.
در حال حاضر فلاتر تنها پلتفرم توسعه برنامه های موبایلی به شمار می آید که بدون نیاز به پل جاوااسکریپت، نماهای واکنش پذیر (Reactive-Style View) را برای توسعه دهندگان ارائه می کند.
معرفی زبان برنامه نویسی دارت
برای توسعه نرم افزار با فریمورک فلاتر باید از زبان برنامه نویسی دارت (Dart) استفاده نمود. این زبان اولین بار توسط گوگل معرفی شد. دارت یک زبان برنامه نویسی مبتنی بر نوع داده شی گرا (Typed Object Programming Language) است که آن را در ساخت اپلیکیشن های موبایلی به کار می برند. قواعد نوشتاری Dart را می توان با Syntax جاوا اسکریپت مقایسه نمود.
چرا در فلاتر از دارت استفاده میشود؟
مهمترین دلیلی که در فلاتر از زبان برنامه نویسی دارت استفاده می شود، اجتناب از بروز مشکلات اجرایی می باشد. Flutter، زبان دارت را برای پلتفرم های مختلف مبتنی بر اندروید و iOS، به صورت جلوتر از زمان (Ahead of Time | AoT) ترجمه می کند. کامپایل به روش AoT، امکان بارگذاری و باز شدن سریع تر نرم افزار را فراهم می آورد. ضمن این که فلاتر درخت نما را به ازای هر فریم، نوسازی (Refresh) می کند.
در کنار این موارد قابلیت های دیگر دارت نظیر بازیافت حافظه نسلی و برخورداری از بسته های نرم افزاری مختلف برای گسترش امکانات یک اپلیکیشن، سبب کارآمدی آن در برنامه های مبتنی بر فلاتر می شود.
تاریخچه فلاتر
گوگل شرکت سازنده فلاتر است که اولین بار آن را با نام کد Sky در سال 1394 منتشر نمود. البته کد Sky تنها نسخه آزمایشی بود و تنها بر روی سیستم عامل اندروید اجرا می شد. تا انتشار رسمی Flutter، 3 سال زمان گذشت و در اواسط سال 1397، به صورت رسمی به توسعه دهندگان معرفی شد.
هدف از ساخت فلاتر چه بود؟
هدف اصلی از ساخت فلاتر، تلاش برای رسیدن به سرعت بیشتر بوده است. اریک سیدل که یکی از مدیران پروژه ساخت Flutter است، می گوید شروع این پروژه به تقلیل دادن مرورگر کروم باز می گردد. در آن زمان توسعه دهندگان گوگل در تلاش بودند تا با حذف برخی از امکانات و قابلیت های کروم، سرعت آن را افزایش دهند. اما در نهایت به پلتفرمی دست یافتند که قادر به پردازش صفحات وب نبود اما هنگام اجرای Benchmark ها، سرعتی 20 برابر بیشتر از کروم داشت. بنابراین، یک موتور پردازش (Rendering Engine) شکل گرفت.
در آن زمان گروه دیگری از توسعه دهندگان در تلاش برای یافتن یک زبان برنامه نویسی مناسب بودند. اوایل کار فلاتر با جاوا اسکریپت نوشته شد. حتی دوره ای آن را با C++ توسعه دادند. اما با گذشت زمان مشکلاتی سر راه برنامه نویسان و توسعه دهندگان قرار گرفت. از این رو تیم توسعه، زبان برنامه نویسی دارت را خلق کرد.
نام فلاتر از کجا آمده است؟
اریک سیدل در رابطه با ایده شکل گیری نام فلاتر می گوید، ابتدای امر گروهی برای یافتن نام مناسب، شروع به جستجوهای فراوان با روش جستجوی نشان تجاری نمودند. در این روش تلاش بر این است تا نامی پیدا شود که در کشورهای مختلف قابل استفاده بوده و مشکل قانونی نداشته باشد. اما در نهایت نتیجه قابل قبولی به دست نیامد. پس از آن تصمیم بر این شد که از نام شرکت هایی که در گذشته تحت مالکیت گوگل درآمده اند، استفاده شود. ریشه نام Flutter از یکی از استارتاپ های کوچکی می آید که در گذشته توسط گوگل خریداری شد. این استارتاپ با شکست مواجه شده بود، اما نام آن همچنان تحت مالکیت گوگل قرار داشت. به این ترتیب فلاتر توسط تیم توسعه انتخاب گردید.
آیا دارت برای استفاده در فلاتر تغییر یافته است؟
بر اساس توضیحات اریک سیدل، یکی از بنیان گذاران فلاتر، در سال های اولیه استفاده از دارت در فلاتر، ویژگی ها و قابلیت های متعددی توسط تیم توسعه دهنده دارت، به صورت اختصاصی برای Flutter طراحی شده است. از جمله این قابلیت ها می توان به ویژگی ایجاد کامنتهای انتهایی (trailing Comments) در Dart برای ساخت قالب فلاتر اشاره نمود.
حوزه های کاربردی فلاتر کدام اند؟
فریمورک فلاتر در اوایل روی کار آمدن تنها مناسب طراحی و ساخت رابط کاربری در اپلیکیشن های موبایلی بود. اما با گذشت زمان توسعه دهندگان گوگل آن را ارتقا داده و امروزه می توان از فلاتر برای تولید محصول در مرورگرهای دسکتاپ هم بهره گرفت.
پشتیبانی وب با Flutter
تیم توسعه دهنده Flutter در اوایل سال 1398، یک نسخه پیش نمایش برای توسعه وب به نام مرغ مگس خوار ارائه داد. با گذشت زمان و ارتقا این نسخه، نام آن به فلاتر وب تغییر یافت. در این نسخه امکانات پیشرفته سیستم عامل از جمله مختصات موقعیت جغرافیایی، جمع آوری اطلاعات از سنسورها، مدیریت مجوزها، بلوتوث، اسناد هویتی و … در قالب افزونه (Plugin) در اختیار برنامه نویسان قرار می گیرد. علاوه بر این اگر یک برنامه به ویژگی خاصی در سطح سیستم عامل نیاز داشته باشد که به صورت افزونه در دسترس نباشد، فلاتر قادر است با کانال های پلتفرم میان زبان دارت و کدهای محلی ارتباط برقرار کند.
توسعه اپلیکیشن با Flutter
برای توسعه اپلیکیشن با فریم ورک Flutter محدودیتی وجود نداشته و می توان هر نوع نرم افزار موبایلی در سایزهای کوچک تا بزرگ را با آن طراحی نمود. از جمله این نرم افزارها می توان به اپلیکیشن های خرده فروشی آنلاین، باشگاه مشتریان، سیستم های بانکداری و فناوری مالی، نرم افزار پیک، جابجایی بسته، مرکز تماس و … اشاره نمود.
مهمترین ویژگی های فریمورک فلاتر چیست؟
در حال حاضر نرم افزارهای زیادی با استفاده از فریمورک فلاتر قدم به عرصه حضور گذاشته اند. این نرم افزارها بر پایه ویژگی های متعددی که Flutter در اختیار توسعه دهندگان آن ها می گذارد، توانسته اند کاربران بسیاری برای خود دست و پا کنند. در ادامه برخی از برترین مزیت ها و ویژگی های این فریمورک را با هم خواهیم خواند.
1- سادگی یادگیری و استفاده از فلاتر
یادگیری روش برنامه نویسی با استفاده از فلاتر بسیار ساده است. در این فریمورک حجم کدها به طور قابل توجهی کاهش یافته است. به همین دلیل توسعه دهندگان برنامه های موبایلی به تولید اپلیکیشن با Flutter علاقه بیشتری دارند. به طور کلی می توان گفت ساخت برنامه با این فریمورک نسبت به دیگر رقبا نظیر جاوا، سوئیفت، ری اکت نیتیو و … آسان تر و ساده تر است.
2- سرعت بالای توسعه و بازدهی
در برنامه های نوشته شده با فلاتر، هنگام تغییر یک عنصر یا ویژگی، می توان بی درنگ (Real-time) نتایج را در نرم افزار مشاهده نمود. در این فریمورک، پس از ذخیره تغییرات ایجاد شده، به روز رسانی و اجرای اپلیکیشن در زمان بسیار کوتاهی صورت خواهد پذیرفت. این ویژگی سبب سرعت گرفتن فرآیند توسعه نرم افزار شده و رفع خطاها را ساده تر می کند.
3- سرعت اجرا و عملکرد مناسب
همانطور که گفتیم در فلاتر از ویجت های اختصاصی استفاده می شود. به همین سبب ارتباط و مکاتبه میان اپلیکیشن و پلتفرم مربوطه کمتر بوده و سرعت اجرای برنامه بالاتر خواهد بود. علاوه بر این قابلیت کامپایل کدها به روش AoT در زبان دارت، دلیل دیگری بر سرعت بالای اجرا و عملکرد برنامه های مبتنی بر Flutter می باشد.
4- سازگاری بالا
وجود ویجت ها در برنامه های مبتنی بر فلاتر به عنوان محور اصلی نرم افزارها، موجب سازگاری بالای آن ها با سیستم عامل های مختلف شده است. به این ترتیب توسعه دهندگان هنگام ساخت یک اپلیکیشن زمان کمتری را صرف سازش پذیری آن با نسخه های قدیمی سیستم عامل مورد نظر می کنند. علاوه بر این نسخه های آتی سیستم عامل هم احتمال سازگاری بیشتری با برنامه خواهند داشت. در نظر داشته باشید، که هر بار نسخه جدیدی از سیستم عامل های اندروید یا iOS منتشر می شود، باید مجموعه ویجت ها را نیز به روزرسانی نمود. به همین دلیل تیم توسعه فلاتر همواره در تلاش است تا ویجت ها را در به روزترین حالت ممکن و نزدیک به ویجت های پلتفرم نگه دارند.
5- جامعه در حال رشد فلاتر
کاربران فلاتر و توسعه دهندگان آن روز به روز در حال بیشتر شدن هستند. از این رو می توان گفت Flutter یک جامعه قدرتمند و بزرگ دارد که در تولید محتوای کارآمد، فعال هستند. از جمله این اجتماعات می توان به Awesome Flutter (مجموعه ای مقالات و ویدئوهای آموزشی)، !It’s All Widgets (فهرستی از برنامه های کاربردی متن باز مبتنی بر فلاتر) و Flutter Community (نشریه آموزشی و اشتراکی) اشاره نمود.
6- صرفه جویی در وقت و هزینه
فلاتر یک ابزار توسعه چند پلتفرمی (Cross-Platform) است که به کمک آن می توانید با یک کد پایه یکسان، نرم افزاری برای سیستم عامل های اندروید و iOS طراحی کنید. به این ترتیب در زمان و هزینه های مورد نیاز برای توسعه اپلیکیشن به صورت قابل توجهی صرفه جویی خواهد شد.
7- متن باز بودن
فلاتر یک ابزار متن باز است که توسط گروهی از توسعه دهندگان فعال در سراسر دنیا پشتیبانی می شود. در کنار این رایگان بودن Flutter و دارت هم مزید بر علت شده تا دسترسی به منابع سودمند این فناوری راحت تر صورت پذیرد.
8- سازگاری فلاتر با استارتاپ های MVP
استارتاپ های MVP شرکت هایی هستند که محصولات قابل حیات و پذیرش حداقلی ارائه می دهند. فلاتر به این شرکت ها کمک می کند با هزینه کم و در سریع ترین زمان، محصولاتشان را به سرمایه گذاران نشان دهند. کارایی بالا، قابلیت استفاده شخصی سازی ویجت ها، هزینه های مقرون به صرفه و سرعت بالا در تولید اپلیکیشن با استفاده از Flutter از جمله دلایلی هستند که سازگاری مناسب را برای شرکت های MVP به دنبال می آورند.
9- برخورداری از مستندات کامل
وجود مستندات کامل و مناسب برای آموزش و یادگیری فلاتر مزیت دیگری است که در اختیار توسعه دهندگان قرار دارد. از این رو هنگامی که به مشکلی در خصوص هر یک از ویجت ها مواجه شوند، به راحتی با مراجعه به مستندات می توان راه حلی برای مشکل پیش آمده یافت.
نقاط ضعف فریمورک فلاتر چه هستند؟
فلاتر نیز مانند دیگر ابزارهای توسعه اپلیکیشن، دارای برخی کاستی ها و نقاط ضعف است. در ادامه برخی از این کاستی ها را معرفی خواهیم نمود:
1- بزرگ بودن اندازه فایل اپلیکیشن
یکی از مشکلات بزرگی که اپلیکیشن های توسعه یافته با فلاتر با آن مواجه هستند، سایز بزرگ فایل برنامه می باشد. این مشکل در تلفن همراه کاربران به معضلی تبدیل شده و گاهی آن ها را وادار به حذف نرم افزار مربوطه می کند. از این رو برخی توسعه دهندگان نرم افزار از فلاتر چشم پوشی کرده و به سراغ فریم ورک های دیگری مانند جاوا، ری اکت نیتیو و سوئیفت می روند.
2- کمبود کتابخانه های شخص ثالث در فلاتر
کتابخانه ها و بسته های شخص ثالث، امکان توسعه راحت تر نرم افزارها را فراهم می آورند. این کتابخانه ها از پیش آزمایش شده و به راحتی در دسترس برنامه نویسان قرار دارند. از این رو آن ها می توانند نیازهایشان را برطرف کنند. اما در فلاتر به دلیل جدید بودن فناوری، تعداد کتابخانه های در دسترس بسیار کم بوده و در برخی مواقع توسعه دهندگان را با مشکل مواجه می کند.
3- برخی مشکلات فلاتر با iOS
برخی از توسعه دهندگان برنامه های موبایلی، نگرانی هایی در رابطه با مشکلات فلاتر با iOS دارند. آن ها معتقدند گوگل به عنوان شرکت سازنده Flutter، ممکن است به روز رسانی های مربوط به iOS را در زمان مناسب ارائه ندهد. اما در چند وقت اخیر شاهد ارائه یکی از به روز رسانی های این فریم ورک برای ارائه ویژگی های ظاهری با تراکم پیکسلی بهتر در iOS بودیم. از این رو می توان گفت نیازی به نگرانی در این زمینه نیست.
4- مشکلات مربوط به دارت در فلاتر
فلاتر از زبان برنامه نویسی دارت استفاده می کند. این زبان در کنار مزیت هایی که به همراه دارد، ممکن است مشکلاتی نیز به دنبال آورد. دارت به عنوان یک زبان برنامه نویسی شی گرا، به خوبی دیگر زبان های شی گرا نظیر C، جاوا، C# و جاوا اسکریپت نیست. از این رو تولید برنامه با آن برای تازه کارها اندکی مشکل است.
معروف ترین پروژه های طراحی شده با فلاتر کدام اند؟
فلاتر یک ابزار توسعه چند پلتفرمی است که با استفاده از آن می توان نرم افزاری برای سیستم عامل های مختلف و تنها با یک کد مبنا طراحی نمود. این فریمورک در رقابت تنگاتنگی با دیگر ابزارهای چند پلتفرمی نظیر React Native می باشد. با این وجود در حال حاضر برنامه های متعددی بر پایه Flutter طراحی و تولید شده اند. اپلیکیشن های InKino، Music Tutor، Topline، Xianyu و Google Ads برخی از معروف ترین پروژه های مبتنی بر فلاتر هستند که در حال حاضر به کاربران سرویس دهی می کنند.
آینده فلاتر چگونه رقم خواهد خورد؟
فلاتر یک ابزار توسعه اپلیکیشن نسبتا جدید است که در چند سال اخیر پیشرفت های فراوانی داشته است. به طوری که اجتماع توسعه دهندگان آن به صورت مداوم در تلاش هستند تا کاستی ها و ایرادات موجود را برطرف سازند. متن باز بودن و رایگان بودن این فریم ورک از جمله دلایل محبوبیت زیاد آن در دنیای برنامه نویسان به شمار می آید. علاوه بر این ها وجود گوگل به عنوان حامی و پشتیبان اصلی فلاتر موجب گسترش استفاده از آن در ساخت برنامه های موبایلی شده است. به طوری که برخی از منابع آن را یکه تاز فناوری های توسعه برنامه های کاربردی موبایل در آینده می دانند.
در دنیای امروز توسعه دهندگان از قرار گرفتن در قید و بند استانداردهای اجزا رابط کاربری در سیستم عامل های اندروید و iOS بیزارند. Flutter برای این دسته از برنامه نویسان انتخاب مناسبی است. زیرا در این فریمورک نیاز به SDK بومی نداشته و ویجت های آن اختصاصی هستند.
مسیر یادگیری فلاتر چگونه است؟
اگر بخواهید توسعه اپلیکیشن با فلاتر را آموزش ببینید، لازم است طبق مسیر زیر حرکت کنید.
1- یادگیری شی گرایی
برنامه نویسی مبتنی بر شی گرایی در توسعه برنامه های کاربردی موبایل از اهمیت بالایی برخوردار است. برای یادگیری این مفهوم باید به صورت عملی اقدام به کدنویسی نموده و فراوان تمرین کنید. در این میان کمک گرفتن از یک برنامه نویس با تجربه نیز در این زمینه بسیار موثر است.
2- یادگیری Dart
تمام فریمورک ها بر پایه یک زبان برنامه نویسی خاص طراحی میشوند. فلاتر نیز از زبان برنامه نویسی دارت استفاه میکند. از این رو بهتر است پیش از آموزش فلاتر، به یادگیری Dart بپردازید.
3- آشنایی با توسعه اپلیکیشن موبایل
اگر قصد یادگیری فلاتر را دارید، بهتر است بدانید داشتن تجربه در حوزه توسعه اپلیکیشنهای موبایلی کمک زیادی به شما خواهد نمود. از جمله مهمترین فریم ورک های ساخت اپلیکیشن موبایل می توان به iOS Native، React Native، Xamarin، Ironic و Swift اشاره نمود.
4- آشنایی با رابط کاربری اعلانی
یکی دیگر از مواردی که پیش از آموزش فلاتر باید بدانید، آشنایی با رابط کاربری اعلانی است. البته افرادی که تجربه کار با React Native یا ReactJS را دارند، به خوبی با رابط کاربری اعلانی (Declarative UI) آشنا هستند. اما دیگر افرادی که نسبت به این فریمورک های شناختی ندارند، باید برای آموزش این رابط کاربری اقدام نمایند.
چگونه میتوان فلاتر را یاد گرفت؟
همانطور که گفتیم برای یادگیری فلاتر، در قدم اول باید زبان برنامه نویسی دارت را به خوبی بیاموزید. به طور کلی برای آموزش Flutter میتوان از فیلمهای آموزشی، مستندات، دورههای آنلاین و مقالات آموزشی کمک گرفت. بدیهی است دیدن فیلمهای آموزشی راهی سریعتر و بهتر جهت آموزش است. سایت رسمی فلاتر نیز برای کمک به برنامه نویسان، مجموعه ویدئوهای متعددی جهت آموزش این فریمورک تهیه دیده است.
مقایسه میان فلاتر و جاوا
جاوا یک زبان برنامه نویسی نسبتا قدرتمند در دنیا است که بر پایه اصول شی گرایی طراحی شده است. این زبان امکان اجرای برنامه ها را بر روی پلتفرم های مختلف میدهد. به عبارت دیگر با یکبار کدنویسی، میتوانید برنامه را در نرم افزارهای مختلف به کار ببرید. اما اپلیکیشن های نوشته شده با این زبان تنها بر روی اندروید فعالیت میکنند و برای اجرای آنها بر روی iOS باید مجددا برنامه را با زبان سوئیفت بنویسید. این در حالی است که فریم ورک فلاتر این امکان را به برنامه نویسان میدهد که تنها با یکبار نوشتن برنامه، آن را بر روی تمام سیستم عامل ها اعم از اندروید و iOS به کار ببرند.
مقایسه میان فریمورک های فلاتر و ریکت نیتیو
ری اکت نیتیو انتخابی مناسب برای ایجاد Dom مجازی است و میتواند تجربه کاربری بهتری فراهم آورد. در این زبان، کامپوننتها یکبار طراحی شده و چندین مرتبه استفاده میشوند. علاوه بر این کدها در React Native از پایداری بسیار مناسبی برخوردار بوده و انعطاف کافی در ابزارهای مختلف دارند. اما این زبان با محدودیتهایی نظیر سندنگاری ضعیف و یادگیری سخت مواجه است. این در حالی است که فلاتر یک فریمورک نسبتا ساده محسوب شده و به راحتی میتوان کار با آن را آموخت. این زبان مناسب نوشتن MVP بوده و از ابزار cross-platform بهرهمند است. اما از جمله محدودیتهای آن میتوان به کمبود کتابخانهها و ضعف در پشتیبانی از برنامههای Apple TV و Android TV اشاره نمود.
سخن پایانی
در دنیای امروز، فلاتر در زمره خلاقانهترین فناوریهای موبایلی در بازار به شمار میآید. این فریمورک امتیازات فراوانی برای تیمهای توسعه موبایل به همراه آورده و تبدیل به انتخاب اصلی برنامه نویسان در سده حاضر شده است.
به نظر شما چه زمان میتوان یک اپلیکیشن موبایلی را کامل و بدون نقص توصیف کرد؟
سوالات متداول💡