اگر در زمینه برنامه نویسی فعالیت کنید یا علاقه مند به آن باشید احتمالا نام فریمورک فلاتر به گوش شما خورده است.
فریموورک متن باز فلاتر (Flutter ) توسط گوگل برای اولین در سال 2017 رونمایی شد, این فریموورک به برنامه نویسان و توسعه دهندگان این امکان را میدهد که با یک بار نوشتن کد خروجی مخصوص اندروید و iOS برای اپلیکیشن خود بگیرند.
در سال 2015 یکی از مهندسان شرکت گوگل پروژهاي به نام SKY را براي مدیران خود ارائه کرد, که به وسیله آن بدون استفاده از زبان برنامه نویسی جاوا یک اپلیکیشن اندرویدي را طراحی و در فروشگاه گوگل قرار داده بود.
در مسیر توسعه این اپلیکیشن از زبان برنامه نویسی استفاده شده بود، که این زبان را شرکت گوگل معرفی کرده بود, اما استفاده و کاربرد آنچنانی تا آن زمان نداشت. زبان برنامه نویسی مورد نظر همان زبان دارت میباشد.
هسته اصلی فلاتر با استفاده از زبان های C, C++ و دارت توسعه داده شده است. برای پیاده سازی موتور گرافیکی نیز از Skia کمک گرفته شده است.
در حال حاضر فلاتر امکان طراحی برنامه برای تمام پلتفرم های موبایل, وب و دسکتاپ را دارد.
نکته مثبت Flutter نسبت به فریموورک های چند سکویی مثل زمارین و فون گپ خروجی Native اپلیکیشن می باشد به عبارت دیگر میان اپلیکیشن اندرویدی که با فلاتر توسعه داده میشود یا جاوا هیچ فرقی وجود ندارد.
زبان مورد استفاده در فریموورک Flutter زبان توسعه یافته توسط گوگل به نام دارت Dart می باشد که یک زبان شی گرا و سطح بالا با شباهت به جاوا می باشد.
همچنین گوگل اطلاع داده است که در آینده زبان دارت و Flutter به عنوان بستر اصلی توسعه برای سیستم عامل فیوشا مورد استفاده قرار خواهد گرفت.
در ادامه با هم به بررسی ویژگی های مختلف فریموورک Flutter خواهیم پرداخت.
داستان آغاز فلاتر Flutter
![](https://studiomoon.site/uploads/2024/5/4/1630326510141_1714834524.png)
پروژه فلاتر ابتدا در سال ۲۰۱۵ توسط شرکت گوگل شروع شد. ایده اصلی پشت این پروژه بود که توسعه دهندگان بتوانند برنامه هایی با کیفیت بالا و تجربه کاربری عالی برای تمامی پلتفرم های موبایل و وب تولید کنند.
فلاتر از زبان Dart استفاده می کند و با استفاده از این زبان و ابزارهای متنوعی که فراهم می کند، توسعه دهندگان می توانند برنامه های قابل حمل و کارآمد برای iOS و Android را تولید کنند.
با انتشار نسخه ۱٫۰٫۰ در دسامبر ۲۰۱۸، فلاتر به عنوان یکی از محبوب ترین فریمورک های موبایل توسعه داده شده و همچنان به شدت توسعه پیدا می کند.
پس از ایجاد فریمورک فلاتر، توسعه دهندگان برای ایجاد برنامه های موبایل، وب و دسکتاپ، از این فریمورک استفاده کردند.
فلاتر با استفاده از زبان برنامه نویسی Dart، توسعه دهندگان را قادر میسازد تا برنامههایی با رابط کاربری زیبا و پویا ایجاد کنند که با سیستم عاملهای مختلف سازگاری دارند.
استفاده از متریال دیزاین در فلاتر، همچنین به توسعه دهندگان کمک میکند تا رابط کاربری زیبایی را در برنامههای خود پیاده سازی کنند. به همین دلیل، فلاتر به یکی از محبوبترین فریمورکهای توسعه برنامههای موبایل و وب تبدیل شده است.
زبان برنامه نویسی دارت Dart
زبان دارت توسط لارس بک، مهندس نرمافزار دانمارکی، اختراع شده است.
او زبان دارت را با هدف ساخت یک زبان برنامه نویسی با قابلیتهایی برای ساخت برنامههای وب ایمن، سریع و انعطافپذیر طراحی کرد.
لارس بک با طراحی دارت میخواست زبانی را ایجاد کند که بتواند در هر دستگاهی، از جمله دستگاههای موبایل و وبسرورها، به خوبی عمل کند.
همچنین، او به دنبال ساخت یک زبانی بود که از خطاهایی که در زبانهای دیگر وجود دارد، جلوگیری کند.
به همین دلیل دارت از جمله زبانهایی است که برای برنامهنویسان ساده و قابل فهم است و با استفاده از آن میتوان به سرعت برنامههای کاربردی وب و دسکتاپ توسعه داد.
گوگل به مخترع زبان دارت به نام Lars Bak جایزه میلیون دلاری داده است. این جایزه در سال ۲۰۱۴ به او تعلق گرفت و به عنوان تقدیر از کار و تلاشهای او در طراحی و توسعه این زبان برای برنامه نویسی وب و سرورها به او اعطا شد.
ویژگی های فلاتر
![](https://studiomoon.site/uploads/2024/5/4/ic4xhwlaljlw_1714834591.webp)
یکی از ویژگیهای مهم فلاتر، وجود ویجتها (Widgets) قابل ترکیب با هم است که به برنامهنویسان این امکان را میدهد تا رابط کاربری برنامه خود را با استفاده از این ویجتها بسازند.
این ویجتها از طریق یک درخت ویجتها (Widget Tree) در کنار هم قرار میگیرند و به صورت شخصیسازیپذیر هستند. همچنین، فلاتر از انیمیشنها و تحرکات غنی پشتیبانی میکند که باعث بهبود تجربه کاربری در برنامهها میشود.
از دیگر ویژگیهای فلاتر میتوان به معماری Reactive و Reactive Programming که در آن اطلاعات بصورت Reactive توسط برنامه پردازش میشود و ویژگی Hot Reload که به برنامهنویسان این امکان را میدهد که تغییرات خود را به صورت فوری در برنامه ببینند و در صورت نیاز اصلاح کنند اشاره کرد.
Hot Reload
با استفاده از این قابلیت سرعت شما در برنامه نویسی بسیار افزایش خواهد یافت.در این ویژگی نیاز نیست که هربار با ایجاد تغییر برای مشاهده آن مجددا کد های خود را کامپایل کنید بلکه Hot Reloading این کار و در سریع ترین زمان با ایجاد تغییرات لازم برای شما انجام خواهد داد.
برنامه نویسی واکنشگرا یا Reactive
فلاتر ویژگی های فریموورک های مختلف و تلفیق کرده و در اختیار شما قرار میدهد. یکی از این امکانات برنامه نویسی Reactive می باشد.
برنامه نویسی واکنشگرا در فلاتر به معنای توانایی برنامه نویسی در واکنش به تغییرات در داده ها و وضعیت های مختلف است.
این ویژگی به معنای این است که وقتی کاربر با برنامه تعامل می کند و اطلاعات را وارد می کند یا وضعیتی تغییر می کند،
برنامه باید به سرعت و به صورت فوری به این تغییرات واکنش نشان دهد و نتیجه را به کاربر نمایش دهد.
در فلاتر برنامه نویسی واکنشگرا به وسیله Stream API پیادهسازی شده است.
Stream API به برنامه نویسان اجازه میدهد که به راحتی با استفاده از Stream و StreamBuilder، برنامههایی با رفتار واکنشگرا بسازند
استفاده دوباره
یکی از ویژگی های فلاتر که باعث میشه سرعت توسعه شما افزایش پیدا کند قابلیت استفاده مجدد از کد ها می باشد.
در واقع ویجت هایی که شما طراحی میکنید را میتونید داخل پروژه های بعدی خود نیز به راحتی استفاده کنید و تفاوتی ندارد که برای موبایل این کار و انجام میدید یا یک وب اپلیکیشن.
در فلاتر، شما میتوانید کامپوننتهایی را طراحی کنید که به راحتی در سراسر برنامه قابل استفاده و باز استفاده باشند. این ویژگی به برنامهنویسان اجازه میدهد که بخشهای مشابه از کد را با استفاده از کامپوننتهایی که قبلا طراحی کردهاند، باز استفاده کنند.
این کار باعث بهبود قابل توجه در کارایی برنامه و همچنین کاهش زمان و هزینه توسعه آن میشود. به علاوه، استفاده مجدد از کامپوننتها باعث افزایش قابلیت تست و کیفیت برنامه نیز خواهد شد.
Flutter برای چه کسانی مناسب می باشد؟
فریموورک Flutter برای آن دسته از برنامه نویسانی که به دنبال راهی سریعتر برای طراحی اپلیکیشن موبایل هستند و یا اشخاصی که میخواهند با سرمایه کم کاربران زیادی جذب کنند مناسب است.
همچنین Flutter به مدیران پروژه این امکان و میدهد تا تیم فنی کوچکتری برای بخش طراحی موبایل خود تشکیل دهند.
متن باز
متن باز یا اپن سورس بودن فلاتر باعث شده که برنامه نویسان مختلف این امکان و داشته باشند تا پکیج و کتابخونه های بسیار زیادی و برای استفاده عموم توسعه دهند.
عملکرد عالی
در مقایسه با فریمورک React Native از نظر عملکراین Flutter و زبان دارت هست که دست بالا را دارد.
فلاتر از یک موتور گرافیکی به نام Skia استفاده می کند که به طور خاص برای پردازش گرافیکی طراحی شده است. این باعث می شود که فلاتر در عملکرد و سرعت بهتری نسبت به React Native داشته باشد
ساختار Flutter
در فریمورک Flutter تمام عناصر رابط کاربری یک ویجت هستند. ویجت ها نقش View ها در برنامه نویسی اندروید را دارند که شاید براتون آشنا باشه اگر قبلا کار کرده باشید.
ویجت ها همچنین به دو نوع Stateless و Stateful تقسیم می شوند.
اگر ویجتی که میخواید استفاده کنید نیازی به ذخیره سازی اطلاعاتی نداره از نوع Stateless بهتر هست که استفاده کنید.
اما اگر ویجت رابط کاربری قرار هست که یک سری اطلاعات مختلف و ذخیره کند مثلا یک فرم ورود اطلاعات
در این حالت شما باید حتما از ویجت های نوع Stateful استفاده کنید.
تجربه کاربری زیبا
تجربه کاربری فلاتر به شما این امکان و میدهد که بدون هیچ محدودیتی طرح های خود را عملی کنید و زمان زیادی را صرف یادگیری نحوه پیاده سازی آن نکنید. همچنین طراحان بدون در نظر گرفتن محدودیت های فنی میتوانند خلاقیت خود را بروز دهند و رابط های کاربری بسیار زیبا خلق کنند.
معماری فلاتر
فلاتر به عنوان یک سیستم لایهای و قابل گسترش طراحی شده است.
این سیستم به صورت مجموعهای از کتابخانههای مستقل وجود دارد که هر کدام به لایه زیرین خود وابسته هستند.
این لایهها به صورت مستقل از یکدیگر عمل میکنند و هر کدام میتوانند بدون تاثیر بر سایر لایهها تغییر یا جایگزین شوند
این ساختار انعطافپذیری بالایی را برای توسعهدهندگان فراهم میکند و به آنها اجازه میدهد تا مؤلفههای مختلف Flutter را با توجه به نیازهای خود سفارشیسازی کنند.
از نظر سیستم عامل اصلی، برنامههای Flutter مانند هر برنامه بومی دیگر بستهبندی میشوند.
یک جاسازیکننده ( embedder ) خاص پلتفرم، نقطه ورودی را فراهم میکند، با سیستم عامل اصلی برای دسترسی به خدماتی مانند سطوح رندرینگ، دسترسپذیری و ورودی هماهنگ میشود و حلقه رویداد پیام را مدیریت میکند.
جاسازیکننده به زبانی مناسب برای پلتفرم نوشته شده است: در حال حاضر جاوا و سیپلاسپلاس برای اندروید، Objective-C/Objective-C++ برای iOS و macOS و سیپلاسپلاس برای ویندوز و لینوکس.
با استفاده از جاسازیکننده، کد فلاتر میتواند به عنوان یک ماژول در یک برنامه موجود ادغام شود، یا خود کد میتواند کل محتوای برنامه باشد.
![](https://studiomoon.site/uploads/2024/5/4/archdiagram-1024x840_1714835315.webp)
موتور فلاتر بخش اصلی چارچوب Flutter است که وظیفه اصلی رندر کردن رابط کاربری و اجرای برنامههای Flutter را بر عهده دارد.
این موتور به زبان سیپلاسپلاس نوشته شده است تا عملکرد بالایی داشته باشد و بتواند با سیستم عاملهای مختلف تعامل داشته باشد.
این موتور پیادهسازی سطح پایینی از API اصلی Flutter را ارائه میدهد، از جمله گرافیک (از طریق Impeller در iOS و در حال ورود به اندروید و Skia در سایر پلتفرمها)، چیدمان متن، ورودی/خروجی فایل و شبکه، پشتیبانی از دسترسپذیری، معماری پلاگین، و همچنین یک محیط اجرای Dart و ابزارهای کامپایل را در اختیار توسعهدهندگان قرار میدهد تا بتوانند برنامههای Flutter را توسعه دهند.
موتور فلاتر از طریق کتابخانه dart:ui در اختیار فریمورک Flutter قرار میگیرد.
این کتابخانه کد سیپلاسپلاس زیرین را در کلاسهای دارت پوشش میدهد و عناصر اولیه سطح پایین را مانند کلاسهایی برای کنترل ورودی، گرافیک و زیرسیستمهای رندر متن در اختیار قرار میدهد.
فریمورک فلاتر اجزای اولیه و ضروری برای ساخت برنامههای موبایل را فراهم میکند، اما بسیاری از ویژگیهای پیشرفتهتر و خاص مانند دوربین، دسترسی به وبویو، انیمیشنها و غیره به صورت پکیجهای جداگانه ارائه میشوند.
وجود این پکیجها باعث میشود فریمورک Flutter سبکتر و انعطافپذیرتر باشد و توسعهدهندگان بتوانند فقط پکیجهای مورد نیاز خود را به پروژه اضافه کنند.
ساختار یک اپلیکیشن فلاتر
![](https://studiomoon.site/uploads/2024/5/4/image_1714835292.png)
دیاگرام بالا اجزای تشکیل دهنده یک برنامه فلاتر عادی را نشان می دهد. این دیاگرام نشان می دهد که موتور Flutter در کجا قرار دارد، مرزهای API را مشخص می کند و مخازن محل نگهداری هر جزء را نشان می دهد.
بخش Dart App
- ویجتها را به رابط کاربری مورد نظر UI متصل میکند.
- منطق اپلیکیشن را پیادهسازی میکند.
- متعلق به توسعهدهنده برنامه است.
بخش Framework
- API سطح بالاتری را برای ایجاد برنامههای با کیفیت فراهم میکند (به عنوان مثال، ویجتها، تست برخورد، تشخیص حرکت، دسترسیپذیری، ورودی متن).
- درخت ویجت برنامه را با یک صحنه ترکیب میکند.
بخش Engine
- پیادهسازی سطح پایین APIهای اصلی فلاتر را ارائه میدهد (به عنوان مثال، گرافیک، طرحبندی متن، ).
- عملکرد خود را به فریمورک با استفاده از API dart:ui ارائه میدهد.
- با استفاده از API Embedder موتور با یک پلتفرم خاص ادغام میشود.
بخش Embedder
- با سیستم عامل اصلی برای دسترسی به خدماتی مانند سطوح رندرسازی، دسترسیپذیری و ورودی هماهنگ میشود.
- حلقه رویداد را مدیریت میکند.
- API خاص پلتفرم را برای ادغام Embedder در برنامهها ارائه میدهد.
بخش Runner
- قطعاتی را که توسط API خاص پلتفرم Embedder ارائه میشوند، به یک بسته برنامه قابل اجرا در پلتفرم هدف ترکیب میکند.
- بخشی از قالب برنامه ایجاد شده توسط flutter create است و متعلق به توسعهدهنده برنامه است.
فلاتر بهتر است یا کاتلین؟
پاسخ به این سوال به نیازها و اهداف شما بستگی دارد.
کاتلین زبان رسمی گوگل برای توسعه اپلیکیشن های اندروید میباشد که برنامه نویسان اندرویدی از آن استفاده میکنند.
فلاتر یک فریمورک برای طراحی اپلیکیشن های مبتنی بر اندروید, وب, iOS و دسکتاپ میباشد.
زبان کاتلین امکانات بیشتری را در اختیار برنامه نویسان در مسائل فنی مثل دسترسی به بخش های پایینتری از سیستم عامل میدهد.
اگر هدف شما تنها طراحی اپلیکیشن اندروید میباشد کاتلین میتواند بهترین گزینه باشد. اما اگر قصد دارید برای پلتفرم های مختلف اپلیکیش طراحی کنید فلاتر گزینه مناسبی است.
چه شرکت هایی از فلاتر استفاده میکنند؟
شرکت های معتبر بسیار زیادی در سراسر دنیا از فریمورک Flutter برای طراحی محصولات خود استفاده میکنند همانند شرکت گوگل, BMW, علی بابا, Ebay, Square و…
شرکت BMW با استفاده فریمورک فلاتر اپلیکیشن MY BMW را برای سیستم عامل های اندروید و iOS منتشر کرده است.
آینده شغلی فلاتر چگونه است
با توجه به روند رو به رشد استفاده از فلاتر در توسعه برنامههای موبایل، وب و دسکتاپ، میتوان گفت آینده شغلی فلاتر و توسعه برنامههای مرتبط با آن بسیار خوب است.
با توجه به اینکه فلاتر در حال حاضر توسط شرکتهای بزرگی مانند گوگل، Alibaba و BMW استفاده میشود و تعداد برنامههایی که با این فریمورک توسعه داده میشود رو به افزایش است، پیش بینی میشود که استفاده از فلاتر و توسعه برنامههای موبایل و وب با این فریمورک در آینده به شدت گسترش خواهد یافت و بازار کار در این حوزه نیز رونق خواهد گرفت.
شروع آموزش برنامه نویسی Flutter
برای شروع آموزش فلاتر شما در ابتدا باید زبان برنامه نویسی دارت Dart و در حد متوسط بتونید کار کنید.
اگر سابقه برنامه نویسی با زبان های دیگر و دارید خیلی زود میتونید زبان Dart و یاد بگیرید اما اگر پیش زمینه ای در برنامه نویسی ندارید بهتر هست تا سطح برنامه نویسی شی گرا پیش برید.
زبان دارت توسط گوگل در ابتدا برای استفاده در برنامه نویسی وب ایجاد شد اما در حال حاضر امکان طراحی اپلیکیشن با آن نیز فراهم هست.
مزایای زبان دارت:
- سرعت بالا برنامه به دلیل کامپایل شدن هنگام اجرا
- یادگیری آسان
- پیاده سازی انیمیشن های مختلف به شکل ساده
- ساخت برنامه های پویا و ایستا
- امکان استفاده در برنامه نویسی سرور
نیازمندی های لازم برای یادگیری فلاتر
برای یادگیری برنامه نویسی فلاتر شما به امکانات زیادی نیاز ندارید کافیست فقط به لیست زیر توجه کنید.
- دسترسی به کامپیوتر شخصی
- داشتن اتصال اینترنت
- تلاش و پشتکار
اگر سابقه برنامه نویسی ندارید ابتدا با مفاهیم ساده و بنیادی برنامه نویسی در زبان دارت شروع کنید.
سپس بعد از انجام تمرین های گوناگون وارد مباحث پیشرفته برنامه نویسی شوید و با تسلط بر این بخش میتوانید به سراغ فریمورک فلاتر بروید.
سوالات متداول فلاتر
فلاتر چیست؟
فلاتر یک فریمورک برنامه نویسی موبایل به زبان دارت است که توسط شرکت گوگل معرفی شده است. با استفاده از این فریمورک میتوانید برای سیستم عامل های اندروید و iOS اپلیکیشن موبایل تولید کنید.
زبان برنامه نویسی فلاتر چیست؟
فلاتر از زبان برنامه نویسی Dart که توسط گوگل معرفی شده است استفاده میکند. این زبان شبیه به جاوا است و اگر یادگیری بسیار آسانی دارد. همچنین میتوانید از کتابخانه های زبان جاوا, کاتلین و سویفت نیز در فلاتر استفاده کنید.
فلاتر برای برنامه نویسی وب کاربرد دارد؟
با فریمورک فلاتر علاوه بر برنامه نویسی موبایل میتوانید وب اپلیکیشن هایی که در مرور اجرا میشوند را نیز طراحی کنید. علاوه بر پشتیبانی از وب میتوانید برای دسکتاپ و ویندوز هم برنامه نویسی انجام دهید.