اگر در زمینه برنامه نویسی فعالیت کنید یا علاقه مند به آن باشید احتمالا نام فریمورک فلاتر به گوش شما خورده است.
فریموورک متن باز فلاتر (Flutter ) توسط گوگل برای اولین در سال 2017 رونمایی شد, این فریموورک به برنامه نویسان و توسعه دهندگان این امکان را میدهد که با یک بار نوشتن کد خروجی مخصوص اندروید و iOS برای اپلیکیشن خود بگیرند.
در سال 2015 یکی از مهندسان شرکت گوگل پروژهاي به نام SKY را براي مدیران خود ارائه کرد, که به وسیله آن بدون استفاده از زبان برنامه نویسی جاوا یک اپلیکیشن اندرویدي را طراحی و در فروشگاه گوگل قرار داده بود.
در مسیر توسعه این اپلیکیشن از زبان برنامه نویسی استفاده شده بود، که این زبان را شرکت گوگل معرفی کرده بود, اما استفاده و کاربرد آنچنانی تا آن زمان نداشت. زبان برنامه نویسی مورد نظر همان زبان دارت میباشد.
هسته اصلی فلاتر با استفاده از زبان های C, C++ و دارت توسعه داده شده است. برای پیاده سازی موتور گرافیکی نیز از Skia کمک گرفته شده است.
در حال حاضر فلاتر امکان طراحی برنامه برای تمام پلتفرم های موبایل, وب و دسکتاپ را دارد.
نکته مثبت Flutter نسبت به فریموورک های چند سکویی مثل زمارین و فون گپ خروجی Native اپلیکیشن می باشد به عبارت دیگر میان اپلیکیشن اندرویدی که با فلاتر توسعه داده میشود یا جاوا هیچ فرقی وجود ندارد.
زبان مورد استفاده در فریموورک Flutter زبان توسعه یافته توسط گوگل به نام دارت Dart می باشد که یک زبان شی گرا و سطح بالا با شباهت به جاوا می باشد.
همچنین گوگل اطلاع داده است که در آینده زبان دارت و Flutter به عنوان بستر اصلی توسعه برای سیستم عامل فیوشا مورد استفاده قرار خواهد گرفت.
در ادامه با هم به بررسی ویژگی های مختلف فریموورک Flutter خواهیم پرداخت.
در حال حاضر آخرین نسخه منتشر شده برای فلاتر نسخه فلاتر 3.16 میباشد.
پروژه فلاتر ابتدا در سال ۲۰۱۵ توسط شرکت گوگل شروع شد. ایده اصلی پشت این پروژه بود که توسعه دهندگان بتوانند برنامه هایی با کیفیت بالا و تجربه کاربری عالی برای تمامی پلتفرم های موبایل و وب تولید کنند.
فلاتر از زبان Dart استفاده می کند و با استفاده از این زبان و ابزارهای متنوعی که فراهم می کند، توسعه دهندگان می توانند برنامه های قابل حمل و کارآمد برای iOS و Android را تولید کنند.
با انتشار نسخه ۱٫۰٫۰ در دسامبر ۲۰۱۸، فلاتر به عنوان یکی از محبوب ترین فریمورک های موبایل توسعه داده شده و همچنان به شدت توسعه پیدا می کند.
پس از ایجاد فریمورک فلاتر، توسعه دهندگان برای ایجاد برنامه های موبایل، وب و دسکتاپ، از این فریمورک استفاده کردند.
فلاتر با استفاده از زبان برنامه نویسی Dart، توسعه دهندگان را قادر میسازد تا برنامههایی با رابط کاربری زیبا و پویا ایجاد کنند که با سیستم عاملهای مختلف سازگاری دارند.
استفاده از متریال دیزاین در فلاتر، همچنین به توسعه دهندگان کمک میکند تا رابط کاربری زیبایی را در برنامههای خود پیاده سازی کنند. به همین دلیل، فلاتر به یکی از محبوبترین فریمورکهای توسعه برنامههای موبایل و وب تبدیل شده است.
زبان دارت توسط لارس بک، مهندس نرمافزار دانمارکی، اختراع شده است.
او زبان دارت را با هدف ساخت یک زبان برنامه نویسی با قابلیتهایی برای ساخت برنامههای وب ایمن، سریع و انعطافپذیر طراحی کرد.
لارس بک با طراحی دارت میخواست زبانی را ایجاد کند که بتواند در هر دستگاهی، از جمله دستگاههای موبایل و وبسرورها، به خوبی عمل کند.
همچنین، او به دنبال ساخت یک زبانی بود که از خطاهایی که در زبانهای دیگر وجود دارد، جلوگیری کند.
به همین دلیل دارت از جمله زبانهایی است که برای برنامهنویسان ساده و قابل فهم است و با استفاده از آن میتوان به سرعت برنامههای کاربردی وب و دسکتاپ توسعه داد.
گوگل به مخترع زبان دارت به نام Lars Bak جایزه میلیون دلاری داده است. این جایزه در سال ۲۰۱۴ به او تعلق گرفت و به عنوان تقدیر از کار و تلاشهای او در طراحی و توسعه این زبان برای برنامه نویسی وب و سرورها به او اعطا شد.
یکی از ویژگیهای مهم فلاتر، وجود ویجتها (Widgets) قابل ترکیب با هم است که به برنامهنویسان این امکان را میدهد تا رابط کاربری برنامه خود را با استفاده از این ویجتها بسازند.
این ویجتها از طریق یک درخت ویجتها (Widget Tree) در کنار هم قرار میگیرند و به صورت شخصیسازیپذیر هستند. همچنین، فلاتر از انیمیشنها و تحرکات غنی پشتیبانی میکند که باعث بهبود تجربه کاربری در برنامهها میشود.
از دیگر ویژگیهای فلاتر میتوان به معماری Reactive و Reactive Programming که در آن اطلاعات بصورت Reactive توسط برنامه پردازش میشود و ویژگی Hot Reload که به برنامهنویسان این امکان را میدهد که تغییرات خود را به صورت فوری در برنامه ببینند و در صورت نیاز اصلاح کنند اشاره کرد.
با استفاده از این قابلیت سرعت شما در برنامه نویسی بسیار افزایش خواهد یافت.در این ویژگی نیاز نیست که هربار با ایجاد تغییر برای مشاهده آن مجددا کد های خود را کامپایل کنید بلکه Hot Reloading این کار و در سریع ترین زمان با ایجاد تغییرات لازم برای شما انجام خواهد داد.
فلاتر ویژگی های فریموورک های مختلف و تلفیق کرده و در اختیار شما قرار میدهد. یکی از این امکانات برنامه نویسی Reactive می باشد.
برنامه نویسی واکنشگرا در فلاتر به معنای توانایی برنامه نویسی در واکنش به تغییرات در داده ها و وضعیت های مختلف است.
این ویژگی به معنای این است که وقتی کاربر با برنامه تعامل می کند و اطلاعات را وارد می کند یا وضعیتی تغییر می کند،
برنامه باید به سرعت و به صورت فوری به این تغییرات واکنش نشان دهد و نتیجه را به کاربر نمایش دهد.
در فلاتر برنامه نویسی واکنشگرا به وسیله Stream API پیادهسازی شده است.
Stream API به برنامه نویسان اجازه میدهد که به راحتی با استفاده از Stream و StreamBuilder، برنامههایی با رفتار واکنشگرا بسازند
یکی از ویژگی های فلاتر که باعث میشه سرعت توسعه شما افزایش پیدا کند قابلیت استفاده مجدد از کد ها می باشد.
در واقع ویجت هایی که شما طراحی میکنید را میتونید داخل پروژه های بعدی خود نیز به راحتی استفاده کنید و تفاوتی ندارد که برای موبایل این کار و انجام میدید یا یک وب اپلیکیشن.
در فلاتر، شما میتوانید کامپوننتهایی را طراحی کنید که به راحتی در سراسر برنامه قابل استفاده و باز استفاده باشند. این ویژگی به برنامهنویسان اجازه میدهد که بخشهای مشابه از کد را با استفاده از کامپوننتهایی که قبلا طراحی کردهاند، باز استفاده کنند.
این کار باعث بهبود قابل توجه در کارایی برنامه و همچنین کاهش زمان و هزینه توسعه آن میشود. به علاوه، استفاده مجدد از کامپوننتها باعث افزایش قابلیت تست و کیفیت برنامه نیز خواهد شد.
فریموورک Flutter برای آن دسته از برنامه نویسانی که به دنبال راهی سریعتر برای طراحی اپلیکیشن موبایل هستند و یا اشخاصی که میخواهند با سرمایه کم کاربران زیادی جذب کنند مناسب است.
همچنین Flutter به مدیران پروژه این امکان و میدهد تا تیم فنی کوچکتری برای بخش طراحی موبایل خود تشکیل دهند.
متن باز یا اپن سورس بودن فلاتر باعث شده که برنامه نویسان مختلف این امکان و داشته باشند تا پکیج و کتابخونه های بسیار زیادی و برای استفاده عموم توسعه دهند.
در مقایسه با فریمورک React Native از نظر عملکراین Flutter و زبان دارت هست که دست بالا را دارد.
فلاتر از یک موتور گرافیکی به نام Skia استفاده می کند که به طور خاص برای پردازش گرافیکی طراحی شده است. این باعث می شود که فلاتر در عملکرد و سرعت بهتری نسبت به React Native داشته باشد
در فریمورک Flutter تمام عناصر رابط کاربری یک ویجت هستند. ویجت ها نقش View ها در برنامه نویسی اندروید را دارند که شاید براتون آشنا باشه اگر قبلا کار کرده باشید.
ویجت ها همچنین به دو نوع Stateless و Stateful تقسیم می شوند.
اگر ویجتی که میخواید استفاده کنید نیازی به ذخیره سازی اطلاعاتی نداره از نوع Stateless بهتر هست که استفاده کنید.
اما اگر ویجت رابط کاربری قرار هست که یک سری اطلاعات مختلف و ذخیره کند مثلا یک فرم ورود اطلاعات
در این حالت شما باید حتما از ویجت های نوع Stateful استفاده کنید.
تجربه کاربری فلاتر به شما این امکان و میدهد که بدون هیچ محدودیتی طرح های خود را عملی کنید و زمان زیادی را صرف یادگیری نحوه پیاده سازی آن نکنید. همچنین طراحان بدون در نظر گرفتن محدودیت های فنی میتوانند خلاقیت خود را بروز دهند و رابط های کاربری بسیار زیبا خلق کنند.
فلاتر به عنوان یک سیستم لایهای و قابل گسترش طراحی شده است.
این سیستم به صورت مجموعهای از کتابخانههای مستقل وجود دارد که هر کدام به لایه زیرین خود وابسته هستند.
این لایهها به صورت مستقل از یکدیگر عمل میکنند و هر کدام میتوانند بدون تاثیر بر سایر لایهها تغییر یا جایگزین شوند
این ساختار انعطافپذیری بالایی را برای توسعهدهندگان فراهم میکند و به آنها اجازه میدهد تا مؤلفههای مختلف Flutter را با توجه به نیازهای خود سفارشیسازی کنند.
از نظر سیستم عامل اصلی، برنامههای Flutter مانند هر برنامه بومی دیگر بستهبندی میشوند.
یک جاسازیکننده ( embedder ) خاص پلتفرم، نقطه ورودی را فراهم میکند، با سیستم عامل اصلی برای دسترسی به خدماتی مانند سطوح رندرینگ، دسترسپذیری و ورودی هماهنگ میشود و حلقه رویداد پیام را مدیریت میکند.
جاسازیکننده به زبانی مناسب برای پلتفرم نوشته شده است: در حال حاضر جاوا و سیپلاسپلاس برای اندروید، Objective-C/Objective-C++ برای iOS و macOS و سیپلاسپلاس برای ویندوز و لینوکس.
با استفاده از جاسازیکننده، کد فلاتر میتواند به عنوان یک ماژول در یک برنامه موجود ادغام شود، یا خود کد میتواند کل محتوای برنامه باشد.
موتور فلاتر بخش اصلی چارچوب Flutter است که وظیفه اصلی رندر کردن رابط کاربری و اجرای برنامههای Flutter را بر عهده دارد.
این موتور به زبان سیپلاسپلاس نوشته شده است تا عملکرد بالایی داشته باشد و بتواند با سیستم عاملهای مختلف تعامل داشته باشد.
این موتور پیادهسازی سطح پایینی از API اصلی Flutter را ارائه میدهد، از جمله گرافیک (از طریق Impeller در iOS و در حال ورود به اندروید و Skia در سایر پلتفرمها)، چیدمان متن، ورودی/خروجی فایل و شبکه، پشتیبانی از دسترسپذیری، معماری پلاگین، و همچنین یک محیط اجرای Dart و ابزارهای کامپایل را در اختیار توسعهدهندگان قرار میدهد تا بتوانند برنامههای Flutter را توسعه دهند.
موتور فلاتر از طریق کتابخانه dart:ui در اختیار فریمورک Flutter قرار میگیرد.
این کتابخانه کد سیپلاسپلاس زیرین را در کلاسهای دارت پوشش میدهد و عناصر اولیه سطح پایین را مانند کلاسهایی برای کنترل ورودی، گرافیک و زیرسیستمهای رندر متن در اختیار قرار میدهد.
فریمورک فلاتر اجزای اولیه و ضروری برای ساخت برنامههای موبایل را فراهم میکند، اما بسیاری از ویژگیهای پیشرفتهتر و خاص مانند دوربین، دسترسی به وبویو، انیمیشنها و غیره به صورت پکیجهای جداگانه ارائه میشوند.
وجود این پکیجها باعث میشود فریمورک Flutter سبکتر و انعطافپذیرتر باشد و توسعهدهندگان بتوانند فقط پکیجهای مورد نیاز خود را به پروژه اضافه کنند.
دیاگرام بالا اجزای تشکیل دهنده یک برنامه فلاتر عادی را نشان می دهد. این دیاگرام نشان می دهد که موتور Flutter در کجا قرار دارد، مرزهای API را مشخص می کند و مخازن محل نگهداری هر جزء را نشان می دهد.
بخش Dart App
بخش Framework
بخش Engine
بخش Embedder
بخش Runner
پاسخ به این سوال به نیازها و اهداف شما بستگی دارد.
کاتلین زبان رسمی گوگل برای توسعه اپلیکیشن های اندروید میباشد که برنامه نویسان اندرویدی از آن استفاده میکنند.
فلاتر یک فریمورک برای طراحی اپلیکیشن های مبتنی بر اندروید, وب, iOS و دسکتاپ میباشد.
زبان کاتلین امکانات بیشتری را در اختیار برنامه نویسان در مسائل فنی مثل دسترسی به بخش های پایینتری از سیستم عامل میدهد.
اگر هدف شما تنها طراحی اپلیکیشن اندروید میباشد کاتلین میتواند بهترین گزینه باشد. اما اگر قصد دارید برای پلتفرم های مختلف اپلیکیش طراحی کنید فلاتر گزینه مناسبی است.
شرکت های معتبر بسیار زیادی در سراسر دنیا از فریمورک Flutter برای طراحی محصولات خود استفاده میکنند همانند شرکت گوگل, BMW, علی بابا, Ebay, Square و…
شرکت BMW با استفاده فریمورک فلاتر اپلیکیشن MY BMW را برای سیستم عامل های اندروید و iOS منتشر کرده است.
با توجه به روند رو به رشد استفاده از فلاتر در توسعه برنامههای موبایل، وب و دسکتاپ، میتوان گفت آینده شغلی فلاتر و توسعه برنامههای مرتبط با آن بسیار خوب است.
با توجه به اینکه فلاتر در حال حاضر توسط شرکتهای بزرگی مانند گوگل، Alibaba و BMW استفاده میشود و تعداد برنامههایی که با این فریمورک توسعه داده میشود رو به افزایش است، پیش بینی میشود که استفاده از فلاتر و توسعه برنامههای موبایل و وب با این فریمورک در آینده به شدت گسترش خواهد یافت و بازار کار در این حوزه نیز رونق خواهد گرفت.
برای شروع آموزش فلاتر شما در ابتدا باید زبان برنامه نویسی دارت Dart و در حد متوسط بتونید کار کنید.
اگر سابقه برنامه نویسی با زبان های دیگر و دارید خیلی زود میتونید زبان Dart و یاد بگیرید اما اگر پیش زمینه ای در برنامه نویسی ندارید بهتر هست تا سطح برنامه نویسی شی گرا پیش برید.
زبان دارت توسط گوگل در ابتدا برای استفاده در برنامه نویسی وب ایجاد شد اما در حال حاضر امکان طراحی اپلیکیشن با آن نیز فراهم هست.
مزایای زبان دارت:
برای یادگیری برنامه نویسی فلاتر شما به امکانات زیادی نیاز ندارید کافیست فقط به لیست زیر توجه کنید.
اگر سابقه برنامه نویسی ندارید ابتدا با مفاهیم ساده و بنیادی برنامه نویسی در زبان دارت شروع کنید.
سپس بعد از انجام تمرین های گوناگون وارد مباحث پیشرفته برنامه نویسی شوید و با تسلط بر این بخش میتوانید به سراغ فریمورک فلاتر بروید.
فلاتر یک فریمورک برنامه نویسی موبایل به زبان دارت است که توسط شرکت گوگل معرفی شده است. با استفاده از این فریمورک میتوانید برای سیستم عامل های اندروید و iOS اپلیکیشن موبایل تولید کنید.
فلاتر از زبان برنامه نویسی Dart که توسط گوگل معرفی شده است استفاده میکند. این زبان شبیه به جاوا است و اگر یادگیری بسیار آسانی دارد. همچنین میتوانید از کتابخانه های زبان جاوا, کاتلین و سویفت نیز در فلاتر استفاده کنید.
با فریمورک فلاتر علاوه بر برنامه نویسی موبایل میتوانید وب اپلیکیشن هایی که در مرور اجرا میشوند را نیز طراحی کنید. علاوه بر پشتیبانی از وب میتوانید برای دسکتاپ و ویندوز هم برنامه نویسی انجام دهید.
برای شروع آموزش فریمورک فلاتر و زبان برنامه نویسی دارت بدون هیچگونه سابقه برنامه نویسی و یا طراحی اپلیکیشن میتوانید از فصل اول دوره آموزشی اختصاصی مجموعه Flutter-learn استفاده کنید که به شکل کاملا مرتب بروزرسانی میشود.
ایا میشه با flutter برنامه های پیچیده مثل برنامه حسابداری برای موبایل ساخت ؟ یا برای اینجور برنامه ها باید سراغ زبان های native رفت
سلام
شما با فلاتر هر نوع اپلیکیشنی میتونید طراحی کنید تنها محدودیتی که دارید منابع کم اون هست که با دوره های موجود در سایت سعی کردیم این محدودیت تا حدودی کم کنیم.
همچنین شما میتونید از همون کتابخانه و کدهای زبان نیتیو هم استفاده کنید داخل پروژه flutter
سلام و خسته نباشید
خروجی اندروید و ios که میدهد چقدر شبیه هم هستند ؟؟ آیا مقرون به صرفس برم یاد بگیرم یا اینکه نع دو تا رو جدا توسعه بدیم ؟
خروجی ها تقریبا مثل هم هستند و بعضی موارد به شکل المان های نیتیو همون سیستم عامل تبدیل میشه مثلا تب ها توی اندروید و iOS به شکل های مختلف هستند در حالت عادی
سلام اگه خروجی اپلیکیشن اندروید استودیو 5 مگ باشه با فلاتر حجمش چقدر میشه ؟ میخوام بگم توی خروجی نهایی از نظر حجم چقدر تفاوت دارند ؟
سلام
حجم خروجی پروژه اولیه فلاتر 4مگابایت است.
استخدام برنامه نویس فریموورک Flutter با حقوق و مزایای مناسب در شرکت رشد گستران امید
https://jobinja.ir/companies/roshed-gostaran-omid-belaadshapour/jobs/HK3
سلام
جهت خروجی گرفت برای ios نیاز به کامپیوتر مک هست؟
با vmw میشه خروجی گرفت؟
سلام با vm میشه.
رفتی یه متن رو کپی کردی آوردی نوشتی !
اینجا باید ریزتر توضیح بدی که زبان اش چی هست و روی چه بالا اومده
سلام لطفا لینک وبسایتی که ادعا میکنید از اون کپی کردیم و همینجا قرار بدید!
هیچ واژه ای از مطالب وبسایت کپی نیست.
سلام
برای آموزش فلاتر به نظر شما از کجا باید شروع کنم؟
سلام ایا سازگاز با همه یه ورژن هایه اندروید هست؟
بله
با سلام و تشکر بابت مطب بسیار مفیدتون
یک سوالی من داشتم
من برای خودم میخوام به آپ درست کنم بعنوان کتابخونه باشه که فقط هم برای من مهم هست که محل کتاب رو بگه
نه قیمت .. اطلاعات خود کتاب مهم هست که مثلا با نوشتن اسم کتاب نویسنده یا انتشارات و … (فیلدهای مختلف) اون رو سریع برام بیاره
هم میخوام ویندوزی باشه و هم ios
بنظرتون همین فریم ورک رو شروع کنم به یادیری یا پیشنهاد دیگه ای داریم
تشکر
سلام برای اندروید و ios میتونید از همین فلاتر بدون مشکل استفاده کنید اما برای ویندوز هنوز نسخه پایدار اون منتشر نشده که مشخص بشه چقد کارایی داره.
سلام
آیا کدی که برای موبایل می نویسیم دقیقا از همون کد می تونیم خروجی وب(pwa) داشته باشیم یا کدهای وب سایت باید جداگانه توسعه داده بشن؟
سلام بله تقریبا 90% کدها یکی هست فقط برای وب یکم تغییرات ممکن بخواد بعضی قسمتها
تشکر عالی بود
سلام وقت بخیر یه سوال درباره فلاتر داشتم.
آیا این امکان هست که گوگل زبان کاتلین رو بخواد جایگزین دارت کنه ؟ چون تو اپدیت اخری کاتلین ساخت لایه توسط کاتلین شده یه چیزی شبیه به فلاتر و دارت
سلام کسی اطلاعی نمیتونه در حال حاضر داشته باشه از این موضوع اما با توجه به اینکه زبان دارت خیلی شبیه به کاتلین هست بعید میدونم این اتفاق رخ بده.
برای یادگیری فلاتر احتیاج به یادگیری زبان Dart داریم؟
سلام
بله برنامه نویسی در فلاتر به زبان دارت هست.