فلاتر (Flutter)، جانشین کیوت (Qt)؟

فلاتر (Flutter)، جانشین کیوت (Qt)؟

فلاتر (Flutter)، جانشین کیوت (Qt)؟
فلاتر (Flutter)، جانشین کیوت (Qt)؟

به روز رسانی 19 خرداد – با کمک مهندس کامبیز اسدزاده

 

خیلی از مهندسین الکترونیک حتماً اسم Qt (کیوت) رو شنیدند، بخصوص اونایی که با سیستم عامل‌های امبدد یا سخت افزارهایی با سیستم عامل ، مثل رزبری پای.. کار کردند و می‌کنند.

ولی شاید خیلی از شما اسم فلاتر را هم نشنیده باشید!

فلاتر یک جایگزین ایده آل برای Qt هست که به نظر به‌زودی جایگزین اون هم خواهد شد!

به روز رسانی: فلاتر جایگزین ایده آلی برای UI (رابط کاربری) هست، نه تمام Qt.

به روز رسانی: هنوز تا پخته شدن اکوسیستم Flutter Desktop راه زیادی داریم و انواع مختلفی از پلاگین‌ها برای دسکتاپ باید تولید بشه، اما اگه پروژه شما بخش موبایل با UI پیچیده هم داره، استفاده از Flutter به شدت میتونه هزینه‌های توسعه رو کاهش بده.

 

داستان چیه؟

چند ماه پیش خبر رسید که شرکت Digia که مالک و توسعه دهنده اصلی Qt هست، میخواد پشتیبانی بلند مدتش رو از نسخه‌های اوپن سورس برداره و کاربران اوپن سورس رو مجبور کنه از نسخه 5.15 مهاجرت کنند به نسخه 6.

به روز رسانی: شرکت Digia مالک Qt نیست و از سال 2014 در تملک شرکت Qt هست.

این تصمیم اعتراضات زیادی رو برانگیخت، چرا؟ چون نسخه 6 خیلی از قابلیت‌های نسخه 5 رو نداشت و هنوز در حال توسعه بود (هنوز هم همینطوره).

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

این تصمیم امنیت خیلی از پروژه ها رو تحت شعاع قرار داد، چونکه اگه مشکل امنیتی در نسخه ای از Qt باشه که پشتیبانی بلند مدت نداره، اون نسخه دیگه به روز رسانی امنیتی نمیشه!

همونطور که میدونید امنیت برای همه سیستم ها مهمه، بخصوص سیستم های صنعتی، بالاخص! که اخیرا باج گیری های امنیتی در ایران خیلی رواج پیدا کرده و هر روز خبری از هک شدن یک بیزینس معروف میشنویم!

به روز رسانی: برای دریافت آپدیت‌ها باید از نسخه های 6 به بعد استفاده کنید.

به روز رسانی: اگر به هر نحوی سیاست‌های شرکت کیوت به این سمت برود که ویژگی‌ها و اساس این کتابخانه را تجاری کند، در این صورت بر اساس تعهدات قانونی خود که در زمان دریافت امتیاز کیوت ارائه کرده است، موظف است کد‌های کیوت را با آخرین تغییرات تحویل به جامعه‌ی متن‌باز KDE دهد. بنابراین، جای نگرانی در این وجود ندارد.

به روز رسانی: البته شاید هم باید از کاملا اوپن سورس شدن یک پروژه تا حدی ترسید!

 

داستان جایگزینی Qt با Flutter در یک پروژه

من که نرم افزاری هستم و خیلی با Qt سر و کار ندارم، از کجا متوجه این موضوع شدم؟

یکی از دوستان ازم خواست که با Flutter برای روی Linux یک اپلیکیشن بسازم و یک کدی بنویسم که بتونه با یک Serial Port ارتباط بگیره، چون میخوان این اپلیکیشن رو روی یک دستگاه Embedded استفاده کنند…!

بعد از اینکه اپلیکیشن رو بهش تحویل دادم، درخواست یک جلسه Skype کرد، گفت یکی از شرکت های همکار در دانمارک میخوان از Flutter برای نوشتن اپلیکیشن برای یک دستگاه Embedded استفاده کنند و نیاز به مشاوره دارند. جلسه که شروع شد، مدیر پروژه شون دلیل استفاده از فلاتر رو “تصمیم کمپانی Digia مبنی بر برداشتن پشتیبانی بلند مدت از نسخه های اوپن سورس 5.15 به بعد” عنوان کرد. از من خواستند تا Flutter رو برای Yocto – نسخه Dunhill بیلد بگیرم، گفتم این کار در تخصص من نیست و از زیر بار این کار (نسبتا کثیف) فرار کردم.

خودشون پیگیری کردند و با افرادی در ایران و سپس آلمان تونستن این کار رو انجام بدن، خوشبختانه شرکت Sony ژاپن قبلا زیرساخت این کار رو فراهم کرده بود و اون ها تونستن سریع نتیجه گیری کنند. مجدد درخواست جلسه دادند در اسکایپ، گفتند “ما 100% فلاتر رو برای این پروژه انتخاب کردیم و به طور کامل Qt رو کنار گذاشتیم!”. خلاصه این باب شروع همکاری بنده با پروژه شون بود و الان تقریبا کمتر از 2 هفته میشه که پروژه شون رو توسعه میدم.

حالا ممکنه سوال بشه چرا از بین گزینه های موجود، فلاتر؟

 

چرا فلاتر Flutter؟

گوگل فلاتر

شرکت گوگل چند سالی بود که مخفیانه روی سیستم عاملی به اسم Fuchsia (فوشیا) و “مجموعه ابزار توسعه اپلیکیشن” جدید خودش کار میکرد.

سال 2017 این مجموعه ابزار توسعه اپلیکیشن رو با نام Flutter معرفی کرد. شعارش این بود که با فلاتر میتونین اپلیکیشن های بسیار سریع و بسیار زیبا رو با یک کد واحد برای پلتفرم های اندروید و آی او اس بیلد بگیرین. اون زمان من خودم با ReactNative و Android بعضی از اپلیکیشن های شرکتی رو توسعه میدادم. این ReactNative رو فیسبوک 2 سال زودتر ساخته بود و دقیقا همین ادعای فلاتر رو داشت. البته ReactNative عقبه و پشتیبانی ReactJS رو داشت که در بین FrontEnd کارها (کسانی که دیزاین تحت وب میزنند) خیلی محبوب بود. با اینکه خیلی جاها اذیت میکرد، ولی خوب راضی بودم که با یک بار کد نوشتن میتونم برای اندروید و آی او اس خروجی بگیرم، و البته کد نویسی و مدیریت وضعیتش (State Management) هم نسبت به کدهای Native خیلی خیلی ساده تر بود.

 

من اون زمان اخبار و مقالات رو خیلی دنبال میکردم، تا اینکه خیلی اتفاقی یک مقاله در رابطه با Flutter دیدم.

زبان برنامه نویسی فلاتر، زبان Dart هست که چند سال پیش توسط گوگل ایجاد شد. برام نا آشنا بود همه چیز، زبان، سینتکس، نحوه دیزاین و خیلی چیزها، در اولین برخورد خیلی جدی نگرفتم موضوع رو تا اینکه ماه آینده دیدم تعداد محتوایی که در این رابطه تولید میشه خیلی بیشتر شده (ویدئوهای آموزشی و مقالات و …)!

 

رفتم سراغ مقایسه، باید مطمئن میشدم این جریان یک جریان هیجانی نیست و مثل بقیه محصولاتی که گوگل بیخیالشون شده، از بین نمیره؟!

 

نتیجه این مطالعات و مقایسه های من این شد که فلاتر رو به عنوان فریم ورک اصلی خودم برای توسعه اپلیکیشن های موبایل انتخاب کردم، اگه میخواهین بیشتر بدونین لطفا به این مقالات مربوط به سال 2019 که در سایت خودم نوشتم، سر بزنین:

 

یادگیری برنامه نویسی موبایل با نگاهی به بازار کار

یک سال با فلاتر Flutter

Flutter vs Xamarin مقایسه برنامه نویسی کراس پلتفرم موبایل

Flutter – یک سال و نیم با فلاتر

 

حدودا اوایل 2019 بود که اپل تصمیم گرفت تمامی اپلیکیشن های ایران یا فارسی زبان رو از فروشگاه خودش برداره، و اون اشتیاق من برای تولید اپلیکیشن iOS به شدت کم شد.

با اینکه مشتری هامون تقاضا داشتند که اپلیکیشن ها رو برای iOS هم خروجی بگیریم، اما راه حل مناسبی برای این کار نداشتیم (البته با دانش اون زمان..!).

 

یکدفعه سال 2020 گوگل با یک سورپرایز اومد و اعلام کرد که الان میشه با فلاتر برای Mac OS و Linux و Windows و WEB هم خروجی گرفت. میخوام سر به تن ویندوز و مک نباشه، ولی وب؟ لینوکس؟ واقعا؟ بله این خواب نبود…! توی این 4 سال فلاتر آنچنان محبوبیتی پیدا کرده و آنقدر انعطاف و قابلیتی میده برای خروجی گرفتن برای سیستم عامل های مختلف که دیدم شرکت Sony هم پا به عرصه گذاشته و فلاتر رو برای سیستم عامل های امبدد آماده کرده.

 

چطوری فلاتر یاد بگیریم؟

اگه شما هم نگران مشکلات Qt هستین، یا قصد دارین در کنار پروژه سخت افزاریتون اپلیکیشن موبایل و یا … هم بدین، Flutter بهترین گزینست.

معمولا تکنولوژی ها تا در ایران شناخته و استفاده بشند، حداقل 3 سال زمان میبره (این تجربه من در رابطه با ReactNative و Flutter هست)، حالا خودتون حساب کنید چقدر زمان میبره تا آموزش های فارسی مرتبط با اون تکنولوژی ایجاد بشه…!

به من هر سال پیشنهاد میشه که دوره آموزشی برگزار کنم، ولی واقعا انقدری درگیری ها زیاد بوده که موفق به این کار نشدم، از طرفی هم با خودم فکر میکردم بالاخره بقیه دست به کار میشن و آموزش های خوبی تولید میکنند دیگه! چه نیازی به آموزش های من هست؟

اما متأسفانه هنوز آموزش‌هایی با کیفیت و نکته سنجی‌های لازم به زبان فارسی تولید نشده، از اون بدتر خیلی از متخصصین نرم افزار در حال مهاجرت هستند از کشور! (نیروی کار مناسب و متخصص به شدت کم شده).

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

برای همین تصمیم گرفتم تا چیزهایی که یاد گرفته ام رو به دیگران هم آموزش بدم، و این راه رو با آموزش فلاتر شروع میکنم.

 

قصد دارم تا دوره ی آموزشی مبتدی تا پیشرفته فلاتر رو تا آخر تیر ماه آماده کنم که در درجه اول پروژه محور و کاملا عملی باشه و در درجه دوم پایه و اساس خیلی از کاربردهای دیگه باشه (یعنی آموزش ها به درد کارهای دیگه هم بخوره و فقط مختص به اون پروژه نباشه).

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

 

 

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

 

1- نصب اندروید و فلاتر روی ویندوز

2- ایجاد پروژه جدید و تعیین ساختار پوشه‌ها

3- تنظیمات دو زبانه

4- تنظیمات اولیه تم و فونت

5- طراحی کامل صفحه خانه

5-a) طراحی اپ بار

5-b) طراحی باتم بار

5-c) طراحی بنرها، کارت‌ها و دسته بندی‌ها

6- طراحی صفحه محصول

7- طراحی سبد خرید

8- آشنایی با http و استفاده از API های وب

9- صفحه ثبت نام

10- شبیه سازی پرداخت

11- اتصال سبد خرید به Provider برای مدیریت بهتر وضعیت در کل اپلیکیشن

12- بهینه سازی مصرف شبکه (تصاویر و …) و بالا بردن سرعت پردازش شبکه

13- نحوه ایجاد پلاگین مبتنی بر Dart برای استفاده مجدد در اپلیکیشن‌ها

14- شیء گرایی مبتدی تا پیشرفته با Dart

15- (هدیه ویژه) ایجاد پلاگین Native برای اندروید

 اینجا میتونید اطلاعات بیشتری در مورد این آموزش مشاهده کنید.

 

حمایت از علی اشتهاری پور

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

دیدگاه ها

14 دیدگاه

  • میثم پرویزی
    ۶ مهر ۱۴۰۰

    من قبلا توی ویندوز از Visual C# برای نوشتن این نوع از پروژه ها که هم نیاز به ارتباط با پورت سریال و هم نیاز به UI داره استفاده می کردم.
    اما الان میخوام همین کارو توی لینوکس و برای یه پروژه امبدد انجام بدم که به شکل اتفاقی مطلب شما رو دیدم.
    اگه قبلا با C# و .NET کار کرده باشین میخواستم نظرتون رو راجع به C# در مقایسه با فلاتر بدونم. چون امکانات خیلی خوبی برای این جور پروژه ها داره. الان هم که .NET رو میشه توی لینوکس نصب کرد و برای UI هم میشه از Avalonia استفاده کرد. خودم هنوز ازش استفاده نکردم ولی به نظر چیز خوبی میاد!

    https://docs.avaloniaui.net/docs/getting-started/programming-with-avalonia

  • Mahdi.h  
    Mahdi.h
    ۱۳ تیر ۱۴۰۰

    سلام
    چه قدر خوب که بخش هایی از مطلب بروزرسانی شد!
    کلا برداشت از این مطلب متفاوت شد.

  • محمدرضا عابدینی
    محمدرضا عابدینی
    ۳ تیر ۱۴۰۰

    سلام ممنون از این اطلاعات خوبتون بی صبرانه مشتاق اموزش های خوبتون هستم..

  • پویا
    ۱۹ خرداد ۱۴۰۰

    سلام وقتتون بخیر میشه اون قسمت که گفتید “و از زیر بار این کار (نسبتا کثیف) فرار کردم” رو یه توضیحی بدید یعنی دقیقا میخواستند چیکار انجام بدید و چرا این کار کثیف اسمش
    ممنون خیلی از مقاله خوبتون.

    • علی اشتهاری پور
      علی اشتهاری پور
      ۱۹ خرداد ۱۴۰۰

      سلام وقت شما هم بخیر

      بیلد گرفتن Yocto Dunhill و Flutter هم پهنای باند اینترنت خوبی میخواد هم پردازش و حافظه میگیره، خلاصه زمان زیادی میبره.
      از حوصله من خارج بود برای همین قبول نکردم.

  • محمد
    ۱۸ خرداد ۱۴۰۰

    سلام
    بسیار عالی
    من خودم چند سالی هست با Qt کار کردم برای توسعه نرم افزار.
    بی صبرانه منتظر دوره آموزشی تون هستم.
    بسیار ممنون

    • علی اشتهاری پور
      علی اشتهاری پور
      ۱۸ خرداد ۱۴۰۰

      سلام دوست عزیز
      از همراهی شما سپسگزارم

    • محمد
      ۸ مرداد ۱۴۰۰

      الان پشیمونید که کیوت رو یاد گرفتید ؟؟؟؟

  • سعید ساهور
    ۱۸ خرداد ۱۴۰۰

    سلام
    یعنی الان با میشه فلاتر یک نرم افزار لینکوسی یا ویندوزی ساخت؟

    • علی اشتهاری پور
      علی اشتهاری پور
      ۱۸ خرداد ۱۴۰۰

      سلام،
      بله خوشبختانه میشه و این خبر خیلی خوشحال کننده ایه

      • سعید ساهور
        ۱۸ خرداد ۱۴۰۰

        خوب گام به گام که هرویدیو اموزشی که اماده بزارین تا گام به گام بیاییم جلو
        خیلی مشتاقیمممممممم☺️😍

  • Ali
    ۱۷ خرداد ۱۴۰۰

    درود بر شما.
    راهتان ادامه یابد ..

    • علی اشتهاری پور
      علی اشتهاری پور
      ۱۸ خرداد ۱۴۰۰

      سلام و درود بر شما
      سپاسگزارم

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 10 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

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

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک