Fadak.IR راهکارهای فدک
English Русский العربية فارسی
مقالات مدیریت مطالعات زبان


/ فاوا / برنامه نویسی

اندروید - فلاتر Flutter / ری اکت نیتیو React Native / آیونیک ionic


      ری اکت نیتیو(React Native)
      فلاتر
      تاریخچه فلاتر (Flutter)
         چرایی فلاتر
         مزایا و معایب فریمورک فلاتر
         معایب توسعه اپلیکیشن فلاتر
         تست اپلیکیشن‌های فلاتر
         تست یونیت
         تست ویجت
         تست یکپارچه سازی
         توسعه کراس پلتفرم
         آموزش فلاتر
         کاربرد فلاتر
         معماری فلاتر (Flutter)
         تناسب فلاتر با پرژوه‌ها
          فلاتر (Flutter) فراتر از  UI
         مشتریان فلاتر
         اشکال زدایی برنامه‌های Flutter
      فریمورک آیونیک (ionic Framework)
      زامارین ( Xamarin )
      MAUI

ری اکت نیتیو(React Native)

react native(ری اکت نیتیو) یکی از فریمورک‌های جاوااسکرپتی محبوب است که در سال 2015 توسط facebook منتشر شد. این فریمورک بر پایه Javascript و کتابخانه فوق العاده Reactjs توسعه داده شده است و با کمک آن می‌توانید اپلیکیشن‌های Android و Ios به صورت native بسازید.از معروف‌ترین اپلیکیشن‌هایی که با این فریمورک ساخته شده‌اند می‌تواند به اینستاگرام،فیسبوک،Uber و … اشاره کرد.
 این فریمورک‌های یا Framework روی پلتفرم‌های مختلف اجرا می‌شود.

چرا React Native
در حال حاضر زبان‌ها و Frameworkهای زیادی برای توسعه اپلیکیشن‌ها موجوده اما شما با یادگیری اینها فقط میتونید برای یک پلتفرم برنامه بنویسید یا برنامه‌ای که مینویسید native نیست.در سال ۲۰۱۵ فیسبوک با انتشار React Native برنامه نویس‌ها رو به شوک فرو برد و تا حد زیادی خوشحالشون کرد. برنامه نویس‌ها این امکان رو داشتند با استفاده از زبان جاوااسکریپت اپلیکیشن‌هایی بنویسند که روی هر دو سیستم عامل Android و iOS اجرا میشد و خروجی برنامه native بود. اگه علاقه دارین بیشتر در مورد React Native بدونید.
پیش نیازهای  آموزش ری اکت نیتیو(React Native)
با توجه به  اینکه React Native برپایه جاوااسکریپت و reactjs توسعه داده شده است، بنابراین باید به جاوا اسکریپت، ES6 و react js تسلط داشت.

مزایا React Native
    یک بار کد بزن، چند جا استفاده کن 
    با React Native می‌توان برنامه توسعه بده و از زبان Native در کنارش استفاده کن!
    پشتیبانی قوی توسط تیمی بزرگ از برنامه نویسان
    زمان و هزینه
    community فعال
    پشتیبانی فیسبوک

معایب React Native : 
    بروزرسانی بسیار زیاد React Native 
    وابستگی به کتابخونه‌های جانبی

مزایای ری اکت نیتیو
برنامه‌های موبایل Native برنامه‌هایی هستند که بطور مستقیم برای یک پلتفرم و سیستم عامل خاص ساخته شده اند. به طور مثل برای ساخت یک برنامه Native برای اندروید باید از زبان Java و یا Kotlin استفاده کرد و یا برای IOS از swift و یا objective-c و اما فریمورک ری اکت نیتیو که یک خروجی Native مشابه Java و Swift که تا حد زیادی حتی قابل تشخیص از هم نیستند را با یک کد یکسان در اختیار کاربر قرار می‌دهد.
می توان گفت حدود 95 درصد کدها بین هر دو سیستم عامل در روند توسعه مشترک است و گاهی اوقات برای اینکه کاربران احساس native بودن اپلیکیشن را داشته باشند باید از کامپوننت‌های مخصوص استفاده کنید.به طور مثال Toast android یا DatePicker
شرکت‌های مختلفی از کوچک تا بزرگ از react native برای توسعه اپلیکیشن‌های خود استفاده کرده‌اند.به طور مثال : Instagram، Uber Eats، Airbnb، Pinterest و …

    اگر شما یک توسعه دهنده جاوا اسکریپت هستید، به راحتی و با صرف زمان کمتری می‌توانید react native یاد بگیرید و به طور حتم فرصت‌های شغلی جدیدی برای شما ایجاد خواهد شد.
    اگر در یک تیم استارتاپی مشغول به فعالیت هستید و نیاز دارید در کمترین زمان ممکن اپلیکیشن برای محصول خودتون و برای هر دو پلتفرم Android و Ios داشته باشید، react native یک گزینه فوق العاده است.
    اگر به دنبال کاهش هزینه‌های شرکت و صرفه جویی در زمان هستید، react native گزینه‌ای است که باعث میشه شما در قالب یک تیم زمان و هزینه توسعه اپلیکیشن را کاهش دهید.

فلاتر

فلاتر جدیدترین پلتفرم برای ایجاد اپلیکیشن‌ها در دنیای توسعه برنامه‌ها به ویژه موبایلی است. فلاتر یک پلتفرم (Platform)  UI منبع باز و رایگان گوگل است که برای ایجاد اپلیکیش‌های Native استفاده می‌شود. فلاتر که در سال 2017 منتشر شده است، به توسعه دهنده‌ها اجازه می‌دهد که اپلیکیشن‌های موبایلی را با یک زبان برنامه نویسی و یک کد بیس واحد، برای اندروید و iOS بسازند. این قابلیت باعث می‌شود که ساخت اپلیکیشن‌های اندروید و iOS ساده تر و سریع تر بشود.
پلتفرم  فلاتر شامل کیت توسعه نرم (SDK) و کتابخانه UI مبتنی بر ویجت می‌باشد. این کتابخانه شامل انواع عناصر UI قابل استفاده مجدد؛ مانند اسلایدرها، دکمه‌ها و ورودی‌های متنی می‌باشد.
اندروید استدیو
توسعه دهنده‌هایی که اپلیکیشن‌های موبایل را با فریمورک فلاتر می‌سازند، از یک زبان برنامه نویسی استفاده می‌کنند که Dart نامیده می‌شود. دارت با سینتکس مشابه جاوا اسکریپت، یک زبان برنامه نویسی شیء گرا است که که روی توسعه front-end تمرکز دارد.

تاریخچه فلاتر (Flutter)

اولین نسخه فلاتر به نام Sky برای سیستم عامل اندروید ارائه شد. این برنامه در نشست توسعه دهندگان دارت سال 2015 معرفی شد. گوگل در نشست توسعه دهندگان Google در شانگهای در تاریخ 4 دسامبر 2018 اعلام کرد در رویدادی به نام Flutter Live نسخه اول فلاتر را معرفی خواهد کرد. در خلال اصلی روزهای توسعه دهنده Google در شانگهای، Google اعلام کرد انتشار پیش نمایش 2 Flutter که آخرین نسخه بزرگ قبل از Flutter 1.0 است. در تاریخ 4 دسامبر 2018، Flutter 1.0 در رویداد Flutter Live منتشر شد و اولین نسخه "پایدار" Framework را نشان داد. در 11 دسامبر سال 2019، Flutter 1.12 در رویداد Flutter Interactive منتشر شد، اعلام شد که Flutter اولین پلتفرم UI است که برای محاسبات محیطی طراحی شده است. در رویداد Flutter Live اولین نسخه پایدار این فریمورک معرفی و منتشر شد.

چرایی فلاتر

با وجود این که فلاتر یک فریمورک بین پلتفرمی است، کمپانی‌های بیشتر و بیشتری فلاتر را از بین فریمورک‌هایی مانند Xamarin، Cordova و React Native انتخاب می‌کنند.
برخی از مهم‌ترین دلایلی که چرا تیم‌های توسعه فلاتر را انتخاب می‌کنند، در ادامه آورده شده است:
- بهره وری بیشتر. استفاده از همان codebase برای iOS و اندروید، هم در زمان و هم در منابع صرفه جویی می‌کند. ویجت‌های native فلاتر همچنین زمان صرف شده برای تست کردن مشکلات سازگاری با نسخه‌های سیستم عامل‌های متفاوت؛ به حداقل می‌رسد.
- یادگیری آن ساده است. فلاتر به توسعه کننده‌ها اجازه می‌دهد که اپلیکیشن‌های موبایلی native را بدون نیاز به دسترسی به ویجت‌های OEM یا استفاده از تعداد کدهای زیاد تولید کنند. به این ترتیب علاوه بر این که رابط کاربری فلاتر بسیار جذاب است؛ فرآیند ایجاد اپلیکیشن‌های موبایلی را بسیار ساده تر می‌شود.
- عملکرد فوق العاده. کاربران گزارش داده‌اند که یافتن تفاوت‌های بین اپلیکیشن فلاتر و اپلیکیشن native موبایل، بسیار دشوار است.
- مقرون به صرفه. ساختن اپلیکیشن‌های اندروید و iOS با codebase مشابه درواقع ساختن دو تا اپلیکیشن با قیمت یکی است.
- روی IDEهای متفاوت در دسترس است. توسعه دهنده‌ها می‌توانند بین استودیو اندروید و کد VS آزادانه انتخاب کنند تا کد خودشان را روی فلاتر ویرایش کنند.
- مستندسازی فوق العاده و اجتماع پذیری. به لطف مستندسازی گسترده همراه با مواردی که پیگیری آنها ساده است، فلاتر منابع فوق العاده بسیاری برای پاسخگویی به سؤالات شما در اختیار دارد. کاربران فلاتر نیز می‌توانند از انجمن‌هایی مانند Flutter Awesome و Flutter Community بهره مند شده و از تبادل ایده‌ها استفاده کنند.

مزایا و معایب فریمورک فلاتر

علیرغم این که فلاتر هنوز به طور گسترده مورد استفاده قرار نگرفته است، تعداد زیادی از کمپانی‌های تکنولوژی؛ شناسایی پتانسیل آن را آغاز کرده اند. برخی از اپلیکیشن‌های قابل توجه فلاتر Google Ads، eBay Motors، Philips Hue و Xianyu از کمپانی Alibaba می‌باشد.
بیایید باهم نگاهی به مزایا و همچنین معایبی که در فریمورک فلاتر عرضه شده است، بیندازیم.
- ۵ اپلیکیشن یادگیری برنامه نویسی اندروید در گوشی
مزایای توسعه اپلیکیشن فلاتر
فلاتر طیف گسترده‌ای از مزایا را هم برای توسعه دهندگان و هم برای صاحبان کسب و کار فراهم می‌آورد. این فریمورک توانسته است با قیمت معقول، کیفیت خوب و نیز قابلیت استفاده و سرعت عالی را فراهم آورد.
- زمانی که برای هر دو اپلیکیشن‌های iOS و اندروید از یک کد مشابه استفاده می‌شود؛ توسعه سریع تر پیش می‌رود. Codebase منحصر بفردی که فلاتر استفاده می‌کند زمان عرضه به بازار را سرعت می‌بخشد و در عین حال هزینه‌های توسعه اپلیکیشن موبایل را به میزان قابل توجهی کاهش می‌دهد.
- عملکرد اپلیکیشن فلاتر مانند اپلیکیشن‌های بلادرنگ native است. برخلاف دیگر فریمورک‌ها، اپلیکیشن‌های فلاتر برای برقراری ارتباط با عناصر و اجزای native، نیازی به پل زدن ندارد. از آنجایی که این پل‌ها معمولاً مشکلاتی در عملکرد به وجود می‌آورند، عدم استفاده از آنها در فلاتر یک مزیت قطعی به حساب می‌آید.
- ویژگی “hot reload” (بارگذاری مجدد داغ) در فلاتر باعث می‌شود که توسعه دهنده‌ها بتوانند کد روی امولیتورها، سیمولیتورها، یا دستگاه‌های واقعی را تغییر داده و نتایج را در همان لحظه مشاهده کنند. کدهای تغییر یافته سپس بلافاصله در حالی که اپلیکیشن در حال اجرا می‌باشد، بی وقفه مجدداً بارگذاری می‌شود. نیاز به راه اندازی مجدد نیست. این ویژگی باعث می‌شود که ساخت UIها، افزودن ویژگی‌ها و رفع باگ‌ها ساده تر از همیشه باشد.

معایب توسعه اپلیکیشن فلاتر

در حالی که توسعه اپلیکیشن فلاتر مزایای زیادی دارد، اما باید جنبه‌های منفی این فریمورک را نیز در نظر گرفت.
- فلاتر نسبتاً جدید است. در حالی که این فریمورک پلاگین (افزونه)‌ها و عناصر UI بسیاری را ارائه می‌کند، اما فریمورک‌هایی مانند Xamarin و React Native انتخاب‌های نسبتاً بزرگتری را ارائه می‌کنند. با این که فلاتر همیشه به صورت فریمورک شناخته نشده‌ای باقی نمی‌ماند اما فعلاً وضعیت این چنین است.
- زبان برنامه نویسی دارت خیلی محبوب نیسد. در حالی که یک زبان برنامه نویسی فوق العاده است، اما توسعه دهنده‌ها اغلب ترجیح می‌دهند زبان‌هایی مانند جاوا یا کاتلین (Kotlin) را استفاده کنند.
- برخی از عناصر فقط برای اندروید یا فقط برای iOS در دسترس هستند و نه برای هر دو. این نوع عناصر اغلب اندروید را پشتیبانی می‌کنند زیرا فلاتر را گوگل عرضه کرده است و توسعه دهنده‌های اندروید نسبت به توسعه دهنده‌های iOS بیشتر به فلاتر علاقه نشان می‌دهند.

تست اپلیکیشن‌های فلاتر

تست‌های خودکار فلاتر به سه دسته اصلی تقسیم می‌شوند.
-- تست کردن یونیت
-- تست کردن ویجت
-- تست کردن یکپارچه سازی
در حالی که در تست‌های یونیت، یک تابع، کلاس یا متد واحد آزمایش می‌شود، تست‌های ویجت (که به عنوان تست‌های عناصر نیز شناخته می‌شود) یک ویجت واحد را آزمایش می‌کنند. تست‌های یونیت و تست‌های ویجت اغلب تست‌های فلاتر را تشکیل می‌دهند که توسط پوشش کد ردیابی می‌شوند. تست‌های یکپارچه سازی یا یک بخش بزرگ یا کل اپلیکیشن را آزمایش می‌کنند و موارد مهمی که مورد استفاده قرار می‌گیرند را شامل می‌شوند.
Testing a Flutter application With Perfecto
در ادامه هدف هر یک از انواع تست کردن‌ها را بررسی می‌کنیم:

تست یونیت

تست‌های یونیت برای یک اپلیکیشن فلاتر، رفتار یک تابع، یک روش یا یک کلاس واحد را تأیید می‌کند. به عبارت دیگر، تست‌های یونیت تأیید می‌کنند که متد تحت آزمایش، بر اساس ورودی داده شده آیا نتایج مورد انتظار را ارائه می‌کند یا خیر. این تست‌ها به کاربران کمک می‌کند که کدهای قابل نگهداری و قابل آزمایش تری را بنویسند.
کاربران می‌توانند از طریق افزونه‌های فلاتر برای IntelliJ و VSCode تست‌های یونیت خودکار را اجرا بکنند. IntelliJ و VSCode علاوه بر این که از تست‌های در حال اجرا پشتیبانی می‌کنند همچنین می‌توانند حلقه فیدبک سریع تری ارائه بدهند و به کاربران اجازه می‌دهد تا نقاط وقفه‌ای (breakpoint) را تنظیم کنند.

تست ویجت

تست‌های ویجت که در دیگر فریمورک‌های UI از آنها با عنوان تست‌های عناصر نیز یاد می‌شود، تأیید می‌کند که یک UI ویجت در هنگام پاسخگویی به تعاملات خاص، همان طور که انتظار می‌رود رفتار کرده و به نظر می‌آیند. این تست‌ها نسبت به تست یونیت، بسیار جامع تر هستند زیرا چندین کلاس را در بر می‌گیرند و نیازمند یک محیط تست هستند که شرایط مناسب چرخه عمر ویجت را فراهم می‌کند.
با این حال، محیط تست ویجت نسبت به یک سیستم UI توسعه یافته تر، پیاده سازی بسیار ساده تری دارد. کاربران فلاتر باید برای تمام ویجت‌های معمولی که برای اپلیکیشن‌های خود مورد استفاده قرار داده اند؛ تست‌های ویجت بنویسند.

تست یکپارچه سازی

تست‌های یکپارچه سازی یک بخش بزرگی از برنامه یا کل اپلیکیشن را تست می‌کند. این تست‌ها عملکرد اپلیکیشن را تأیید می‌کنند و اطمینان حاصل می‌کنند که تمام ویجت‌ها و سرویس‌های تحت آزمایش، باهم به درستی کار می‌کنند.
کاربران فلاتر تست‌های یکپارچه سازی را یا روی دستگاه‌های حقیقی یا روی دستگاه‌های مجازی مانند امولیتور‌ها و سیمولیتورها انجام می‌دهند. این تست‌ها در دو بخش اجرا می‌شود: به کار گیری اپلیکیشن تحت آزمایش بر روی دستگاه (حقیقی یا مجازی) و سپس هدایت برنامه از یک مجموعه تست‌های مجزا. این بررسی به منظور اطمینان از این موضوع انجام می‌شود که همه چیز همان طور که انتظار می‌رود باهم کار می‌کند.

آموزش فلاتر (Flutter)

آموزش جامع فلاتر (Flutter) و زبان Dart از صفر | کاملا رایگان

Install Flutter on Debian - DEV Community

معرفی فلاتر (Flutter)
فلاتر (Flutter)  یک کیت توسعه نرم افزار UI اوپن سورس است که توسط گوگل ساخته شده است. جهت توسعه برنامه‌های کاربردی برای Android، iOS، Windows، Mac، Linux، Google Fuchsia و وب استفاده می‌شود. نسخه اول Flutter با نام رمزگذاری شده "Sky" شناخته شد و روی سیستم عامل اندروید اجرا شد. این برنامه در اجلاس برنامه نویس Dart 2015 رونمایی شد، با هدف اعلام شده که قادر به ارائه مداوم با سرعت 120 فریم در ثانیه است.
همچنین فلاتر (Flutter) یک فریمورک اوپن است که در سال 2017 توسط گوگل معرفی شد و به کمک آن می‌توانید اپلیکیشن‌های نیتیو (Native) برای اندروید و iOS بسازید. شما به کمک فلاتر می‌توانید با یک بار کدنویسی یک اپلیکیشن زیبا و نیتیو طراحی کنید که روی اندروید و iOS قابل اجرا است. همچنین شما میتوانید طراحی رابط کاربری اپلیکیشن‌های Native که با کاتلین، جاوا و یا سوئیفت می‌نویسید را نیز با Flutter انجام دهید.
فلاتر سهولت توسعه را با عملکردی مشابه عملکرد نیتیو ترکیب می‌کند و در عین حال سازگاری بصری بین پلتفرم‌ها را حفظ می‌کند. زبان برنامه نویسی فلاتر، دارت، در ابتدا به عنوان جایگزینی برای جاوا اسکریپت در نظر گرفته شد. مهمتر از همه، Flutter منبع باز و کاملا رایگان است. در حال حاضر، Flutter با React Native در GitHub و Stack Overflow محبوبیت یکسانی دارد.
فلاتر چیست؟
فلاتر یک فریمورک متن باز برای ایجاد برنامه‌های کاربردی تلفن همراه با کیفیت بالا و کارایی بالا در سراسر سیستم عامل‌های تلفن همراه - اندروید و iOS است. فلاتر یک SDK ساده، قدرتمند، کارآمد و آسان برای نوشتن برنامه تلفن همراه به زبان خود Google، یعنی Dart، ارائه می‌ دهد.
نسخه‌های مختلف فلاتر
از اولین نسخه فلاتر که در تاریخ 5 نوامبر 2018 منتشر شده است تا آخرین نسخه آن در تاریخ 18 می‌2021 ویژگی‌های زیادی به آن آضافه شده است و هر سری کامل تر از قبل شده تا بتواند خود را به عنوان بهترین فریمورک چندسکویی تثبیت کند.
ویژگی‌های فلاتر (Flutter)
فلاتر اوپن سورس است. شما می‌توانید مستندات Flutter را در گیت‌هاب در این صفحه ببینید. فلاتر چندسکویی است. شما با یک بار نوشتن کد می‌توانید دو خروجی برای اندروید و iOS بگیرید. خروجی فلاتر نیتیو (Native) است. این ویژگی باعث افزایش فوق العاده کارایی اپلیکیشن‌ها به نسبت سایر تکنولوژی‌های چندسکویی می‌شود.
Hot Reload
ویژگی Hot Reload Flutter به شما کمک می‌کند تا به سرعت و به راحتی آزمایش کنید، رابط کاربر را ایجاد کنید، ویژگی‌های خود را اضافه کنید و اشکالات را برطرف کنید. Hot Reload با تزریق فایل‌های کد منبع به روز شده در دستگاه در حال اجرا Dart Virtual (VM) کار می‌کند. بعد از اینکه کلاس‌های VM با نسخه‌های جدید زمینه‌ها و توابع به روزرسانی می‌کنند، فریمورک Flutter بطور خودکار درخت ویجت را مجدداً بازسازی می‌کند و به شما امکان می‌دهد تا به سرعت اثرات تغییرات خود را مشاهده کنید.
آموزش جامع فلاتر
این ویژگی سرعت برنامه نویسی اپلیکیشن‌ها را افزایش می‌دهد. به این صورت که هر بار که کد برنامه را تغییر می‌دهید نیاز نیست منتظر بمانید تا برنامه از نو کامپایل شود و خیلی سریع می‌توانید تغییرات را ببینید.
Hot Reload در فلاتر به صرفه جویی در زمان در حین توسعه کمک می‌کند تا برنامه نویس تغییرات اعمال شده را در بلادرنگ ببیند. این قابلیت به توسعه دهندگان کمک می‌کند تا به طور قابل توجهی کارآمدتر و سازنده تر باشند.‌هات ریلود در فلاتر بهتر از ویژگی‌های مشابه رقبا عمل می‌کند. به توسعه دهنده اجازه می‌دهد تا اجرای کد را متوقف کند، تغییراتی در کد ایجاد کند و کد را از همان مکان ادامه دهد. این امر توسعه را تا حد زیادی سرعت می‌بخشد و امکان تست بیشتر را فراهم می‌کند.

توسعه کراس پلتفرم

CPD باعث صرفه جویی در وقت، انرژی و پول می‌شود. با استفاده از Flutter، شما باید یک بار کد را بنویسید، آن را برای دو برنامه حفظ و استفاده کنید. نیاز به تهیه کد متفاوتی برای یک بستر متفاوت است. با استفاده از Flutter، می‌توانید برای پلتفرم Fuchsia که یک سیستم عامل آزمایشی است که در Google انجام می‌شود، تلاش کنید.
ویژگی‌های قابل دسترس نیتیو و SDK‌ها
روند توسعه برنامه شما از طریق کدهای نیتیو Flutter، ادغام‌های شخص ثالث و API‌های سیستم عامل آسان و لذت بخش می‌شود. بنابراین، شما می‌توانید به راحتی به ویژگی‌های نیتیو و SDK‌ها در هر دو سیستم عامل اندروید و iOS دسترسی پیدا کرده و از زبان‌های برنامه نویسی پرکاربرد مانند Kotlin و Swift استفاده مجدد کنید.
کد مینیمال
فلاتر با استفاده از زبان برنامه نویسی دارت توسعه یافته است. دارت از ترکیب JIT و AOT استفاده می‌کند که به بهبود زمان کلی راه اندازی، عملکرد و سرعت بخشیدن به عملکرد کمک می‌کند. JIT سیستم عملکرد را با عملکرد Hot Reload بهبود می‌بخشد. این نرم افزار UI را بدون تلاش برای ساختن یک محصول جدید، تازه می‌کند.
مزایای فلاتر
باعث صرفه جویی در وقت و هزینه شما می‌شود
Flutter ابزاری برای توسعه چندسکویی است. این بدان معناست که توسعه دهندگان نرم افزار می‌توانند از همان کد برای ساخت یک برنامه iOS و Android استفاده کنند. توسعه کراس پلتفرم بهترین روش برای صرفه جویی در وقت و منابع در تمام مراحل توسعه است.
اجرای فوق العاده
Flutter به دو دلیل عملکرد فوق العاده‌ای را ارائه می‌دهد. اول، استفاده از دارت است که در کد محلی کامپایل می‌شود. دوم، Flutter ابزارک‌های خاص خود را دارد، بنابراین نیازی به دسترسی به موارد نصب شده نیست. در نتیجه، ارتباط کمتری بین برنامه و سیستم عامل وجود دارد. این دو ویژگی Flutter زمان شروع سریع برنامه و به طور کلی مشکلات عملکرد کمتری را تضمین می‌کند.
آموزش فلاتر
توسعه سریع به لطف Hot Reload
Flutter به دلیل Hot Reload مورد توجه بسیاری از توسعه دهندگان موبایل قرار گرفته است. Hot Reload باعث می‌شود تغییرات اعمال شده در کد در شبیه سازها و سخت افزارها فوراً مشاهده شود. کد تغییر یافته در کمتر از یک ثانیه بارگیری می‌شود. در تمام مدت، برنامه در حال اجرا است و توسعه دهندگان نیازی به اتلاف وقت برای راه اندازی مجدد آن ندارند. این کار باعث ایجاد UI‌ها، افزودن ویژگی‌های جدید و رفع اشکالات می‌شود. اگر برنامه‌ای با خطایی روبرو شود، معمولاً می‌توانید آن را برطرف کنید و سپس استفاده از برنامه را ادامه دهید، انگار که هرگز رخ نداده است. حتی اگر مجبور به انجام مجدد بارگیری کامل برنامه شوید، می‌توانید مطمئن باشید که این برنامه در کمترین زمان انجام می‌شود و روند توسعه را تسریع می‌کند.
سازگاری
یکی دیگر از مزایای Flutter این واقعیت است که با ویجت‌های خاص خود همراه است و در نتیجه مشکلات سازگاری کمتری ایجاد می‌شود. توسعه دهندگان مشکلات کمتری را در نسخه‌های مختلف سیستم عامل مشاهده خواهند کرد و می‌توانند زمان کمتری را برای تست برنامه در نسخه‌های سیستم عامل قدیمی صرف کنند. همچنین، می‌توانید اطمینان داشته باشید که برنامه شما روی نسخه‌های بعدی سیستم عامل کار خواهد کرد.
توجه: با انتشار نسخه جدید Android یا iOS، ابزارک‌های Flutter باید به روز شوند (حتی اگر این ابزار از ابزارک‌های بستر اصلی استفاده نمی‌کند). شاید از خود بپرسید که Flutter چه مدت طول می‌کشد تا ابزارک‌های خود را به روز کند. از آنجا که گوگل یک کاربر داخلی عظیم از Flutter است، تیم Flutter به شدت انگیزه دارد تا مجموعه ابزارک‌های خود را تا حد ممکن در جریان و نزدیک به ابزارک‌های سیستم عامل نگه دارد. همچنین، ابزارک‌های Flutter قابل تنظیم هستند و توسط هر کسی قابل به روزرسانی هستند. برنامه شما حتی می‌تواند از ابزارک‌های جدید در نسخه‌های قدیمی سیستم عامل استفاده کند!
یکی از مهمترین مزایای Flutter نحوه استفاده از ویجت‌های آماده است. این تضمین می‌کند که Flutter یک مدل سازگار برای توسعه و طراحی ارائه می‌دهد. ویجت‌ها مبتنی بر گوگل هستند، بنابراین کیفیت کد بالایی دارند و عملکرد بهتری نسبت به سایر فریمورک‌های منبع باز دارند. از آنجایی که اکثر آنها بسیار قابل سفارش سازی هستند، مانند هیچ فریمورک دیگری در زمان توسعه دهندگان صرفه جویی می‌کنند. علاوه بر ویجت‌های طرح بندی اصلی، ویجت‌های Flutter از ظاهر Material و Cupertino پیروی می‌کنند که یک مزیت بزرگ است.
متن باز
Flutter یک فناوری متن باز است که توسط جامعه فعال توسعه دهندگانی احاطه شده است که پشتیبانی را ارائه می‌دهند، به اسناد گسترده ابزار کمک می‌کنند و منابع مفیدی را توسعه می‌دهند. استفاده از دارت و فلاتر رایگان است.
نوآورترین فناوری
فلاتر یکی از نوآورترین فناوری‌های موبایل در حال حاضر در بازار است. مزایایی که به تیم‌های توسعه می‌بخشد آن را به عنوان کاندیدای امیدوارکننده فناوری همراه در آینده نزدیک انتخاب می‌کند.
رابط کاربری عالی
ویل لارچ، مهندس نرم‌افزار در گوگل، می‌گوید: «معماری فلاتر برای ایجاد رابط کاربری زیبا و سفارشی طراحی شده است. هدف اصلی Flutter این است که ساختن رابط‌های برنامه‌های سفارشی را به تجربه‌ای سریع تر و لذت بخش تر برای طراحان و توسعه دهندگان تبدیل کند. فلاتر به اندازه کافی قدرتمند است که بتواند هر چیزی را که طراحان رویایش دارند ترسیم کند.
طراحی زیبا و سفارشی
ویژگی قدرتمند Flutter Skia است، موتور گرافیکی منبع باز و با کارایی بالا که توسط Adobe، Chrome و Amazon Kindle استفاده می‌شود. Flutter به کاربران اجازه می‌دهد تا برنامه‌هایی با طرح‌های سفارشی توسعه دهند که در دستگاه‌های iOS و Android به همان اندازه خوب به نظر می‌رسند. برنامه‌های توسعه‌یافته بر روی Flutter - بر خلاف رقبای خود - هیچ خطری برای خرابی رابط کاربری در هنگام به‌روزرسانی نرم‌افزار ندارند.
منطق تجاری و UI مشابه
امکان اشتراک گذاری رابط کاربری Flutter و منطق تجاری در دستگاه‌های Android و Apple به توسعه دهندگان امکان می‌دهد بدون در نظر گرفتن سیستم عامل به یک تجربه یکپارچه دست یابند. این در درجه اول برای برندهایی با سبک شرکتی منحصر به فرد و برجسته مهم است.
پتانسیل سفارشی سازی UI
مزیت بزرگ Flutter این است که می‌توانید هر چیزی را که روی صفحه می‌بینید، بدون در نظر گرفتن پیچیدگی عنصر، سفارشی کنید. میزان تلاش مورد نیاز اساساً کمتر از تلاش مورد نیاز در نرم افزار توسعه پلت فرم‌های بومی است.
معایب فلاتر
فلاتر علیرغم مزایای بسیاری که دارد معایب زیر را نیز دارد:
- از آنجایی که به زبان دارت کدگذاری شده است، یک توسعه دهنده باید زبان جدیدی را یاد بگیرد (اگرچه یادگیری آن آسان است).
- فریم ورک مدرن سعی می‌کند تا حد امکان منطق و UI را از هم جدا کند، اما در Flutter، رابط کاربری و منطق در هم آمیخته می‌شوند. ما می‌توانیم با استفاده از کدنویسی هوشمند و استفاده از ماژول سطح بالا برای جداسازی رابط کاربری و منطق بر این مشکل غلبه کنیم.
- Flutter یک چارچوب دیگر برای ایجاد اپلیکیشن موبایل است. توسعه دهندگان در انتخاب ابزارهای توسعه مناسب در بخش بسیار پرجمعیت با مشکل مواجه هستند.
پشتیبانی جامعه فلاتر
نیازی به گفتن نیست که Flutter از زمان انتشار اولیه خود در سال 2017 از حمایت اجتماعی زیادی برخوردار بوده است. این مخزن ستاره دار در میان فریمورک‌های چند پلتفرمی در Github با 128 هزار ستاره است و در مجموع در رتبه شانزدهم قرار دارد.
برای شروع توسعه با Flutter می‌توانید از مکان‌هایی مانند StackOverflow، Flutter Awesome، Flutter Community، و It’s All Widgets کمک بگیرید.
آیا Flutter یک زبان برنامه نویسی است؟
با این حال، Flutter یک زبان برنامه نویسی نیست. این یک کیت توسعه نرم افزار (SDK) با کد پیش نویسی است که متشکل از ابزارک‌های آماده و قابل تنظیم و همچنین کتابخانه‌ها، ابزارها و اسنادی است که در کنار هم برای ساخت برنامه‌های چند سکویی کار می‌کنند. زبان Flutter برای توسعه بین پلتفرمی Dart است که توسط Google نیز ساخته شده است. فلاتر از استفاده از پل برای برقراری ارتباط با لایه بومی (مانند Android یا iOS) خودداری می‌کند. این موارد عملکرد را به حداقل می‌رساند و زمان راه اندازی برنامه را افزایش می‌دهد. البته، Flutter داشتن زبان برنامه نویسی خاص خود به این معنی است که برای توسعه برنامه خود، به برنامه نویسان برای کدنویسی در Dart نیاز دارید. با این حال، دارت کاملاً شبیه Java، .Net، Kotlin، Swift یا JavaScript است و یادگیری آن نسبتاً آسان است.
بنابراین آیا فلاتر ارزش آزار و اذیت را دارد؟ چه مزایایی برای محصول شما به همراه خواهد داشت و ویژگی‌های Flutter به عنوان SDK و زبان برنامه نویسی آن چیست؟

آموزش فلاتر

SDK چیست - نمونه‌هایی از کیت‌های توسعه نرم افزار برای برنامه‌های تلفن همراه
SDK یک بسته آماده نصب ابزار توسعه نرم افزار است که ایجاد یک برنامه را تسهیل می‌کند. دو نوع SDK وجود دارد - نیتیو و چند سکویی. SDK‌های نیتیو مخصوص هر سیستم عامل است، به این معنی که اگر برای توسعه یک برنامه Android از SDK Android Google استفاده می‌کنید، برای ایجاد همان برنامه برای iOS اپل باید از ابتدا شروع کنید - و بالعکس. با این حال، SDK‌هایی نیز وجود دارند که توسعه چندسکویی را ارائه می‌دهند. Flutter یکی از آنهاست. برخی دیگر از گزینه‌های محبوب عبارتند از:
- React Native - که توسط فیسبوک و به صورت متن باز توسعه یافته است، از JavaScript به عنوان زبان برنامه نویسی خود برای ساخت برنامه‌ها استفاده می‌کند، اما همچنین به شما امکان می‌دهد ماژول‌ها را به زبان‌های دیگر از جمله C، Java و Swift بنویسید.
- Xamarin - توسط مایکروسافت ایجاد شده است و در اندروید، iOS و ویندوز کار می‌کند. مایکروسافت ادعا می‌کند که به توسعه دهندگان این امکان را می‌دهد تا به طور متوسط 90٪ از برنامه خود را در سیستم عامل به اشتراک بگذارند.
- Ionic - از زبان‌هایی مانند CSS و JavaScript برای توسعه برنامه‌ها استفاده می‌کند.
مقایسه فلاتر و React Native
-فلاتر یک مجموعه ابزار UI قابل حمل برای ساخت اپلیکیشن‌های کامپایل شده نیتیو در تلفن همراه، وب و دسکتاپ از یک پایگاه کد واحد است. اما React Native فریمورکی برای ایجاد اپلیکیشن‌های نیتیو با استفاده از React می‌باشد.
- فلاتر توسط گوگل و React Native توسط فیسبوک ایجاد شده است.
- هر دوی آنها اون سورس و رایگان هستند و عملکرد نیتیو آنها عالی می‌باشد.
- فلاتر با زبان دارت و React Native با جاوا اسکریپت نوشته شده است.
- بدیهی است که هر دو فریمورک در توسعه نرم افزار دارای مزایای یکسانی هستند و ویژگی‌های کلی یکسانی دارند.
- هر دو برای ساختن یک MVP چند سکویی تلفن همراه با امکان استفاده مجدد از کد و تمدید آن با هر یک از افزونه‌های رایگان رسمی یا ارائه شده توسط جامعه خوب است.
- هر دو هنگام توسعه برای چندین سیستم عامل، هزینه‌های بازار و پروژه را کاهش می‌دهند.
- ابزارهای Flutter نه تنها وب و تلفن همراه، بلکه دسکتاپ و تعبیه شده را نیز هدف قرار می‌دهد. استفاده از آن زمانی مفید است که برنامه‌ای به راحتی در هر دستگاهی قابل دسترسی باشد: تلفن همراه، تبلت، لپ تاپ.
- با وجود این واقعیت که دسترسی به توسعه دهندگان React آسان تر است، این واقعیت که Flutter توسط Google پشتیبانی می‌شود، آن را به عنوان یک جایگزین جدی React Native در نظر می‌گیرد.
- توسعه تلفن همراه چندسکویی گوگل متکی به کامپایلر دارت است، در حالی که توسعه React Native متکی به لایه WebView و جاوا اسکریپت است که به طور موثر سرعت برنامه موبایل React Native را کاهش می‌دهد.
- فلاتر دارای موتور رندر مخصوص به خود است که امکان ایجاد طرح‌های منحصر به فرد را با افزایش وزن پروژه فراهم می‌کند.
- React Native محدود به استفاده از کامپوننت‌های نیتیو است که ممکن است نیاز به سفارشی سازی بیشتر با دست داشته باشد.
- یک برنامه Flutter می‌تواند بلافاصله وارد محیط دسکتاپ شود، در حالی که یک برنامه React باید از رابط وب به عنوان رابط برای آن موقعیت استفاده کند.
فلاتر و دارت (Dart)
دارت (Dart) یک زبان برنامه نویسی بهینه شده برای برنامه‌های سریع در سیستم عامل‌های مختلف است. دارت توسط گوگل توسعه یافته و برای ساختن برنامه‌های موبایل، دسکتاپ و وب مورد استفاده قرار می‌گیرد. شرکت گوگل زبان برنامه نویسی دارت (Dart) را طراحی کرد تا جاوااسکریپت که زبان داخلی مرورگرهای وب است را توسط کامپایلر dart2js با آن جایگزین کند. کد نوشته شده در Dart می‌تواند در بعضی موارد سریعتر از کد معادل با استفاده از اسکریپت‌های جاوااسکریپت اجرا شود. نحو Dart براساس جاوااسکریپت است و برپایه کلاس، وراثت یگانه و شی گرایی تعریف شده که شبیه زبان C می‌باشد. برنامه‌های Flutter را می‌توان با زبان برنامه نویسی Dart نوشت.
دارت چیست و چگونه با Flutter کار می‌کند؟
طبق گفته Google، زبان فلاتر، یعنی Dart "یک زبان بهینه شده برای مشتری برای برنامه‌های سریع در هر سیستم عامل" است. مانند جاوا، سی پلاس پلاس و پایتون شی گرا است. پیش از موعد به کد محلی ARM یا x64 کامپایل می‌شود (و به bytecode جاوا اسکریپت برای وب). این باعث می‌شود نتوان یک برنامه نوشته شده در دارت را از یک برنامه نیتیو در سطح دستگاه متمایز کرد.
دارت کاربردهای فراتر از Flutter نیز دارد: مهندسان Google آن را برای برخی از برنامه‌ها مانند Google Ads، هم برای وب و هم برای تلفن همراه به کار می‌گیرند. بنابراین واضح است که Google در این زبان سرمایه گذاری کرده و در حال حاضر به نظر می‌رسد که در آینده نیز در توسعه خود سرمایه گذاری خواهد کرد.
با این حال، دارت هنوز زبان چندان محبوبی نیست - همچنان در حدود 20 امین نفر در لیست محبوب‌ترین زبان‌های برنامه نویسی و شماره 32 در فهرست TIOBE است. جستجوی توسعه دهندگان با تجربه در دارت ممکن است یک مشکل باشد، اما افرادی که در زبان‌های دارای نحو C مانند مهارت دارند باید بتوانند آن را به سرعت درک کنند.

کاربرد فلاتر

فریمورک فلاتر که به زبان برنامه نویسی دارت نوشته شده است دارای موتور فلاتر، کتابخانه Foundation و ویجت است. رویکرد توسعه در Flutter با نوشتن رابط کاربری اعلانی آن با سایرین متفاوت است. در اینجا، نیاز به شروع از پایان وجود دارد، به این معنی که قبل از شروع توسعه برخی از عناصر، کاربر باید تصویر کاملی از نوع رابط کاربری آن را در ذهن داشته باشد. بسیاری از توسعه دهندگان این نوشتار رابط کاربری را به عنوان یک نوشتار واضح تر تشخیص می‌دهند، اما در ابتدا باعث ایجاد مشکلات خاصی برای توسعه دهندگان می‌شود.
ایده اصلی Flutter این است که توسعه دهندگان می‌توانند کل رابط کاربری را به سادگی با ترکیب ویجت‌های مختلف بسازند. رابط برنامه از ویجت‌های تو در تو مختلف تشکیل شده است که می‌تواند هر شیئی باشد. این برای هر چیزی از دکمه‌ها گرفته تا padding اعمال می‌شود، و با ترکیب ویجت‌ها، توسعه‌دهنده می‌تواند برنامه را به طور اساسی سفارشی کند. ویجت‌ها می‌توانند بر یکدیگر تأثیر بگذارند و از توابع داخلی برای پاسخ به تغییرات خارجی در وضعیت استفاده کنند. ویجت‌ها عناصر مهم رابط کاربری هستند و با مشخصات طراحی اندروید، iOS و وب اپلیکیشن‌های معمولی مطابقت دارند.
با Flutter، توسعه‌دهندگان می‌توانند ویجت‌های سفارشی ایجاد کنند که به راحتی می‌توانند با ابزارک‌های موجود ترکیب شوند. توجه داشته باشید که هیچ ویجت OEM وجود ندارد، اما Flutter Gallery ویجت‌های آماده خود را در اختیار توسعه‌دهندگان قرار می‌دهد - مجموعه‌ای از نمونه‌های کاربردی که نحوه استفاده از ویجت‌های استاندارد را نشان می‌دهد - که شبیه زبان‌های طراحی اندروید و iOS بومی (Material و کوپرتینو) هستند.
Flutter همچنین به توسعه دهندگان این امکان را می‌دهد که ویجت‌ها را به سبک واکنش گرا مشاهده کنند. برای رکورد، Flutter اولین کسی نیست که این کار را انجام می‌دهد، اما Flutter تنها SDK تلفن همراه است که بدون نیاز به پل جاوا اسکریپت ظاهر واکنش گرا را ارائه می‌دهد. علاوه بر این، دارت با یک مخزن از بسته‌های نرم افزاری برای افزایش قابلیت‌های برنامه‌ها همراه است. به عنوان مثال، چندین بسته را ارائه می‌دهد که به دسترسی به Firebase کمک می‌کند تا توسعه دهندگان بتوانند برنامه‌های بدون سرور ایجاد کنند. بسته دیگری دسترسی به انبار داده Redux را امکان پذیر می‌کند یا دسترسی به خدمات پلت فرم و تجهیزات مانند دوربین‌ها را تسهیل می‌کند.
دارت و فلاتر
کاربرد فلاتر (Flutter)
روش‌های بی شماری برای توسعه برنامه‌های کاربردی موبایل cross-platform وجود دارد. واضح‌ترین کاربردهای بومی، مبتنی بر ابزاری است که به طور خاص برای پلتفرم مربوطه ساخته شده است (Google و Apple). با این حال، آنها شما را مجبور می‌کنند یک برنامه جداگانه و در عین حال یکسان را با کدی متفاوت و غیر قابل حمل دوباره ایجاد کنید، که این موضوع را به یک پیشنهاد گران قیمت تبدیل می‌کند. سپس روشهای مختلفی از کار با یک کدبانوی واحد وجود دارد که هرکدام مزایا و اشکالاتی دارند.
در تاریخ 27 فوریه، گوگل اولین نسخه بتا Flutter را منتشر کرد. در 4 دسامبر، این رویداد ویژه‌ای را در موزه علوم لندن با نام "Flutter Live" ترتیب داد تا نسخه 1.0 SDK خود را به سبک اجرا کند. به نظر می‌رسد گوگل امید جدیدی برای آخرین debutante خود دارد.
فلاتر بر اساس زبان برنامه نویسی Dart است، که بطور خاص برای توسعه تلفن همراه ساخته شده است. Flutter از موتور رندر مخصوص خود براساس کتابخانه گرافیکی 2D Skia که توسط گوگل در سال 2005 خریداری شده بود، استفاده کرد و متعاقبا تحت مجوز BSD اصلاح شده در دسترس قرار گرفت و هم اکنون توسط سیستم عامل‌های Chrome و Google Chrome استفاده می‌شود و این زمانی است که شما می‌توانید تفاوت قابل توجهی را بین این و یک برنامه کاملاً نیتیو مشاهده کنید.
Flutter به جای استفاده از اجزای گرافیکی سیستم، همه چیز را از جمله بازتولید‌های کامل به پیکسل در عناصر رابط iOS و اجزای طراحی Material برای Android ترسیم می‌کند.
گوگل از Flutter برای ماژول‌های مختلف دستیار گوگل و رابط کاربری Google Home Hub استفاده می‌کند. علاوه بر این، در حال حاضر 50000 برنامه Flutter در فروشگاه Google Play موجود است و این تعداد با سرعت بالایی در حال افزایش است. گروه Alibaba، eBay، Groupon، و سایر ارائه دهندگان محبوب تجارت الکترونیک از Flutter نیز استفاده می‌کنند تا ظاهری یکنواخت به وب اپلیکیشن و موبایل خود بدهند.
فلاتر برای توسعه اندروید و آی او اس (iOS)
دانش و مهارت مجموعه اندروید و آی او اس (iOS) شما هنگام ساختن با Flutter بسیار ارزشمند است زیرا Flutter برای قابلیت‌ها و تنظیمات بی شماری به سیستم عامل تلفن همراه اعتماد دارد. Flutter روشی جدید برای ساخت UI موبایل دارد، اما برای ارتباط با Android و iOS برای کارهای غیر از UI دارای یک سیستم افزونه است.
فلاتر برای توسعه وب
پس آیا فلاتر برای توسعه وب مناسب است؟
پاسخ بله است. Flutter از تولید محتوای وب با استفاده از فن آوری‌های وب مبتنی بر استاندارد پشتیبانی می‌کند: HTML، CSS و JavaScript. بر اساس پشتیبانی وب، می‌توانید کد Flutter موجود را که در Dart نوشته شده است، در یک تجربه مشتری جاسازی شده در مرورگر و استفاده در هر وب سرور، کامپایل کنید. شما می‌توانید از تمام ویژگی‌های Flutter استفاده کنید و نیازی به افزونه مرورگر ندارید. Flutter برای وب در حال حاضر به عنوان پیش نمایش فنی در دسترس است. اگر هنوز هم اهمیت Flutter را در توسعه تلفن همراه و وب در نظر دارید، Flutter مجموعه‌ای از استانداردهای بالا است و غیر قابل انکار برای آینده  است که امیدوار کننده به نظر می‌رسد.
موارد استفاده جهانی فلاتر
امروزه Flutter در سراسر جهان در صنایع، پلتفرم‌ها و سیستم‌های عامل مورد استفاده قرار می‌گیرد، که عمدتاً به دلیل پشتیبانی بین پلتفرمی است. تیم‌ها تشخیص داده‌اند که فلاتر در زمان و هزینه صرفه‌جویی می‌کند، زیرا می‌توانند از یک پایگاه کد واحد برای توسعه در پلتفرم‌ها استفاده کنند.
تویوتا که سیستم‌های اطلاعات سرگرمی خود را با فلاتر تامین می‌کند، توانایی فلاتر در داخل سیستم‌های تعبیه شده را نشان می‌دهد. علاوه بر این، ناشر اوبونتو Canonical از Flutter پشتیبانی یکپارچه کرده است، در حالی که مایکروسافت پشتیبانی از دستگاه‌های تاشو را برای Flutter آورده است.

معماری فلاتر (Flutter)

اجزای اصلی فلاتر عبارتند از:
پلتفرم دارت
برنامه‌های Flutter به زبان دارت نوشته شده‌اند و از بسیاری از ویژگی‌های پیشرفته این زبان استفاده می‌کنند. در ویندوز، macOS و لینوکس از طریق پروژه جاسازی نیمه رسمی Flutter Desktop، Flutter در دستگاه مجازی Dart اجرا می‌شود که دارای یک موتور کامپایل Just In Time است. در هنگام نوشتن و اشکال زدایی برنامه، Flutter از Just In Time استفاده می‌کند و امکان Hot Reload را فراهم می‌کند، که با استفاده از آن می‌توانید تغییرات در فایل‌های منبع را به یک برنامه در حال اجرا تزریق کنید.
فلاتر با پشتیبانی از Hot Reload، این امر را گسترش می‌دهد، جایی که در بیشتر موارد تغییر در سورس کد می‌تواند بلافاصله در برنامه در حال اجرا بدون نیاز به راه اندازی مجدد یا از بین رفتن حالت منعکس شود. این ویژگی که در فلاتر اجرا شده است ستایش گسترده‌ای را به دست آورده است. نسخه‌های منتشر شده از برنامه‌های Flutter با AOT در Android و iOS گردآوری شده است و باعث عملکرد عالی Flutter در دستگاه‌های تلفن همراه می‌شود.
موتور فلاتر
موتور Flutter، که در درجه اول در سی پلاس پلاس نوشته شده است، با استفاده از کتابخانه گرافیکی Skia Google، پشتیبانی رندر سطح پایین را ارائه می‌دهد. علاوه بر این، آن را با SDK‌های خاص برای سیستم عامل مانند برنامه‌های ارائه شده توسط Android و iOS واسط برقرار می‌کند. Flutter Engine یک ران تایم قابل حمل برای میزبانی از برنامه‌های Flutter است. این کتابخانه کتابخانه‌های اصلی Flutter، از جمله انیمیشن و گرافیک، فایل و شبکه I / O، پشتیبانی از قابلیت دسترسی، معماری افزونه و یک ابزار ران تایم و کامپایل Dart را پیاده سازی می‌کند. بیشتر توسعه دهندگان با Flutter از طریق Flutter Framework تعامل می‌کنند، که یک فریمورک رسپانسیو مدرن و مجموعه غنی از ویجت‌های پلتفرم، چیدمان و پایه را فراهم می‌کند.
کتابخانه Foundation
کتابخانه Foundation، که در دارت نوشته شده است، کلاس‌ها و کارکردهای اساسی را ارائه می‌دهد که برای ساخت برنامه‌های کاربردی با استفاده از Flutter، مانند API برای ارتباط با موتور استفاده می‌شود.
ویدجت‌های فلاتر
ویجت‌های Flutter
طراحی UI در Flutter شامل استفاده از ترکیب برای جمع آوری / ایجاد "ویجت" از سایر ویجت‌ها است. ترفند درک این موضوع این است که بدانیم هر درخت از اجزای سازنده (ویجت) که تحت یک روش واحد ()build ساخته می‌شود نیز به عنوان یک ویجت واحد گفته می‌شود. این بدان دلیل است که آن ویجت‌های کوچکتر نیز از ویجت‌های حتی کوچکتر ساخته شده‌اند و هرکدام یک روش ()build ساخت خاص خود را دارند. اینگونه است که فلاتر از ترکیب استفاده می‌کند.
اسناد می‌گویند: "ویجت توضیحات تغییرناپذیر بخشی از رابط کاربری است." یک انسان به شما خواهد گفت که این یک طرح است، که یک روش بسیار ساده تر برای فکر کردن در مورد آن است. با این وجود، باید به خاطر داشته باشید که انواع مختلف ویجت‌ها در Flutter وجود دارد، و شما نمی‌توانید همه آنها را ببینید یا لمس کنید. متن یک ویجت است، اما TextStyle آن نیز وجود دارد که مواردی مانند اندازه، رنگ، خانواده فونت و وزن را تعریف می‌کند. ویجت‌هایی وجود دارند که چیزهایی را نمایان می‌کنند، ویژگی‌هایی را نشان می‌دهند (مانند TextStyle) و حتی دیگران که کارهایی را انجام می‌دهند مانند FutureBuilder و StreamBuilder.
ویجت‌های پیچیده را می‌توان با ترکیب بسیاری از ساده ترها ایجاد کرد، و یک اپلیکیشن در واقع فقط بزرگترین ویجت همه آنها (که اغلب "MyApp" نامیده می‌شود) است. ویجت MyApp شامل همه ویجت‌های دیگر است، که می‌توانند حاوی ویجت‌های کوچکتر نیز باشند، و در کنار هم برنامه شما را تشکیل می‌دهند.
با این وجود استفاده از ویجت برای ساخت برنامه‌های Flutter کاملاً لازم نیست. یک گزینه جایگزین، معمولاً فقط توسط افرادی که دوست دارند هر پیکسلی را که روی بوم کنترل می‌شود، کنترل کنند، استفاده از روش‌های مستقیم کتابخانه بنیاد است. از این روش‌ها می‌توان برای ترسیم اشکال، متن و تصاویر به طور مستقیم به بوم استفاده کرد. از این توانایی Flutter در چند فریمورک مانند موتور بازی اوپن سورس Flame استفاده شده است.
ویجت‌ها: هسته رابط کاربری Flutter
فریمورک فلاتر که به زبان برنامه نویسی دارت نوشته شده است دارای موتور فلاتر، کتابخانه Foundation و ویجت است.
ویجت‌ها بلوک‌های سازنده رابط برنامه Flutter هستند و ساختار یک عنصر UI را تعریف می‌کنند. رابط برنامه Flutter ترکیبی از ویجت‌های تو در تو است.
اگر از دنیای React Native آمده‌اید، یک ویجت شبیه به یک عنصر JSX است. حتی اگر ویجت‌ها به طور پیش فرض تغییر ناپذیر هستند، Flutter اجازه می‌دهد تا حالت‌های قابل تغییر را با استفاده از StatefulWidgets مرتبط کنیم.
دو نوع از متداول‌ترین ویجت‌های فلاتر عبارتند از:
- StatelessWidget - ویجتی که فقط به پیکربندی آن بستگی دارد و state به روز نمی‌شود.
- StatefulWidget - ویجتی که اجازه می‌دهد state به صورت پویا تغییر کند.
علاوه بر این، Flutter ویجت‌های مخصوص پلتفرم را ارائه می‌دهد. به عنوان مثال، ابزارک‌های متریال طراحی متریال گوگل را پیاده‌سازی می‌کنند و Cupertino Widgets تجربه‌ی اصلی iOS را ارائه می‌کنند. این بدان معنا نیست که شما باید دو پایگاه کد مختلف را حفظ کنید. طراحی متریال در تمامی پلتفرم‌ها قابل استفاده است.
ویجت‌های مخصوص طراحی
فریمورک Flutter شامل دو مجموعه ویجت است که با زبان‌های طراحی خاص مطابقت دارد. ویجت‌های Design Material زبان طراحی گوگل را با همین نام پیاده سازی می‌کنند، و ویجت‌های Cupertino دستورالعمل‌های رابط انسانی در iOS را طراحی می‌کنند.
پایگاه داده‌های فلاتر
مدیریت State در فلاتر
State اطلاعاتی در داخل یک برنامه است که می‌تواند در طول زمان یا به دلیل تعاملات کاربر تغییر کند. Flutter با ترسیم مجدد رابط کاربری هر زمان که تغییر State رخ می‌دهد State را مدیریت می‌کند. فلاتر برای این کار به اندازه کافی سریع است. Flutter قصد دارد برنامه‌ها را با عملکرد 60 فریم در ثانیه (fps) ارائه دهد.  فلاتر State برنامه را در دو رویکرد شناسایی می‌کند، یعنی State UI و App State. درواقع State UI وضعیت محلی یک ویجت است.
App state یک حالت جهانی است که در بسیاری از بخش‌های برنامه مشترک است. به عنوان مثال، جزئیات احراز هویت یک کاربر ساکن در App State. برای مدیریت وضعیت در سطح برنامه، می‌توانید از رویکردهای رایج مانند Redux یا Rx استفاده کنید.
پایگاه داده‌های فلاتر
اگرچه بازار پایگاه داده بسیار گسترده و پویاست، اما اگر توسعه دهنده برنامه Flutter / Dart هستید، فقط چند گزینه برای انتخاب وجود دارد. در این برهه از زمان، چشم انداز پایگاه داده برای Flutter Dart هنوز بسیار محدود است. بنابراین، بیایید به سرعت بازیگران فعلی بازار را معرفی کنیم.
- Firebase Realtime DB یک پایگاه داده ابر میزبان است. داده‌ها را به صورت JSON ذخیره می‌کند و آنها را با مشتریان متصل همگام سازی می‌کند.
- Hiveیک پایگاه داده با ارزش کلیدی بسیار سبک وزن است که با استفاده از Bitcask برای برنامه‌های Flutter در دارت نوشته شده است.
- ObjectBox DB یک پایگاه داده بسیار سبک وزن و سبک NoSQL است. اشیا را ذخیره می‌کند.
- Sqflite یک wrapper در اطراف SQLite است که یک پایگاه داده رابطه‌ای است و بدون پشتیبانی مستقیم از آبجکت‌های دارت است.
- Moorیک کتابخانه ماندگاری واکنش گرا برای Flutter و Dart است که در بالای sqlite ساخته شده است.

تناسب فلاتر با پرژوه‌ها

با توجه به اینکه Google منابع زیادی را پشت سر Flutter قرار داده است، شکی نیست که این SDK در جامعه فناوری سرعت بیشتری خواهد گرفت. اینکه شما باید اعتیاد به مواد مخدر را دنبال کنید یا خیر مسئله دیگری است: هیچ راه حل یکسانی وجود ندارد و Flutter برای همه مناسب نیست.
چیزهایی هستند که برای کسب و کار ارزش زیادی دارند - ثبات پلت فرم، عملکرد آن، تضمین پشتیبانی موفق و بهبود فناوری‌ها و محصولات. هرگونه مشکل و کاستی در هر یک از این جنبه‌ها ممکن است منجر به خطراتی از جمله زیان مالی مستقیم و غیرمستقیم شود.
با در نظر گرفتن این موضوع، فلاتر خطرات کسب و کار شما را به دلیل نکات زیر کاهش می‌دهد:
بهترین عملکرد در کلاس (کراس پلتفرم یا چندسکویی) و مصرف منابع به دلیل کامپایل کد نیتیو و موتور رندر با کارایی بالا. اولی راه آسانی برای برقراری ارتباط بین کدهای پلتفرم نیتیو و دارت از طریق کانال‌های پلت فرم فراهم می‌کند. بنابراین، توسعه دهندگان می‌توانند هر کاری را که یک برنامه نیتیو می‌تواند انجام دهد را در یک برنامه Flutter پیاده سازی کنند، فقط با کمی تلاش بیشتر در سمت اصلی. به دلیل موتور (Flutter از Skia برای رندر کردن خود استفاده می‌کند)، یک رابط کاربری ساخته شده در Flutter می‌تواند تقریباً روی هر پلتفرمی راه اندازی شود، با فرض اینکه این پلت فرم از Flutter پشتیبانی می‌کند. به عبارتی دیگر، توسعه‌دهندگان دیگر نیازی به تنظیم UI برای انتقال آن به یک پلتفرم ندارند، که فرآیند توسعه را بسیار ساده می‌کند.
یک UX خوب به طور باورنکردنی به عملکرد برنامه بستگی دارد. عملکرد برنامه فلوتر در بیشتر موارد از برنامه اصلی قابل تشخیص نیست. این به این دلیل است که Flutter به بازنمایی یا تفسیر کد میانی متکی نیست. برنامه در Flutter مستقیماً در کد ماشین کامپایل می‌شود و هر گونه خطای عملکرد در فرآیند تفسیر را حذف می‌کند. این بالاترین عملکرد را برای آن فراهم می‌کند و آن را به بیشترین نرم افزار صرفه جویی در منابع در میان فناوری‌های چند سکویی تبدیل می‌کند.
بهره وری بهتر توسعه دهندگان به دلیل طراحی Flutter در درجه اول برای نوشتن کد سریعتر به دست می‌آید.این شامل ویجت‌های آماده برای استفاده است، نحو آن نیاز به کد کمتری برای نوشتن دارد، و سرعت‌هات ریلود مجدد جستجو و تصحیح باگ‌ها را افزایش می‌دهد. همه اینها منجر به ساعات کار کمتر برای توسعه دهندگان می‌شود.
همچنین، پیدا کردن مهندسان Flutter در سال 2022 مشکلی نیست - جامعه طرفداران به ویژه در میان توسعه دهندگان اندروید در حال رشد است. طبق نظرسنجیStack Overflow Developer Survey، 68.8٪ از توسعه دهندگان - که جزو 3 برنامه برتر است - عاشق استفاده از Flutter هستند و علاقه خود را برای ادامه توسعه با آن ابراز کرده اند.
انتشار سریعتر اپلیکیشن. با توجه به بهره وری بیشتر توسعه دهندگان فلاتر، زمان کمتری برای ایجاد یک برنامه نیاز است، به این معنی که در مقایسه با سایر زبان‌ها و فریم ورک‌های برنامه نویسی، برنامه‌های کاربردی در فلاتر سریعتر نوشته می‌شوند و با تلاش یکسان زودتر وارد بازار می‌شوند. بنابراین، هرچه تلاش کمتری برای کدنویسی و پشتیبانی مورد نیاز باشد، زمان عرضه به بازار سریع‌تر خواهد بود.
توسعه اپلیکیشن کم هزینه. Flutter کار توسعه کارآمدتری را ارائه می‌دهد و بر این اساس، برای توسعه یک برنامه کاربردی به ساعت کار کمتری نیاز است. در عین حال، هزینه یک ساعت در سطح متوسط بازار (و گاهی اوقات حتی پایین تر) است. در نتیجه، هزینه برنامه در Flutter کمتر از زمانی است که از سایر زبان‌های چند پلتفرمی یا توسعه نیتیو استفاده می‌شود.
چرا فلاتر بهترین گزینه برای توسعه اپلیکیشن چند سکویی می‌باشد؟
در حال حاضر بسیاری از سیستم عامل‌های توسعه برنامه‌های چند سکویی در دسترس هستند - Xamarin توسط Microsoft، React Native توسط Facebook و Angular توسط Google ساخته و استفاده می‌شوند و همه قبل از فلاتر در بازار موجود بودند.
مسئله این است که استارتاپ‌ها کدام پلتفرم را باید انتخاب کنند تا از دنیای تحت سلطه موبایل بیشترین بهره را ببرند؟
به نظر می‌رسد فلاتر گزینه امیدوار کننده‌ای است. فعلاً، Flutter به سرعت مقام اول را در لیست توسعه چندسکویی بدست آورده است. فقط سه سال از انتشار اولیه، این پلتفرم متن باز با پشتیبانی Google می‌گذرد که دارای جامعه گسترده‌ای است که متشکل از بیش از 2 میلیون توسعه دهنده می‌باشد. بنابراین فلاتر بهترین گزینه برای توسعه اپلیکیشن چندسکویی شما است چرا که:
- توسعه سریع را فراهم می‌کند
- تجربه کاربری بصری و غنی با موتور رندر خود دارد
- عملکردی نزدیک به عملکرد برنامه نیتیو دارد
- ایده آل برای توسعه برنامه MVP می‌باشد

 فلاتر (Flutter) فراتر از  UI

 Flutter فقط یک فریمورک معمولی نیست که بتوانید یک UI عالی بسازید. این کد در یک نرم افزار محلی نصب شده و از زبان برنامه نویسی دارت استفاده می‌کند. فلاتر فقط برای ایجاد UI نیست، مانند نحوه استفاده Google از Flutter برای ساخت برخی از برنامه‌های خود، مانند Stadia. شرکت‌های دیگری مانند نیویورک تایمز به طور کامل از فریمورک Flutter برای ساخت برنامه‌های خود در وب، Android، iOS، Mac و Windows استفاده می‌کنند. این برنامه‌ها همه بسیار عالی کار می‌کنند.
توسعه وب با فلاتر
آیا Flutter آینده توسعه موبایل است؟
بله، تجربه کاربران با Flutter مدرک اثبات شده‌ای را ارائه می‌دهد که این فریمورک همه فرصت‌ها را دارد تا گزینه مناسبی برای توسعه برنامه‌های تلفن همراه باشد. این امکان را به ما می‌دهد تا با تجربه کاربری بهتر، عملکرد قوی، برنامه نویسی کارآمد و صرفه جویی در وقت و هزینه، برنامه‌های تلفن همراه را بسازیم.
آیا فلاتر بک‌اند است یا فرانت اند؟
Flutter یک فریمورک است که به طور خاص برای frontend طراحی شده است. بنابراین، هیچ برنامه پشتیبان "پیش فرض" برای بک‌اند Flutter وجود ندارد. Backendless یکی از اولین سرویس‌های بدون کد/ کم کد بک‌اند بود که از یک Flutter frontend پشتیبانی می‌کرد.
اکنون Backendless SDK for Flutter علاوه بر برنامه‌های تلفن همراه Android و iOS از توسعه وب Flutter نیز پشتیبانی می‌کند. در حال حاضر، اپلیکیشن فلاتر شما می‌تواند از همه عملکردها و ویژگی‌های پشتیبان Backendless در برنامه‌های وب و تلفن همراه لذت ببرد.
Backendless همه چیزهایی را که بک‌اند فلاتر به آن نیاز دارد فراهم می‌کند: پایگاه داده بلادرنگ، مدیریت کاربر، push notifications، منطق بدون کد و موارد دیگر. همه این ویژگی‌ها استاندارد هستند و برای توسعه سریع و آسان طراحی شده اند. پیش از این، Flutter SDK فقط از بک‌اند فلاتر شما در سیستم عامل‌های تلفن همراه (Android و iOS) پشتیبانی می‌کرد. با افزایش محبوبیت Flutter، به ویژه در مورد فریمورک‌های مشابه مانند React Native، بسیاری از کاربران درخواست پشتیبانی وب را آغاز کردند.
اکنون، با استفاده از این SDK برای Flutter Web، می‌توانید راه حل‌های چند سکویی را برای هر دو سیستم عامل تلفن همراه و وب پیاده سازی کنید.
آیا برای پیاده سازی اپلیکیشن باید کاتلین هم یاد گرفت یا تنها فلاتر کافی است؟
اگر می‌خواهید اپلیکیشن‌های نیتیو ایجاد کنید باید کاتلین و سوئیفت را فرا بگیرید. و اگر می‌خواهید برنامه هیبریدی ایجاد کنید، باید به سراغ فلاتر بروید. flutter از زبان Dart گوگل استفاده می‌کند. یادگیری دارت چندان متفاوت نیست. اما در مقایسه با سایر کتابخانه‌ها، تعداد کمتری از کتابخانه‌ها برای فلاتر موجود است.

مشتریان فلاتر

چه شرکت‌هایی از فلاتر استفاده می‌کند؟
- گوگل
- علی بابا
- Grab
- نیویورک تایمز
- Ebay
- GROUPON
- CapitalOne
- Tencent
- Square
- BMW
- Sonos
- EMAAR
- Dream 11

اشکال زدایی برنامه‌های Flutter

به لطف ویژگی بارگذاری مجدد، اشکال زدایی برنامه‌های فلاتر آسان است. Hot Reload به شما این امکان را می‌دهد که خروجی تغییرات کد را در بلادرنگ بدون شکستن state فعلی مشاهده کنید. هم در شبیه سازها و هم در دستگاه‌ها پشتیبانی می‌شود.
برنامه‌های Flutter در طول توسعه بر روی یک ماشین مجازی دارت اجرا می‌شوند و از کامپایل Just-in-time (JIT) برای پشتیبانی از Hot Reload استفاده می‌کنند. Flutter طیف گسترده‌ای از ابزارهای اشکال زدایی را با ویژگی DevTools خود ارائه می‌دهد. DevTools بینش‌های ارزشمندی را برای بازرسی UI، نمایه سازی CPU، حافظه و پروفایل شبکه و غیره ارائه می‌دهد. DevTools در یک مرورگر اجرا می‌شود، و همچنین به عنوان افزونه در Android Studio و VS Code در دسترس است.
آموزش توسعه اپلیکیشن موبایل با فلاتر
شما برای آموزش توسعه اپلیکیشن موبایل با فلاتر باید مهارت‌های کار با فریمورک، دانش کاملی در مورد برنامه نویسی شی گرا و دانش اولیه در مورد فریمورک اندروید و برنامه نویسی دارت را داشته باشید. اگر در هر یک از این مفاهیم مبتدی هستید، به شما پیشنهاد می‌کنیم قبل از شروع با فلاتر، ابتدا آموزش‌های مربوط به این موارد را مرور کنید.
این دوره‌های آموزش فلاتر برای حرفه‌ای‌هایی که آرزوی حرفه‌ای شدن در زمینه اپلیکیشن‌های موبایل را دارند آماده شده است. این آموزش قصد دارد تا شما را در شروع کار با فریم ورک فلاتر و عملکردهای مختلف آن راحت کند.
به طور کلی، توسعه یک اپلیکیشن موبایل یک کار پیچیده و چالش برانگیز است. فریمورک‌های زیادی برای توسعه اپلیکیشن موبایل وجود دارد. اندروید یک فریمورک نیتیو مبتنی بر زبان جاوا و iOS است که یک فریمورک نیتیو مبتنی بر زبان Objective-C / Swift ارائه می‌کند.
با این حال، برای توسعه برنامه‌ای که از هر دو سیستم‌عامل پشتیبانی می‌کند، باید به دو زبان مختلف با استفاده از دو فریمورک متفاوت کدنویسی کنیم. برای کمک به غلبه بر این پیچیدگی، چارچوب‌های موبایلی وجود دارد که از هر دو سیستم عامل پشتیبانی می‌کند. این فریم‌ورک‌ها از فریمورک برنامه کاربردی تلفن همراه ترکیبی ساده مبتنی بر HTML (که از HTML برای رابط کاربری و جاوا اسکریپت برای منطق برنامه استفاده می‌کند) تا فریمورک خاص زبان پیچیده (که تبدیل کد به کد اصلی را انجام می‌دهد) را شامل می‌شود. صرف نظر از سادگی یا پیچیدگی، این فریمورک‌ها همیشه دارای معایب زیادی هستند که یکی از ایرادات اصلی عملکرد کند آنهاست.
در این سناریو، Flutter - یک فریمورک ساده و با کارایی بالا مبتنی بر زبان دارت، با رندر کردن رابط کاربری مستقیماً در canvas سیستم عامل و نه از طریق فریمورک اصلی، عملکرد بالایی را ارائه می‌کند.
Flutter همچنین بسیاری از ویجت‌های آماده برای استفاده (UI) را برای ایجاد یک برنامه مدرن ارائه می‌دهد. این ویجت‌ها برای محیط موبایل بهینه شده‌اند و طراحی اپلیکیشن با استفاده از ویجت‌ها به سادگی طراحی HTML است.
به طور خاص، برنامه Flutter خود یک ویجت است. ویجت‌های Flutter از انیمیشن‌ها و ژست‌ها نیز پشتیبانی می‌کنند. منطق برنامه مبتنی بر برنامه نویسی واکنش گرا است. ویجت ممکن است به صورت اختیاری حالت داشته باشد. با تغییر وضعیت ویجت، Flutter به طور خودکار (برنامه نویسی واکنش گرا) وضعیت ویجت (قدیمی و جدید) را مقایسه می‌کند و به جای رندر کردن مجدد کل ویجت، ویجت را تنها با تغییرات لازم رندر می‌کند.
دوره‌های آموزش فلاتر
این دوره‌های آموزشی اصول اولیه فریم ورک فلاتر، نصب Flutter SDK، راه اندازی اندروید استودیو برای توسعه اپلیکیشن مبتنی بر فلاتر، معماری فریمورک فلاتر و توسعه انواع اپلیکیشن‌های موبایل با استفاده از فریم ورک فلاتر را ارائه می‌دهد.
این دوره‌های آموزشی فلاتر برای حرفه‌ای‌هایی که آرزوی حرفه‌ای شدن در زمینه اپلیکیشن‌های موبایل را دارند آماده شده است. این دوره‌های آموزشی قصد دارد تا شما را در شروع کار با فریم ورک فلاتر و عملکردهای مختلف آن راحت کند.

مثال‌های فلاتر (Flutter)
Hello World در فلاتر چنین است:

import 'package:flutter/material.dart';
void main() => runApp(HelloWorldApp());
class HelloWorldApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
- return MaterialApp(
-- title: 'Hello World App',
-- home: Scaffold(
- - appBar: AppBar(
- -- title: Text('Hello World App'),
- - ),
- - body: Center(
- -- child: Text('Hello World'),
- - ),
-- ),
- );
  }
}

جمع بندی
 دلیل اصلی رتبه بندی Flutter در مقایسه با سایر فریم ورک‌های مشابه، توانایی پاسخگویی به 6 پلتفرم مختلف تنها با یک کد پایه است. علاوه بر این، Flutter با ویجت‌های از پیش ساخته شده، مدیریت state و ابزارهای اشکال زدایی بصری زندگی توسعه دهندگان را آسان می‌کند. همچنین توسط یک جامعه توسعه دهندگان عظیم و غول‌های صنعت پشتیبانی می‌شود.

android-studio

iranrepo 403

فریمورک آیونیک (ionic Framework)

کیت توسعه نرم‌افزار (Software Development Kit | SDK) یک مجموعه از ابزارهای توسعه نرم‌افزار در یک بسته ویژه نصب است.
فریمورک یا چارچوب نرم‌افزاری (Software Framework) پلتفرمی برای توسعه نرم‌افزارهای کاربردی است. فریمورک مبنایی را فراهم می‌کند که توسعه‌دهندگان نرم‌افزار می‌توانند برنامه‌های خود را بر اساس آن برای یک پلتفرم خاص تولید کنند. برای مثال، یک فریموک ممکن است حاوی کلاس‌ها و توابع از پیش تعریف شده‌ای باشد که برای پردازش ورودی، مدیریت دستگاه سخت‌افزاری و تعامل با نرم‌افزار سیستمی قابل استفاده هستند. فریمورک کار برنامه‌نویسی را از این جهت تسهیل و تسریع می‌کند که توسعه‌دهنده نیاز ندارد که هر بار کارهای تکراری انجام دهد و اصطلاحا چرخ را از نو بسازد.

فریمورک آیونیک (ionic Framework) یک کیت توسعه نرم‌افزار متن‌باز برای توسعه برنامه‌های کاربردی موبایل است. فریمورک آیونیک توسط مکس لینچ (Max Lynch)، بن اسپری (Ben Sperry) و آدام بردلی (Adam Bradley) از شرکت «دریفت» (Drift) توسعه پیدا کرده است. نسخه اصلی فریمورک آیونیک در سال ۲۰۱۳ میلادی منتشر شد. این نسخه با استفاده از انگولارجی‌اس ( AngularJS) و آپاچی کاردوا (Apache Cordova) ساخته شده بود.
اگرچه، آخرین نسخه‌های فریمورک آیونیک به عنوان یک مجموعه از مولفه‌های وب (Web Components) بازسازی شده‌اند و بدین شکل به کاربر این امکان را می‌دهند که هر چارچوب رابط کاربری () مانند انگولار (Angular)، ری‌اکت (React) یا ووجی‌اس (Vue.js) را انتخاب کنند. این بازسازی به کاربر این امکان را نیز می‌دهد که از مولفه‌های فریمورک آیونیک بدون هرگونه چارچوب رابط کاربری استفاده کند.
فریمورک آیونیک ابزارها و خدماتی را برای توسعه برنامه‌های کاربردی موبایل، دسکتاپ و برنامه‌های پیشرفته وب (Progressive Web Application) بر مبنای فناوری‌های توسعه وب مدرن مانند سی‌اس‌اس (CSS)، اچ‌تی‌ام‌ال۵ (HTML5) و نرم‌افزار به عنوان سرویس (Sass) می‌دهد. به طور کلی، برنامه‌های کاربردی موبایل را می‌توان با بهره‌گیری از این فناوری‌ها ساخت و سپس، از طریق فروشگاه‌های برنامه محلی هر پلتفرم (گوگل پلی در اندروید، اپ استور در آیفون و دیگر موارد ) توزیع کرد تا روی دستگاه‌ها با به کارگیری آپاچی کوردوا (Apache Cordova) یا کپسیتور (Capacitor) نصب شوند.
در واقع، فریمورک آیونیک یک جعبه ابزار متن‌باز برای رابط کاربری (User Interface | UI) برای ساخت برنامه‌های کاربردی دارای کیفیت بالا برای موبایل و دسکتاپ با استفاده از فناوری‌های وب مانند HTML، جاوااسکریپت و CSS ضمن یکپارچه‌سازی با چارچوب‌های وبی مانند انگولار، ری‌اکت و وو (Vue) است.
فریمورک آیونیک روی تعاملات تجربه کاربری (User Experience) و رابط کاربری یک برنامه شامل کنترل‌های رابط کاربری، تعاملات، ژست‌ها و انیمیشن‌ها متمرکز است. یادگیری و یکپارچه‌سازی چارچوب آیونیک با دیگر کتابخانه‌ها یا فریمورک‌ها، مانند انگولار، ری‌اکت و Vue آسان است. در عین حال، می‌توان از آیونیک به صورت مستقل و بدون هرگونه فریمورک فرانت-اند استفاده کرد. آیونیک احتمالا در حال حاضر تنها استک برنامه‌های کاربردی موبایل است که توسعه‌دهندگان وب را قادر می‌سازد تا برنامه‌های کاربردی را برای همه فروشگاه‌های برنامه اصلی و وب موبایل از یک پایگاه کد بسازند. در بخش بعدی از مطلب آموزش ionic به تاریخچه این فریمورک پرداخته شده است تا کاربران با روند توسعه این فریمورک و چگونکی افزایش محبوبیت آن بهتر آشنا شوند.
 در فریمورک آیونیک نسخه ۴ به توسعه‌دهندگان امکان آن داده می‌شود که چارچوب‌های دیگری به جز انگولار مانند ری‌اکت، Vue.js یا مولفه‌های وب را انتخاب کنند. در بخش بعدی از مطلب آموزش ionic به اهداف توسعه فریمورک آیونیک پرداخته شده است.

توسعه‌دهندگان فریمورک آیونیک چند هدف اصلی شامل چندسکویی (Cross-Platform) بودن، طراحی زیبا، سادگی و مبتنی بر وب بودن را دنبال می‌کنند. در بخش بعدی از مطلب آموزش ionic خدمات ارائه شده و ویژگی‌های فریمورک آیونیک مورد بررسی قرار گرفته‌اند.

خدمات و ویژگی‌های فریمورک آیونیک
آیونیک از Cordova و پلاگین‌های Capacitor برای دسترسی داشتن به ویژگی‌های سیستم‌عامل میزبان مانند دوربین، جی‌پی‌اس (GPS)، چراغ قوه و دیگر موارد استفاده می‌کند. کاربران می‌توانند برنامه‌های کاربردی خود را با آیونیک بسازند و سپس، آن‌ها را برای اندروید، iOS، ویندوز، دسکتاپ (با استفاده از چارچوب نرم‌افزاری الکترون) یا مرورگرهای وب مدرن سفارشی‌سازی کنند. فریمورک آیونیک به کاربران امکان ساخت و استقرار برنامه‌های کاربردی را با بهره‌گیری از ابزار ساخت Cordova یا Capacitor با یک ابزار خط فرمان ساده‌سازی شده آیونیک می‌دهد.
فریمورک آیونیک شامل مولفه‌های موبایل، تایپوگرافی، پارادایم‌های تعاملی و تم پایه قابل توسعه است. با استفاده از مولفه‌های وب، فریمورک آیونیک مولفه‌های سفارشی‌سازی شده و روش‌هایی را برای تعامل با آن‌ها فراهم می‌کند. یکی از این مولفه‌ها، پیمایش مجازی (Virtual Scroll)، به کاربران امکان پیمایش از طریق لیستی از هزارن آیتم را بدون هرگونه تغییر ویژه‌ای در کارایی می‌دهد. مولفه دیگر، سربرگ‌ها (Tabs) هستند که یک رابط کاربری دارای سربرگ را با پشتیبانی از ناوبری حالت محلی (Local State Navigation) و مدیریت حالت تاریخچه می‌دهد.

خدمات و ویژگی‌های فریمورک آیونیک
علاوه بر کیت توسعه نرم‌افزار، فریمورک آیونیک خدماتی را فراهم می‌کند که توسعه‌دهندگان می‌توانند از آن برای فعال کردن ویژگی‌هایی مانند استقرار نرم‌افزار و خودکارسازی ساخت استفاده کنند. فریمورک آیونیک محیط توسعه یکپارچه (Integrated Development Environment | IDE) مختص خود را با عنوان آیونیک استودیو (ionic Studio) ارائه می‌کند. فریمورک آیونیک یک واسط خط فرمان (Command Line Interface | CLI) برای ساخت پروژه‌ها را فراهم می‌کند. همچنین، CLI به توسعه‌دهندگان این امکان را می‌دهد تا پلاگین‌های Cordova و دیگر بسته‌های فرانت-اند را اضافه، پوش نوتیفیکیشن‌ها (Push Notifications) را فعال، آیکون‌های برنامه کاربردی و صفحه آغازین (Splash Screen | اسپلش اسکرین) را تولید کنند و فایل‌های دودویی محلی را بسازند. در بخش بعدی از مطلب آموزش ionic مزایای آن مورد بررسی قرار گرفته‌اند.

مزایای آیونیک
آیونیک به گونه‌ای طراحی شده که به زیبایی روی همه دستگاه‌ها و پلتفرم‌های موبایل نمایش داده شود. با بهره‌گیری از مولفه‌ها، تایپوگرافی‌ها و تم‌های پایه از پیش آماده که با پلفترم‌های گوناگون سازگاری دارند، امکان ساخت برنامه‌های کاربردی به خوبی فراهم است. آیونیک از راهنماهای رابط کاربری و SDK بومی برنامه استفاده می‌کند و بدین شکل، استانداردهای رابط کاربری و ویژگی‌های دستگاه مربوط به برنامه بومی را با قدرت و انعطاف‌پذیری کامل وب باز به همراه دارد. آیونیک از Capacitor یا Cordova برای استقرار بومی یا اجرا در مرورگر به عنوان یک برنامه پیشرفته وب استفاده می‌کند. برخی از اصلی‌ترین مزایای آیونیک در ادامه بیان شده‌اند.
-    توسعه سریع نسبت به برنامه‌های مشابه
-    امکان انجام عمده کارهای توسعه در مرورگر
-    امکان توسعه برنامه هم برای اندروید و هم برای iOS
-    مولفه‌های رابط کاربری متعدد موجود
-    پلاگین‌های گوناگون موجود
-    آشنایی با جاوا اسکریپت، انگولار، HTML و CSS همه انچه است که کاربر نیاز دارد. شایان توجه است که نیازی به جاوا، سوئیف یا آبجکتیو سی نیست.
در بخش بعدی از مطلب آموزش ionic  معایب آیونیک بررسی شده‌اند.

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

پلتفرم‌هایی پشتیبانی از فریمورک آیونیک
برای اندروید، آیونیک از اندروید ۴٫۴ و بالاتر پشتیبانی می‌کند. برای iOS، فریمورک آیونیک از iOS 10 و بالاتر پشتیبانی می‌کند. آیونیک ۲ از یونیورسال ویندوز پلتفرم (Universal Windows Platform) برای ساخت برنامه‌های کاربردی ویندوز ۱۰ استفاده می‌کند. فریمورک آیونیک بر مبنای انگولار جی‌اس (Angular.js) از برنامه‌های کاربردی سیستم‌عامل موبایل بلک‌بری ۱۰ (BlackBerry 10) پشتیبانی می‌کند. در بخش بعدی از مطلب آموزش ionic کارایی فریمورک آیونیک مورد بررسی قرار گرفته است.

کارایی فریمورک آیونیک
برنامه‌های کاربردی آیونیک با ترکیبی از کد محلی و کد وب اجرا می‌شوند و دسترسی کامل به کارکردهای محلی را در صورت لزوم، همراه با بخش عمده‌ای از رابط کاربری برنامه کاربردی ساخته شده با استانداردهای فناوری وب، فراهم می‌کنند. فریمورک آیونیک از ویژگی شتاب‌دهی محلی سخت‌افزار که در مرورگر در دسترس است (مانند انیمیشن‌های CSS) استفاده و رندرینگ را بهینه‌سازی می‌کند (با اجتناب از دستکاری پرهزینه مدل شیءگرای سند). فریمورک آیونیک از انتقال‌ها و تبدیل‌های CSS به عنوان راهی برای به کارگیری واحد پردازش گرافیکی (Graphics Processing Unit | GPU) و بیشینه‌سازی زمان موجود پردازنده استفاده می‌کند. در بخش بعدی از مطلب آموزش ionic روش نصب فریمورک آیونیک مورد بررسی قرار گرفته است.

آموزش ionic و نصب آن
فریمورک آیونیک یک ماژول ان‌پی‌ام (NPM Module) است و بنابراین برای فریمورک آیونیک نیاز به نود.جی‌اس (Node.js) است. برنامه‌های کاربردی آیونیک اساسا از طریق خط فرمان ساخته شده و توسعه پیدا کرده‌اند. خط فرمان ionic روش ترجیح داده شده برای نصب آیونیک است، زیرا طیف وسیعی از ابزارهای توسعه را به همراه کمک‌های دیگر ارائه می‌کند. این مورد همچنین ابزار اصلی است که می‌توان برنامه را با بهره‌گیری از آن اجرا و آن را به دیگر سرویس‌ها مانند Appflow متصل کرد. به افرادی که با چگونگی راه‌اندازی محیط برای آیونیک آشنایی ندارند، مطالعه زیر بخش زیر از مطلب آموزش ionic توصیه می‌شود.

راه‌اندازی محیط توسعه
برای شروع به کار با چارچوب آیونیک، تنها پیش‌نیازها وجود نود (Node) و محیط npm است. البته، یک ویرایشگر متن نیز مورد نیاز است.
ترمینال
بیشتر کار توسعه آیونیک نیاز به استفاده از خط فرمان دارد. به طور کلی، استفاده از ترمینال‌های توکار (Built-in Terminals) توصیه می‌شود. بسیاری از ترمینال‌های شخص ثالث به خوبی با آیونیک کار می‌کنند، اما ممکن است برخی از آن‌ها پشتیبانی نشوند.
-    در ویندوز، Command Prompt و PowerShell پشتیبانی می‌شوند. WSL با آیونیک کار می‌کند، اما ممکن است در آن پشتیبانی نشود.
-    برای macOS، ترمینال توکار پشتیبانی می‌شود.
گیت بش (Git Bash) از تعامل TTY پشتیبانی نمی‌کند و توسط آیونیک پشتیبانی نمی‌شود.
Node و npm
تقریبا همه ابزارهای موجود برای پروژه‌های مدرن جاوا اسکریپت بر مبنای Node.js هستند. در این صفحه [+] بسته‌های نصب از پیش ساخته شده آیونیک برای همه پلتفرم‌ها است. استفاده از نسخه دارای پشتیبانی بلند مدت (LTS) برای حصول اطمینان از سازگاری بالا توصیه می‌شود. نود با npm یا همان مدیر بسته جاوا اسکریپت همراه است. برای تایید نصب، باید یک پنجره جدید ترمینال را باز و دستور زیر را اجرا کرد:
node --version
npm --version
نکته: وقوع خطاها در macOS هنگام نصب بسته‌های سراسری با مدیر بسته npm امری متداول است.
نصب خط فرمان ionic
پیش از پردازش، باید اطمینان حاصل کرد که روی کامپیوتر کاربر Node.js نصب شده است. در ادامه، نصب با استفاده از مدیر بسته npm که مدیر بسته اختصاصی جاوا اسکریپت است انجام می‌شود. در صورتی که نسخه نصب شده‌ای از خط فرمان آیونیک از پیش وجود دارد، نیاز به حذف آن به دلیل تغییر نام بسته است.
npm install -g @ionic/cli
نکته: گزینه g- به معنای آن است که نصب به صورت سراسری انجام می‌شود و در واقع معادلی برای دستور install globally است. هنگامی که بسته‌ها به صورت سراسری نصب شدند، امکان وقوع خطای EACCES وجود دارد. راه‌اندازی بسته npm به طور سراسری و بدون دسترسی‌های مجاز مفروض است.
آغاز برنامه کاربردی با آیونیک
ساخت یک برنامه کاربردی با استفاده از یکی از الگوهای از پیش آماده، یا یک تمپلیت سفید برای آغاز کار از پایه، انجام می‌شود. سه مورد از متداول‌ترین آغازها شروع‌گر blank، شروع‌گر tabs و شروع‌گر sidemenu هستند. کار با دستور ionic start آغاز می‌شود.
ionic start myApp tabs
آغاز برنامه کاربردی با آیونیک
شروع یک برنامه جدید آیونیک فوق‌العاده ساده است. با استفاده از خط فرمان، باید دستور ionic start را اجرا کرد و پس از آن CLI بقیه کارها را مدیریت می‌کند.
ionic start
Every great app needs a name! ?
Please enter the full name of your app. You can change this at any time. To bypass this prompt next time, supply name, the first argument to ionic start.
? Project name: █
CLI آیونیک، پیام درخواست نام پروژه جدید و اینکه از کدام قالب استفاده شود را نمایش می‌دهد. این جزئیات را می‌توان به عنوان آرگومان‌های دستور فراهم کرد.
ionic start myApp tabs
در اینجا، myApp نام پروژه، tabs الگوی شروع کار و نوع پروژه angular است. tabs تنها الگوی پروژه موجود نیست. برای همه انواع پروژه‌ها، سه الگو در دسترس هستند.
    tabs: یک لایوت مبتنی بر tabs
    sidemenu: یک لایوت مبتنی بر sidemenu
    blank: یک پروژه خالی با یک صفحه
می‌توان همه الگوهای موجود را با دستور زیر دید.
ionic start --list
این الگوها یک نقطه شروع بزرگ برای هر برنامه کاربردی را فراهم می‌کنند و شامل همه بِه‌روش‌ها برای ساخت یک مقیاس مبتنی بر کد می‌شوند.
اجرای برنامه کاربردی
بخش عمده توسعه برنامه آیونیک را می‌توان در مرورگر با استفاده از دستور ionic serve انجام داد.
cd myApp
ionic serve
راهکارهایی برای اجرای یک برنامه کاربردی وجود دارد و توصیه می‌شود تا کار با این جریان کاری آغاز شود. گزینه‌های گوناگونی برای تست کارکرد محلی، بسته به پلتفرم هدف مورد نظر کاربر، وجود دارد که در ادامه بیان شده‌اند.
    اجرا به صورت محلی در مرورگر وب (با استفاده از شناسایی پلتفرم برای کارکرد محلی)
    استقرار در iOS
    استقرار در اندروید
اجرای محلی در مرورگر وب
یکی از قدرتمندترین ویژگی‌های آیونیک آن است که کلیت توسعه برنامه کاربردی در مرورگر وب کاربر قابل انجام است. با دسترسی کامل به ابزارهای توسعه وب سنتی (کروم، سافاری، فایرفاکس) می‌توان کدنویسی کرد و سپس، بدون نیاز به کامپایل مجدد یا استقرار در یک شبیه‌ساز یا دستگاه، می‌توان به تست/عیب‌یابی کد پرداخت. برای انجام این کار، باید ionic serve را از خط فرمان در دایرکتوری پروژه اجرا کرد.
ionic serve
> ng run app:serve --host=0.0.0.0 --port=8100
[INFO] Development server running!
Local: http://localhost:8100
External: http://192.168.1.169:8100
Use Ctrl+C to quit this process
[INFO] Browser window opened to http://localhost:8100!
با اجرای ionic serve، باید کار توسعه برنامه را ادامه داد. با ذخیره‌سازی تغییرات، برنامه کاربردی با برخی از تغییرات اعمال شده مجددا بارگذاری می‌شود. هنگام اجرای کارکرد بومی، از شناسایی پلتفرم استفاده می‌شود.
ساخت یک برنامه کاربردی انگولار با آیونیک
در این بخش از مطلب آموزش ionic روش ساخت یک برنامه کاربردی با استفاده از این فریمورک تشریح شده است. ابتدا باید یک برنامه کاربردی انگولار را ساخت که از الگوی شروع کننده «Tabs» استفاده می‌کند و Capacitor را برای کارکردهای محلی اضافه کرد.
ionic start photo-gallery tabs --type=angular --capacitor
این شروع‌گر برنامه با سه صفحه از پیش‌ساخته و به‌روش‌هایی برای توسعه آیونیک همراه می‌شود. با بلوک‌های ساخت متداول در محل، می‌توان ویژگی‌های بیشتر را به سادگی اضافه کرد. سپس، باید به پوشه برنامه تغییر داد.
cd photo-gallery
در گام بعد، نیاز به نصب پلاگین‌های Capacitor لازم برای آن است که کارکردهای محلی برنامه کار کنند.
npm install @capacitor/camera @capacitor/storage @capacitor/filesystem
PWA Elements
برخی از پلاگین‌های Capacitor شامل Camera API، کارکردهای مبتنی بر وب و رابط کاربری با کتابخانه PWA Elements است. این یک وابستگی جدا است، بنابراین بعدا آن را باید نصب کرد:
npm install @ionic/pwa-elements
اکنون باید ionic/pwa-elements@ را با ویرایش src/main.ts وارد کرد.
import { defineCustomElements } from '@ionic/pwa-elements/loader';
// Call the element loader after the platform has been bootstrapped
defineCustomElements(window);
اجرای برنامه کاربردی
سپس، باید دستور بعدی را اجرا کرد.
ionic serve
اکنون، برنامه آیونیک در مرورگر وب اجرا می‌شود. اغلب برنامه‌های کاربردی را می‌توان در مرورگر ساخت و تست کرد و این به شدت سرعت توسعه و تست را افزایش می‌دهد.
گالری تصاویر
سه سربرگ وجود دارد. باید روی سربرگ Tab2 کلیک کرد. این یک بوم سفید است که محل مناسبی برای تبدیل به یک گالری تصاویر محسوب می‌شود. خط فرمان آیونیک دارای Live Reload است، بنابراین می‌توان تغییرات را انجام داد و آن‌ها را ذخیره کرد. برنامه به سرعت به روز رسانی می‌شود.
گالری تصاویر در فریمورک آیونیک
برای مشاهده تصویر متحرک بالا در ابعاد اصلی و با وضوح بیشتر روی آن کلیک کنید.
اکنون باید پوشه برنامه کاربردی گالری تصاویر (Photo-Gallery) را در ویرایشگر کد باز و سپس به src/app/tab2/tab2.page.html/ جابه‌جا کرد. آنچه مشاهده می‌شود به صورت زیر است.
<ion-header>
  <ion-toolbar>
    <ion-title>Tab 2</ion-title>
  </ion-toolbar>
</ion-header>
<ion-content>
  <ion-header collapse="condense">
    <ion-toolbar>
      <ion-title size="large">Tab 2</ion-title>
    </ion-toolbar>
  </ion-header>
</ion-content>
ion-header جهت‌یابی بالا و جعبه ابزار را با «Tab 2» در عنوان ارائه می‌کند. هر دو عنصر ion-title به صورت زیر تغییر نام پیدا می‌کنند.
<ion-title>Photo Gallery</ion-title>
جنبه‌های بصری برنامه کاربردی در <ion-content> قرار داده می‌شود. در این مثال، این همان جایی است که کلیدی اضافه می‌شود که دوربین دستگاه را باز می‌کنند و تصویر ثبت شده توسط دوربین را نمایش می‌دهد. این کار با افزودن گزینه کلید اقدام شناور (Floating Action Button | FAB) شروع می‌شود. این کلید به پایین صفحه اضافه می‌شود و تصویر دوربین به عنوان آیکون تنظیم می‌شود.
<ion-content>
<ion-fab vertical="bottom" horizontal="center" slot="fixed">
    <ion-fab-button>
      <ion-icon name="camera"></ion-icon>
    </ion-fab-button>
  </ion-fab>
</ion-content>
اکنون، src/app/tabs/tabs.page.html باز می‌شود. برچسب را باید به «Photos» و نام آیکون را به «images» تغییر داد.
<ion-tab-button tab="tab2">
  <ion-icon name="images"></ion-icon>
  <ion-label>Photos</ion-label>
</ion-tab-button>
اکنون همه تغییرات را باید ذخیره کرد تا بتوان اعمال آن‌ها به صورت خودکار را در مرورگر مشاهده کرد. این تنها آغاز همه کارهای جذابی است که می‌توان با آیونیک انجام داد.

زامارین ( Xamarin )


زامارین، یک تکنولوژی باورنکردنی سی شارپ
زامارین
زامارین چیستزامارین یک شرکت نرم‌افزاری است که ابزارهای توسعه نرم‌افزار تجاری را تولید میکند. این شرکت در سال 2011 در ایالت کالیفرنیا توسط پروژه متن باز Mono Android خلق شد.
هدف زامارین این بود که به وسیله زبان برنامه‌نویسی سی‌شارپ برنامه‌هایی برای سه پلتفرم اندروید، آیفون و ویندوزفون نوشته شود. بالاخره در اوایل سال 2016 زامارین توسط شرکت مایکروسافت خریداری شد و این آغاز شروعی تازه برای زامارین و مایکروسافت بود که به وسیله سیاست‌های جدید مایکروسافت و استراتژی جدید cloud first (ابر رایانه) و mobile first (اولین تلفن همراه) یک شانس بزرگ برای زامارین و محصولاتش بود. پس با پروژه متن‌بازMono  بستری فراهم کردند که بتوان با استفاه از C# و .Net برنامه‌هایی چون ios، os x و اندروید ساخت. برای اندروید محصول xamarin.Android را به بازار عرضه کرد.
چند سکویی بودن زامارین:
همان‌طور که در معرفی زبان برنامه‌نویسی زامارین گفتیم، این زبان ابزاری است که برای طراحی و ساخت نرم‌افزارهایی با قابلیت استفاده در تمام گوشی‌های موبایل تحت سیستم عامل‌های متفاوت به کار گرفته میشود؛ یعنی زمانی که شما با استفاده از زبان سی‌شارپ در فضای زامارین اقدام به ساخت اپلیکیشن میکنید دیگر نیازی به تغییر یا بازنویسی آن (مثلا به زبان جاوا و...) جهت استفاده در دیگر پلتفرم‌ها ندارید. در واقع میتوانیم بگوییم این زبان یک ابزار برنامه‌نویسی چند سکویی است.
ممکن است این سوال برایتان پیش آید که اصلا برنامه چند سکویی به چه برنامه‌ای گفته میشود؟
برنامه چندسکویی به برنامه‌نویسی نرم‌افزارهایی گفته میشود که قابلیت اجرا در چندین پلتفرم را هستند و به 2 دسته تقسیم میشوند.
    دسته اول: برنامه‌هایی که برنامه‌نویس یک‌بار آنها را مینویسد و کامپایلر خودش برای هر سیستم‌عامل یک نسخه جداگانه تولید میکند.
    دسته دوم: برنامه‌هایی هستند که توسط زبان‌های تفسیر شده نوشته میشوند وتوسط مفسرهای موجود در هر پلتفرم قابل اجرا هستند. زبان‌های برنامه‌نویسی مفسر به آن دسته از زبان‌هایی گفته میشود که برای استفاده نیازمند یک مفسر است مثل html یا js .
خب حالا مزایای توسعه برنامه‌های موبایل چند سکویی چیست؟
    استفاده دوباره کدها
    توسعه سریع
    پیاده‌سازی آسان‌
    ایده‌آل برای نمونه‌سازی اولیه
رقیب سرسخت زامارین:
رقیب سرسخت زامارین کیست؟زبانی که با زامارین در حال رقابت است زبان جاواست. این زبان محبوبیت زیادی بین برنامه‌نویسان برای تولید اپلیکیشن‌های موبایلی دارد و میتوان گفت یک رقیب سرسخت برای زامارین به شمار میرود؛ اگرچه قدرتمند بودن زبان جاوا را نمیشود انکار کرد.
 در حیطه برنامه‌نویسی تحت موبایل، برای اندروید از جاوا و چندین ابزار آن استفاده میشود یا برای برنامه نویسی بر روی ios از زبان objective c  و ابزارهای آن استفاده میشود و یا برای برنامه‌نویسی درwindos phone  از زبان C# و visual studio استفاده می‌گردد. اما زامارین این امکان را به شما می‌دهد که با استفاده از زبان سی‌شارپ برای هر3 پلتفرم موبایلی که گفته شد تنها با یک محیط و یک زبان مشترک برنامه‌نویسی کنید.
حقایقی از زامارین:
    یکی از کارآمد‌ترین پلتفرم‌هایی که در ساخت برنامه‌ها با سیستم عامل‌های مختلف استفاده می‌شود. به جای طراحی جداگانه برای هر سیستم، می‌توانید تقریبا 75 تا 90 درصد کدهای توسعه یافته را در همه سیستم عامل‌های بزرگ تلفن همراه به اشتراک بگذارید. با این وجود هزینه طراحی و زمان ورود به بازار کاهش پیدا میکند.
    UX عالی را ارائه می‌دهد.
    یکپارچگی، کیفیت و تست عملکرد را در طیف وسیعی از دستگاه‌ها تضمین می‌کند.
حقایق بیشتری از زامارین بدانید:
    به‌خاطر چند‌سکویی بودن زامارین، می‌توانید به راحتی تغییرات را برای فایل منبع گسترش دهید. یعنی نگهداری آسان‌تر
    توسعه‌دهندگان مک و ویندوز جهت ساخت برنامه‌های iOS Apple Watch، از زامارین استفاده می‌کنند و این یعنی پشتیبانی این تکنولوژی از برنامه ساعت‌های هوشمند.
    آیا می‌دانستید زامارین محدود به توسعه برنامه تلفن همراه نیست و می‌توانید با آن برنامه‌هایی چون: Wearable،Mac،TvOs و بازی‌های OpenGL و SceneKit/SpriteKit/Metal را توسعه دهید.
    نوشتن کدهای چندگانه در زمان مشابه برای ساخت برنامه‌های بومی در سیستم عامل‌های مختلف ارزشمند نیست و با استفاده از زامارین می‌توانیم زمان و هزینه را کاهش دهیم که می‌توانیم همان کد پایه (70 تا 80 درصد کد) را برای ایجاد برنامه‌های تلفن همراه بومی دوباره استفاده کرد. 
چه شرکت‌های مشهوری از زامارین استفاده می‌کنند؟
    Cognizant
    Bosch
    Siemens
    LEAP
    3M
    Slack
    Pinterest
مزایای زامارین:
    امکان انتقال کدها میان اپلیکیشن‌های ساخته شده با استفاده از زامارین صرف نظر از ساختار پلتفرمی که در آن قرار دارد.
    زامارین تنها چارچوبیست که در هر قالب پلتفرمی، ویژگی اپلیکیشن‌های (native) آن پلت‌فرم را به خوبی به خود میگیرد.
اپلیکیشن‌های native appnative app: به اپلیکیشن‌هایی گفته میشود که در محیط نرم‌افزاری مختص به پلت‌فرمی خاص ساخته میشود. مثلاْ برای استفاده در پلت‌فرم اندروید اپلیکیشنی را در Android studio طراحی کنیم.
    امکان ساخت اپلیکیشن‌های (IOS – Android – Windows phone ) با قابلیت انتقال کدهای یکسان (تا حدود ۹۶%)
    به شما امکان استفاده مجدد از کدها را داده و در عین حال تعداد پروژه‌ها را کاهش میدهد و این یعنی دارا بودن ویژگیportable class librariries 
    امکان اضافه کردن مؤلفه‌هایی شامل نمودارها، جداول، نماهای زیبا،[UI control]‌ها و… بصورت مستقیم از  .IDE
    با قالب زامارین رابط طراحی هر سه پلتفرم بصورت مشترک با چارچوب اساسی [XAML] خواهد بود.
معایب زامارین:
بعد از اینکه در مورد مزایای زامارین صحبت کردیم حال تعدادی از مشکلات و معایب آن را در بخش زیر قرار داده‌ایم:
    دارا بودن لایسنس
 Xamarin.Androidهمانند Xamarin.IOS و Xamarin.OS x ابزارهای تجاری هستند و باید خریداری شوند. البته در کشور ما این مشکل حادی نیست.معایب زامارین
    انتظار برای آپدیت
در اکثر مواقع وقتی که یک نسخه از اندروید به بازار عرضه می‌شود، مدت زمانی طول می‌کشد که شرکت Xamarin نرم‌افزار خود را آپدیت کند تا با آخرین نسخه اندروید سازگاری داشته باشد.
    کارایی (performance) و مدیریت حافظه
گاهی اوقات گفته می‌شود که استفاده از زبان #C برای توسعه برنامه‌های اندروید سرعت را کاهش می‌دهد ولی هنوز اندازه‌گیری و ارزیابی درستی از این قضیه به عمل نیامده است.
زامارین به چه صورتی کار می‌کند؟
بیشترین سوالی که پرسیده می‌شود این است که زامارین به چه صورتی کار می‌کند؟ آیا با استفاده از یک کد امکان توسعه اپلیکیشن برای تمامی پلتفرم‌ها وجود دارد؟
بله زامارین این امکان را به برنامه‌نویس میدهد.
با تبدیلSDK‌های Android و IOs بهC#، این قابلیت را به وجود آورده است که به تمامیAPI‌های Android و IOs دسترسی داشته باشد. زامارین با تبدیل اینSDK‌ها به سی شارپ، کار را برای توسعه اپلیکیشن موبایل راحت نموده است و با ادغام تمامیSDK‌ها، توسعه را با استفاده از یک زبان راحت، قدرتمند و فراگیر، میسر نموده است.
طرح اپلیکیشن‌ها (UI) در زامارین به چه صورتی می‌باشد؟ 
طرح اپلیکیشن‌ها در زامارینبرای طراحی  UI Xamarinمیتوان همانند سایر زبان‌ها عمل کرد. شما بایستی برای هر پلتفرم، UI متفاوتی را ایجاد کنید و آن را به Codebase متصل نمایید. برای طراحی UI اپلیکیشن، 2 راه پیش رو دارید:
استفاده از متدهای اصلی Native
استفاده از Xamarin.Form
نکته: استفاده از Xamarin Form این امکان را به شما می‌دهد که UI را فقط یکبار ایجاد کنید.
 ارزیابی کلی زامارین (xamarin) با توجه به مطالب گفته شده: 
دانستیم که زامارین یک پلتفرم انعطاف‌پذیر است که به طرز باور‌نکردنی کدهای سی‌شارپ را به راحتی در سیستم عامل‌های مختلف تلفن همراه کامپایل میکند. بنابراین هر آنچه که برنامه‌نویسان برای ساخت یک App حرفه‌ای نیاز دارند را فراهم کرده است.
شرکت مایکروسافت که در آن زمان حق مالکیت زامارین را گرفته بود به کاربران خود قول داد که در زمان نه چندان دور باUpdate‌های فراوان تمام Bug و مشکلات زامارین را حل کرده و بر قدرت این ابزار فرا پلتفرمی می‌افزاید.
هنگام مقایسه زامارین با دیگر ابزارهای برنامه‌نویسی باید توجه ویژه‌ای به افزایش کیفیت آن از زمان کسب مالکیت کامل زامارین توسط مایکروسافت (24 فوریه 2016) تا به امروز داشت. با توجه به کاسته شدن بسیاری از [Error]های رایج در زامارین ظرف این مدت و رفع مشکل عدم آشنایی توسعه‌دهنده‌ها [Developer] با [Error]ها که بی‌شک یکی از معایب هر ابزار نوپایی است، میتوان آینده روشنی را برای زامارین متصور شد.
پیشرفت‌های بزرگی در زمینه زامارین شکل گرفته است و شرکت‌های بزرگی از جمله Olo food،CA mobile :و سایر بانکها با بیش از 30 میلیون کاربر با مایکروسافت قرار داد بسته‌اند که برای بهبود تجارت الکترونیکی خودApp‌هایی با امنیت بالا ساخته شود.
البته اشاره به این امر هم ضروریست که با قرار گرفتن زامارین در محیط [Visual studio] محبوبیت آن در امر کار گروهی
[Team work] افزایش چشم‌گیری پیدا کرده است. دیگر اینکه، چه به عنوان مدیر پروژه و چه به عنوان توسعه‌دهنده [Developer]، در امر کنترل منبع [Source control] که یکی از مشکلات کار در محیط‌های [Native] و  [Android Studio]است، زامارین توانسته برتری بیشتری نسبت به ابزارهای کاری در محیط [Native] ایجاد کند. چنانکه میدانید هر بار که یکی از اعضای تیم بخواهد یک [Reference]  را بررسی نماید تمام اعضای گروه باید مدتها وقت صرف رفع [Error]‌ها بگذارند.
نتیجه گیری:
دوستان عزیز ممنون که تا اینجا مطلب همراه ما بودید. متوجه شدیم که زامارین چیست و چه ویژگی‌هایی دارد.
پس اگر با زبان سی‌شارپ آشنا هستید، فورا وارد دنیای برنامه‌نویسی زامارین شوید و اپلیکیشن‌های موبایلی را با توجه به علاقه خودنتیجه گیری زامارین چیست کد نویسی کنید. چرا که با استفاده از تکنولوژی زامارین و فقط با یادگیری سی‌شارپ می‌توانید برای تمامی پلتفرم‌ها کد بزنید و دیگر نیاز نیستSyntax‌های متفاوتی یاد بگیرید. برای توانایی این تکنولوژی میتوان گفت با استفاده از این زبان می‌توانید یک کد #C را روی ۲.۶ میلیارد دستگاه اجرا کنید و اگر هیچ شناختی درباره سی‌شارپ ندارید، نگران نباشید می‌توانید از دوره آموزش سی شارپ مقدماتی تا متوسط ما که به صورت رایگان است، استفاده کنید. ما در دوره تمامی مباحثی که به عنوان مفاهیم مقدماتی به آن نیاز دارید را به صورت کامل و کاملا کاربردی بیان کرده‌ایم. پس نتیجه میگیریم که برای ورود به دنیای زامارین باید با زبان شیرین سی‌شارپ آشنا باشیم.

MAUI

یک بار کدنویسی کنید و برای اندروید، ios، ویندوز و حتی مک خروجی بگیرید! بله درست خواندید با تکنولوژی جدید مایکروسافت یعنی MAUI که فقط چند ماه است که منتشر شده است می‌توانید با یک بار کدنویسی برای اکثر پلتفرم‌های محبوب و پر کاربرد خروجی بگیرید.

در دوره جامع آموزش MAUI از صفر تا صد همراه شما هستم و سعی می‌کنم تمام نکات لازم را حتی برای کسانی که هیچ آشنایی با این تکنولوژی ندارند در اختیارتان قرار دهم.

تمرکز ما در این دوره بر روی اپلیکیشن موبایل است البته از تمام مواردی که گفته می‌شود می‌توانید برای ساخت اپلیکیشن ویندوز و مک هم استفاده کنید و هیچ مانعی وجود ندارد.

تجربیات قبلی بنده نشان می‌دهد که دوره‌های پروژه محور هم یادگیری بسیار بهتری برای کاربران ایجاد می‌کنند و هم بسیار جذاب تر هستند. بنابراین در این دوره ما با هم 10 اپلیکیشن کامل خواهیم ساخت. تقریبا بعد از هر موضوع تئوری برای اینکه آن موضوع برای شما بهتر جا بیفتد یک اپلیکیشن عملی می‌سازیم.

تنها پیش نیاز برای این دوره این است که با سی شارپ (C#) آشنایی داشته باشید

تکنولوژی MAUI جایگزین Xamarin شده است و کمتر از چند ماه است که منتشر شده است، بنابراین بدانید با یادگیری این تکنولوژی در لبه علم برنامه نویسی حرکت می‌کنید و یکی از به روزترین زبان‌های برنامه نویسی را فرا می‌گیرید.

قبل از خرید دوره ویدیوی معرفی را ببینید تا با نسخه نهایی اپلیکیشن‌هایی که قرار است در طول دوره با هم بسازیم آشنا شوید.

پی نوشت: در ویدیوی معرفی دوره به 9 اپلیکیشن اشاره کردم اما در طول دوره تصمیم گرفتم یک اپلیکیشن دیگر هم اضافه کنم که در مجموع 10 اپلیکیشن عملی با هم میسازیم.

سرفصل‌های دوره:

فصل اول: معرفی MAUI و آماده سازی اولیه

فصل دوم: معرفی XAML

فصل سوم: معرفی انواع صفحات در  MAUI

فصل چهارم: معرفی انواع Layout‌ها در MAUI

فصل پنجم: معرفی کنترل‌ها

فصل ششم: ساخت اولین پروژه MAUI - انتخاب رنگ

فصل هفتم: ساخت دومین پروژه MAUI - اپلیکیشن محاسبه سهم پرداخت

فصل هشتم: آموزش کار کردن با عکس و فونت

فصل نهم: ساخت سومین پروژه - نقل قول بزرگان

فصل دهم: آموزش Data Binding

فصل یازدهم: ساخت چهارمین پروژه - بازی لغات

فصل دوازدهم: آموزش الگویMVVM

فصل سیزدهم: ساخت پنجمین پروژه - محاسبه گر BMI

فصل چهاردهم: جابجایی بین صفحات در MAUI

فصل پانزدهم: ساخت ششمین پروژه - اپلیکیشن تبدیل واحد

فصل شانزدهم: آموزش کار با استایل

فصل هفدهم: ساخت هفتمین پروژه - ماشین حساب

فصل هجدهم: کار با Collection View و لیست‌ها

فصل نوزدهم: ساخت هشتمین پروژه - TODO List

فصل بیستم: آموزش کار با Rest Api

فصل بیستم و یکم: ساخت نهمین پروژه - اپلیکیشن آب و هوا

فصل بیست و دوم: کار با دیتابیس و Sqlite

فصل بیست سوم: ساخت دهمین پروژه – اپلیکیشن مدیریت مالی شخصی


مقالات
سیاست
رسانه‎های دیجیتال
علوم انسانی
مدیریت
روش تحقیق‌وتحلیل
متفرقه
درباره فدک
مدیریت
مجله مدیریت معاصر
آیات مدیریتی
عکس نوشته‌ها
عکس نوشته
بانک پژوهشگران مدیریتی
عناوین مقالات مدیریتی
منابع درسی (حوزه و دانشگاه)
مطالعات
رصدخانه شخصیت‌ها
رصدخانه - فرهنگی
رصدخانه - دانشگاهی
رصدخانه - رسانه
رصدخانه- رویدادهای علمی
زبان
لغت نامه
تست زبان روسی
ضرب المثل روسی
ضرب المثل انگلیسی
جملات چهار زبانه
logo-samandehi
درباره ما | ارتباط با ما | سیاست حفظ حریم خصوصی | مقررات | خط مشی کوکی‌ها |
نسخه پیش آلفا 2000-2022 CMS Fadak. ||| Version : 5.2 ||| By: Fadak Solutions نسخه قدیم