Flutter یک چارچوب توسعه نرمافزاری کراس پلتفرم است که در سال 2015 توسط گوگل ارائه شد و اولین نسخه آن را در می 2017 منتشر شد. Flutter امروزه به طور پیوسته رشد کرده است و امکاناتی را نه تنها برای توسعه موبایل iOS و Android، بلکه برای برنامههای وب و دسکتاپ فراهم کرده است.که میتوان با استفاده از آن و داشتن یک تیم برنامه نویسی و یک بار کدنویسی ، برای تمامی پلتفرم ها نرم افزار تولید و عرضه کرد.
زبان دارت(زبانی که فلاتر از آن استفاده میکند)

قبل از ادامه بیایید کمی با دارت که زبان مود استفاده ی فلاتر است آشنا شویم.دارت یک زبان برنامه نویسی شی گرا است که اولین بار توسط گوگل در سال 2011 رونمایی شد. از آن زمان دارت با انتشار ویژگی های مختلف به طور پیوسته تکامل یافته است. یکی از مهمترین ویژگی های دارت وجود “dart2native” است که امکان کامپایل کدهای نوشته شده با زبان دارت را به کد بومی سیستم عامل های مختلف کامپیوتر مانند ویندوز،لینوکس و مک فراهم میکند. جدا از این، کد دارت را می توان بصورت مستقل درآورده و اجرا کرد و یا بصورت کد جاوا اسکریپت کامپایل کرد. در مورد آخر با کامپایل کردن به جاوا اسکریپت می توان برنامه های Dart را در هر مرورگر وب مدرنی اجرا کرد.
به طور کلی، مطالعه زبان دارت آسان است. نحو آن بسیار شبیه به زبان های جاوا، سوئیفت یا کاتلین است. علاوه بر این، کیت توسعه نرمافزار دارت (SDK) با یک ماشین مجازی دارت (VM) ارائه میشود که به شما امکان میدهد کد را در یک محیط خط فرمان (CLI) بسازید و اگر با CLI آشنایی ندارید، میتوانید در دارت پد اجرا کنید. DartPad یک ویرایشگر آنلاین است که دسترسی به API Dart را فراهم می کند و به شما امکان می دهد کد Dart را کامپایل کنید.
فریم ورک فلاتر

همانطور که قبلا ذکر شد، فریم ورک Flutter برای اولین بار توسط گوگل در سال 2015 رونمایی شد. نام رمز آن “Sky” بود و بر روی سیستم عامل اندروید اجرا می شد. اولین نسخه پایدار در 4 دسامبر 2018 ارائه شد و در 6 می 2020، کیت توسعه نرم افزار دارت (Dart SDK) نسخه 2.18 و Flutter نسخه 1.17 با ارائه یک بیلد جدید و ادغام Metal API منتشر شد. این مورد باعث بهبود عملکرد برنامه ها در پلتفرم iOS شد.
این فریم ورک با استفاده از زبان های C، C++ و دارت نوشته شده است و از موتور گرافیکی اسکیا گوگل برای رندر رابط کاربری استفاده می کند. این موتور گرافیکی برای محصولات شناخته شده ای مانند Google Chrome، Chrome OS، Chromium OS، Mozilla Firefox، Mozilla Thunderbird، Android، Firefox OS و اکنون Flutter استفاده می شود.
Flutter با استفاده از ماشین مجازی دارت (VM) در سیستم عامل های ویندوز، لینوکس و macOS اجرا می شود. Dart VM از یک کامپایلر زمان اجرا (JIT) استفاده میکند که ویژگی هایی برای صرفهجویی در زمان توسعه مانند hot-reloading را فراهم میکند. در حالی که توسعه دهنده برنامه موبایل را می نویسد و اشکال زدایی می کند، کامپایلر JIT، کد جدیدی را به برنامه در حال اجرا تزریق می کند. این مورد باعث ایجاد ویژگی hot-reloading میشود، که در اکثر موارد میتوان تغییرات ایجاد شده در کد را بلافاصله در برنامه ی در حال اجرا بدون نیاز به راه اندازی مجدد یا از دست رفتن حالت برنامه مشاهده کرد. که در نهایت باعث صرفه جویی در وقت توسعه دهندگان می شود.
وقتی نوبت به انتشار برنامه می رسد، Dart VM از کامپایل پیش از زمان (AOT) استفاده می کند که بیشتر کد Dart را به کد ماشینی با پلتفرم و سیستم عامل خاص تبدیل می کند و کارایی بالای Flutter را در دستگاه های تلفن همراه و رایانه ها ممکن می کند.
چارچوب فلاتر با استفاده از برخی اصول طراحی شده است که باید به طور جداگانه توضیح داده شود. این اصول عبارتند از: «همه چیز یک ویجت است»، «ترکیب > وراثت»، «درخت ویجت».
در Flutter تقریبا همه چیز یک ویجت است و اسکلت اصلی برنامه تشکیل میدهد. در مقایسه با سایر فریم ورکها، فلاتر controller ، view و layout جداگانه ندارد. تقریبا همه چیز در توسعه ی نرم افزار با فلاتر در ساختن ویجت ها بصورت یک ساختمان خلاصه میشود. و تمام قسمت های بصری و کنترل منطق برنامه در آن جا میگیرد(ادغام ظاهر و منطق) و عناصری که ظاهر برنامه رو هم کنترل میکنند همگی از نوع ویجت هستند. یک ویجت میتواند یک دکمه ی منحصر به فرد، قالب نمایش عناصر یا یک صفحه ی پاپ آپ جداگانه باشد.
رویکرد ترکیب بهتر از وراثت است. اغلب ویجت ها از ویجت های کوچکتر دیگری تشکیل شده اند و این رویکرد مبتنی بر ترکیب است. استفاده از Flutter API به شما امکان می دهد چندین ویجت را با هم ترکیب کنید تا به چیزی که دقیقا میخواهید برسید.
ما میتوانیم در برنامه نویسی از طریق فریم ورک فلاتر و زبان دارت برنامه هایی در نهایت سادگی در نحوه ی کدنویسی و کنترل ظاهر بنویسیم و آنها را برای انواع پلتفرم عرضه کنیم.
به این شیوه میتوان یک تیم برنامه نویسی و یک کد برای برنامه داشت اما برنامه تولید شده را برای تمامی پلتفرم ها عرضه کرد.