Flutter Zone | فلاتر و دارت
Mini Player
ولی خیلی کمال گرایی هیچی راضیت نمیکنه!!! 🤣🤣
واسه یه دونه موزیک پلیر ساده یه ماهه دارم UI عوض میکنم.
واسه یه دونه موزیک پلیر ساده یه ماهه دارم UI عوض میکنم.
🤣4
Forwarded from sasan safari
🎯 انوتیشن pragma('vm\:entry-point')@ در فلاتر چه کاربردی داره؟
اگه با فلاتر کار میکنی و دنبال اجرای آلارم، بکگراند تسک یا نوتیف زمانبندیشده هستی، حتماً به این خط برخوردی:
اما دقیقاً این چی کار میکنه؟ چرا لازمه؟ ⬇️
به Dart VM میگه:
> «این تابع رو نگهدار! حتی اگه فک میکنی هیچجا استفاده نشده.»
---
📦 کجا لازمه؟
وقتی تابع قراره:
✅ توسط
✅ توی isolate جدا اجرا شه
✅ یا بعد از ریاستارت گوشی بالا بیاد
✅ حتی توی
---
🚫 بدون این خط، Dart ممکنه اون تابع رو تو مرحله build حذف کنه (به خاطر tree-shaking)
و نتیجهش؟
⛔️ آلارم اجرا نمیشه
⛔️ هیچ نوتیفی نمیاد
⛔️ هیچ اروری هم نمیبینی!
---
✍️ مثال واقعی:
---
📌 پس اگر داری با:
* AlarmManager
* isolate
* background task
* native callbacks
کار میکنی، یادت نره این خط رو اضافه کنی ✅
---
🧠 نکتهی طلایی آخر:
> این annotation فقط برای توابعیه که **از مسیر اصلی اپ صدا زده نمیشن**، اما توی پسزمینه قراره اجرا شن.
---
برای رفقات بفرست 💙
#Flutter #AndroidAlarmManager #BackgroundExecution #Dart
@sasansafari_dev1400
اگه با فلاتر کار میکنی و دنبال اجرای آلارم، بکگراند تسک یا نوتیف زمانبندیشده هستی، حتماً به این خط برخوردی:
@pragma('vm:entry-point')اما دقیقاً این چی کار میکنه؟ چرا لازمه؟ ⬇️
به Dart VM میگه:
> «این تابع رو نگهدار! حتی اگه فک میکنی هیچجا استفاده نشده.»
---
📦 کجا لازمه؟
وقتی تابع قراره:
✅ توسط
AndroidAlarmManager اجرا بشه✅ توی isolate جدا اجرا شه
✅ یا بعد از ریاستارت گوشی بالا بیاد
✅ حتی توی
native callback یا background fetch---
🚫 بدون این خط، Dart ممکنه اون تابع رو تو مرحله build حذف کنه (به خاطر tree-shaking)
و نتیجهش؟
⛔️ آلارم اجرا نمیشه
⛔️ هیچ نوتیفی نمیاد
⛔️ هیچ اروری هم نمیبینی!
---
✍️ مثال واقعی:
@pragma('vm:entry-point')
Future<void> startFastingCallback() async {
// اجرای آلارم برای شروع فست
}---
📌 پس اگر داری با:
* AlarmManager
* isolate
* background task
* native callbacks
کار میکنی، یادت نره این خط رو اضافه کنی ✅
---
🧠 نکتهی طلایی آخر:
> این annotation فقط برای توابعیه که **از مسیر اصلی اپ صدا زده نمیشن**، اما توی پسزمینه قراره اجرا شن.
---
برای رفقات بفرست 💙
#Flutter #AndroidAlarmManager #BackgroundExecution #Dart
@sasansafari_dev1400
👍6
Forwarded from آموزش برنامه نویسی فلاتر Flutter
چگونه سرعت اجرای وب اپلیکیشن فلاتر را افزایش دهیم؟ راهکارهای عملی
▫️ فریمورک فلاتر به دلیل ساخت اپلیکیشنهای زیبا و کامپایل شده به صورت Native در پلتفرمهای مختلف شناخته شده است، و نسخه وب آن نیز این قابلیت را به مرورگر میآورد.
با این حال، یک مشکل رایج در وب اپلیکیشن های فلاتر زمان بارگذاری اولیه است.
🌐 چگونه سرعت اجرای وب اپلیکیشن فلاتر را افزایش دهیم؟
⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
▫️ فریمورک فلاتر به دلیل ساخت اپلیکیشنهای زیبا و کامپایل شده به صورت Native در پلتفرمهای مختلف شناخته شده است، و نسخه وب آن نیز این قابلیت را به مرورگر میآورد.
با این حال، یک مشکل رایج در وب اپلیکیشن های فلاتر زمان بارگذاری اولیه است.
🌐 چگونه سرعت اجرای وب اپلیکیشن فلاتر را افزایش دهیم؟
⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
👍4
Forwarded from IranCoderz (Farid Ghaderi)
This media is not supported in your browser
VIEW IN TELEGRAM
مایکروسافت دیشب از Copilot Agent رونمایی کرد. با این آپدیت، کوپایلت از یک دستیار به یک برنامهنویس تبدیل میشه و میتونید تو گیتهاب بهش ایشو اساین کنید که بره انجامش بده.
همچنین کوپایلت از با آنالیز ریپازیتوریهای شما، استایل کد زدن شما رو کامل آنالیز میکنه و با همون سبک براتون کد میزنه.
🆔 @IranCoderz | 👩💻🧑💻
همچنین کوپایلت از با آنالیز ریپازیتوریهای شما، استایل کد زدن شما رو کامل آنالیز میکنه و با همون سبک براتون کد میزنه.
🆔 @IranCoderz | 👩💻🧑💻
👍3
Forwarded from آموزش برنامه نویسی فلاتر Flutter
This media is not supported in your browser
VIEW IN TELEGRAM
یکی از ویژگی های جدید DevTools قابلیتی به اسم Property Editor هست این امکان و به شما میده که بصورت ویژوال مقادیر ویجت هارو تغییر بدید و نتیجه و ببینید
⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
👍3❤1
Forwarded from Pure Coder (Mohammad Taheri)
🔥Flutter & Layerd Architecture
✅فلاتر از یک معماری لایه ای یا به عبارتی Layerd Architecture استفاده میکنه.
✅توی این لایه ها foundation کف کف قرار میگیره و همه ی لایه های دیگه میتونن بهش دسترسی داشته باشن و لایه های material و cupertino بالای بالا قرار میگیرن.
✅برای مثال لایه ی Widgets نسبت به rendering توی سطح بالاتری قرار میگیره و میتونه از rendering استفاده کنه ولی rendering به widgets دسترسی نداره. به همین شکل material و cupertino به widgets دسترسی دارن ولی widgets به اونا دسترسی نداره.
✅اصول معماری لایه ای توی فلاتر اینجوری چیده نشده که هر لایه فقط و فقط به لایه ی زیری خودش دسترسی داشته باشه. بلکه یکم چفت و بست ها شل تر هست و هر لایه میتونه به همه ی لایه های زیرین خودش دسترسی پیدا کنه. البته این شل بودن ایراد نیست و نیاز توسعه بوده.
⚠️پ.ن: فریمورک ها هم باید معماری داشته باشن و روی اصول جلو برن. وگرنه از هم میپاشن.
پ.ن: همه ی پوشه های توی تصویر نماینده ی یک لایه ی مجزا نیستن.
@purecoder_ir
✅فلاتر از یک معماری لایه ای یا به عبارتی Layerd Architecture استفاده میکنه.
✅توی این لایه ها foundation کف کف قرار میگیره و همه ی لایه های دیگه میتونن بهش دسترسی داشته باشن و لایه های material و cupertino بالای بالا قرار میگیرن.
✅برای مثال لایه ی Widgets نسبت به rendering توی سطح بالاتری قرار میگیره و میتونه از rendering استفاده کنه ولی rendering به widgets دسترسی نداره. به همین شکل material و cupertino به widgets دسترسی دارن ولی widgets به اونا دسترسی نداره.
✅اصول معماری لایه ای توی فلاتر اینجوری چیده نشده که هر لایه فقط و فقط به لایه ی زیری خودش دسترسی داشته باشه. بلکه یکم چفت و بست ها شل تر هست و هر لایه میتونه به همه ی لایه های زیرین خودش دسترسی پیدا کنه. البته این شل بودن ایراد نیست و نیاز توسعه بوده.
⚠️پ.ن: فریمورک ها هم باید معماری داشته باشن و روی اصول جلو برن. وگرنه از هم میپاشن.
پ.ن: همه ی پوشه های توی تصویر نماینده ی یک لایه ی مجزا نیستن.
@purecoder_ir
❤4
یه پروژه داریم با دوتا اپ (Server,Client).
اپ Server برای ویندوز و اپ Client برای اندروید هست.
یک سری کد (UI) هم بین این دو اپ مشترک هست.
یکی از بهترین روش هایی که برای مدیریت همچین پروژه هایی میشه استفاده کرد Pub workspaces هست.
یکی از مزیت های Pub workspaces کاهش منابع مصرفی توسط سیستم هست.
https://dart.dev/tools/pub/workspaces
https://lazebny.io/modern-monorepo-management
اپ Server برای ویندوز و اپ Client برای اندروید هست.
یک سری کد (UI) هم بین این دو اپ مشترک هست.
یکی از بهترین روش هایی که برای مدیریت همچین پروژه هایی میشه استفاده کرد Pub workspaces هست.
یکی از مزیت های Pub workspaces کاهش منابع مصرفی توسط سیستم هست.
https://dart.dev/tools/pub/workspaces
https://lazebny.io/modern-monorepo-management
👍4
Forwarded from آموزش برنامه نویسی فلاتر Flutter
یکی از روش های کاهش زمان اجرای پروژه های فلاتر استفاده از فلگ fastDebug میباشد
⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
👍3
جدیدا خیلی از Copilot استفاده میکنم.
من کد میزنم دیگه خودش کامنت میزاره برای کدها.
یه جوری کامنت میزاره که فک نمیکردم این کد همچین کارایی داشته باشه. خیلی خوبه
🤣🤣
من کد میزنم دیگه خودش کامنت میزاره برای کدها.
یه جوری کامنت میزاره که فک نمیکردم این کد همچین کارایی داشته باشه. خیلی خوبه
🤣🤣
🤣9❤1
Forwarded from sasan safari
سوال دوم:
فرض کنید در حال توسعهی یه اپلیکیشن Flutter هستید که باید به صورت آفلاین هم کار کنه؛ یعنی کاربر بتونه بدون اینترنت داده وارد کنه و بعد که دوباره آنلاین شد، اطلاعات با سرور sync بشن.
چه راهکاری برای مدیریت این حالت آفلاین/آنلاین و همگامسازی دادهها پیشنهاد میکنید؟
و چه نقشهایی باید بین لایههای مختلف اپ (UI، domain، data) تقسیم بشن تا این قابلیت بهدرستی کار کنه؟
فرض کنید در حال توسعهی یه اپلیکیشن Flutter هستید که باید به صورت آفلاین هم کار کنه؛ یعنی کاربر بتونه بدون اینترنت داده وارد کنه و بعد که دوباره آنلاین شد، اطلاعات با سرور sync بشن.
چه راهکاری برای مدیریت این حالت آفلاین/آنلاین و همگامسازی دادهها پیشنهاد میکنید؟
و چه نقشهایی باید بین لایههای مختلف اپ (UI، domain، data) تقسیم بشن تا این قابلیت بهدرستی کار کنه؟
❤4
Forwarded from sasan safari
sasan safari
سوال دوم: فرض کنید در حال توسعهی یه اپلیکیشن Flutter هستید که باید به صورت آفلاین هم کار کنه؛ یعنی کاربر بتونه بدون اینترنت داده وارد کنه و بعد که دوباره آنلاین شد، اطلاعات با سرور sync بشن. چه راهکاری برای مدیریت این حالت آفلاین/آنلاین و همگامسازی دادهها…
#همگام_سازی در فلاتر
اول از همه من یک معماری ساختاری انتخاب میکنم که برای چنین اپی قطعا Clean بهترین هست و البته آرکیتکچر پترنِ CQRS که اینم جدا توضیح میدم.
توی لایه UI فقط نمایش و تعامل داریم.
لایهی Application کار مدیریت وضعیت و فراخوانی use caseها رو انجام میده.
لایهی Domain شامل منطق اصلی اپه، مثل عملیات ثبت، و همینطور موتور همگامسازی.
و در نهایت لایه Data که با دیتابیس لوکال و سرور در ارتباطه.
حالا برای اینکه حالت آفلاین/آنلاین درست مدیریت بشه، اول باید کاری کنیم که همهی دادهها اول به صورت لوکال ذخیره بشن؛ چه اینترنت باشه چه نباشه. یعنی مثلا از دیتابیسهایی مثل Drift یا Hive استفاده میکنیم و اطلاعاتو اونجا نگه میداریم.
نکتهی مهم اینه که وقتی کاربر دادهای رو وارد میکنه، باید اون عملیات (مثل افزودن، ویرایش، یا حذف) به شکل یه "عملیات همگامسازی" ثبت بشه. یه چیزی شبیه به صف عملیات، که مثلا بگه: این یادداشت قراره ساخته بشه، این یکی ویرایش بشه، اون یکی حذف بشه... و همینطور(یه جواریی یه سری فلگ داریم)
هر کدوم از این عملیات یه state دارن: در حال انتظار، انجام شده، یا ناموفق. بعد یه چیزی به اسم Sync Engine
(اینو پیامای بعدی توضیح میدم) داریم که وقتی اینترنت وصل شد، میاد یکییکی این عملیاتها رو اجرا میکنه و اونا رو با سرور هماهنگ میکنه.
اینجا باید حواسمون به چند تا چیز باشه:
اگه عملیات موفق بود، علامت میزنیم که همگام شده.
اگه شکست خورد، اون عملیات توی صف میمونه تا بعداً دوباره امتحانش کنیم.
ممکنه کانفلیکت هم پیش بیاد. مثلاً کاربر آفلاین یه چیزی رو تغییر داده، همزمان سرور هم اون داده رو عوض کرده. تو این حالت یا از روش سادهی "آخرین تغییر برنده است" استفاده میکنیم، یا یه استراتژی ترکیبی داریم، یا حتی به کاربر نشون میدیم که یه تضاد وجود داره.
در نهایت نقش هر لایه توی اپ اینجوری تقسیم میشه:
لایه UI فقط داده رو نمایش میده و وضعیت sync رو نشون میده.
لایه Application عملیات رو مدیریت میکنه و موتور sync رو راه میاندازه.
لایه Domain منطق اصلی رو داره، مثل تعریف موجودیتها، عملیاتها، و اینکه sync چجوری انجام بشه
لایه Data چ مسئول ارتباط با دیتابیس لوکال و API سروره.
علاوه بر اینا، باید سیستم رو طوری طراحی کنیم که تغییرات شبکه رو تشخیص بده؛ مثلاً وقتی دوباره آنلاین شدیم، عملیات sync خودکار شروع بشه. برای اینکار از پکیجهایی مثل connectivity_plus استفاده میکنیم.
اگه بخوام خلاصه کنم:
همیشه اول داده رو لوکال ذخیره کن، حتی وقتی آنلاینیم.
تغییرات رو توی یه صف نگه دار.
با یه موتور sync این صف رو مدیریت کن.
اینجوری، یه اپ مقاوم میسازیم که توی هر شرایطی، حتی بدون اینترنت هم درست کار میکنه و هیچ دادهای از دست نمیره
@sasansafari_dev1400
اول از همه من یک معماری ساختاری انتخاب میکنم که برای چنین اپی قطعا Clean بهترین هست و البته آرکیتکچر پترنِ CQRS که اینم جدا توضیح میدم.
توی لایه UI فقط نمایش و تعامل داریم.
لایهی Application کار مدیریت وضعیت و فراخوانی use caseها رو انجام میده.
لایهی Domain شامل منطق اصلی اپه، مثل عملیات ثبت، و همینطور موتور همگامسازی.
و در نهایت لایه Data که با دیتابیس لوکال و سرور در ارتباطه.
حالا برای اینکه حالت آفلاین/آنلاین درست مدیریت بشه، اول باید کاری کنیم که همهی دادهها اول به صورت لوکال ذخیره بشن؛ چه اینترنت باشه چه نباشه. یعنی مثلا از دیتابیسهایی مثل Drift یا Hive استفاده میکنیم و اطلاعاتو اونجا نگه میداریم.
نکتهی مهم اینه که وقتی کاربر دادهای رو وارد میکنه، باید اون عملیات (مثل افزودن، ویرایش، یا حذف) به شکل یه "عملیات همگامسازی" ثبت بشه. یه چیزی شبیه به صف عملیات، که مثلا بگه: این یادداشت قراره ساخته بشه، این یکی ویرایش بشه، اون یکی حذف بشه... و همینطور(یه جواریی یه سری فلگ داریم)
هر کدوم از این عملیات یه state دارن: در حال انتظار، انجام شده، یا ناموفق. بعد یه چیزی به اسم Sync Engine
(اینو پیامای بعدی توضیح میدم) داریم که وقتی اینترنت وصل شد، میاد یکییکی این عملیاتها رو اجرا میکنه و اونا رو با سرور هماهنگ میکنه.
اینجا باید حواسمون به چند تا چیز باشه:
اگه عملیات موفق بود، علامت میزنیم که همگام شده.
اگه شکست خورد، اون عملیات توی صف میمونه تا بعداً دوباره امتحانش کنیم.
ممکنه کانفلیکت هم پیش بیاد. مثلاً کاربر آفلاین یه چیزی رو تغییر داده، همزمان سرور هم اون داده رو عوض کرده. تو این حالت یا از روش سادهی "آخرین تغییر برنده است" استفاده میکنیم، یا یه استراتژی ترکیبی داریم، یا حتی به کاربر نشون میدیم که یه تضاد وجود داره.
در نهایت نقش هر لایه توی اپ اینجوری تقسیم میشه:
لایه UI فقط داده رو نمایش میده و وضعیت sync رو نشون میده.
لایه Application عملیات رو مدیریت میکنه و موتور sync رو راه میاندازه.
لایه Domain منطق اصلی رو داره، مثل تعریف موجودیتها، عملیاتها، و اینکه sync چجوری انجام بشه
لایه Data چ مسئول ارتباط با دیتابیس لوکال و API سروره.
علاوه بر اینا، باید سیستم رو طوری طراحی کنیم که تغییرات شبکه رو تشخیص بده؛ مثلاً وقتی دوباره آنلاین شدیم، عملیات sync خودکار شروع بشه. برای اینکار از پکیجهایی مثل connectivity_plus استفاده میکنیم.
اگه بخوام خلاصه کنم:
همیشه اول داده رو لوکال ذخیره کن، حتی وقتی آنلاینیم.
تغییرات رو توی یه صف نگه دار.
با یه موتور sync این صف رو مدیریت کن.
اینجوری، یه اپ مقاوم میسازیم که توی هر شرایطی، حتی بدون اینترنت هم درست کار میکنه و هیچ دادهای از دست نمیره
@sasansafari_dev1400
Telegram
sasan safari
چنل شخصی تخصصی، از مهندسی نرم افزار، برنامه نویسی کراس پلتفورم و موبایل محتوا تقدیم میکنم.
❤7👍3👏1
Forwarded from sasan safari
خب Sync Engine رِ بگیم
سینک انجین وظیفه داره تغییرات کاربر رو وقتی آفلاین بوده ذخیره کنیم و وقتی اینترنت وصل شد، این تغییرات رو به سرور بفرستیم. برای ذخیره لوکال معمولا از hive یا drift استفاده میکنیم. برای فهمیدن وضعیت اتصال اینترنت از connectivity_plus کمک میگیریم و برای ارسال داده به سرور هم http یا dio.
الگوریتم کار اینطوره که تغییرات تو یه صف ذخیره میکنیم و وقتی اینترنت وصل شد، یکییکی به سرور ارسال میکنیم. اگه موفق بود، وضعیتشون رو آپدیت میکنیم و اگه نه، دوباره تلاش میکنیم. تو این روند برای کنترل اینکه هر عملیات کامل شده یا نه، معمولا از completer استفاده میکنیم که یه ابزار توی دارته برای مدیریت عملیاتهای async، یعنی باهاش میتونیم بفهمیم چه زمانی هر فرایند sync تموم شده یا خطا داده.
برای اجرای این فرایند حتی تو پسزمینه هم میتونیم از workmanager استفاده کنیم تا دادهها همیشه هماهنگ بمونن و چیزی از دست نره :)
@sasansafari_dev1400
سینک انجین وظیفه داره تغییرات کاربر رو وقتی آفلاین بوده ذخیره کنیم و وقتی اینترنت وصل شد، این تغییرات رو به سرور بفرستیم. برای ذخیره لوکال معمولا از hive یا drift استفاده میکنیم. برای فهمیدن وضعیت اتصال اینترنت از connectivity_plus کمک میگیریم و برای ارسال داده به سرور هم http یا dio.
الگوریتم کار اینطوره که تغییرات تو یه صف ذخیره میکنیم و وقتی اینترنت وصل شد، یکییکی به سرور ارسال میکنیم. اگه موفق بود، وضعیتشون رو آپدیت میکنیم و اگه نه، دوباره تلاش میکنیم. تو این روند برای کنترل اینکه هر عملیات کامل شده یا نه، معمولا از completer استفاده میکنیم که یه ابزار توی دارته برای مدیریت عملیاتهای async، یعنی باهاش میتونیم بفهمیم چه زمانی هر فرایند sync تموم شده یا خطا داده.
برای اجرای این فرایند حتی تو پسزمینه هم میتونیم از workmanager استفاده کنیم تا دادهها همیشه هماهنگ بمونن و چیزی از دست نره :)
@sasansafari_dev1400
❤5
Forwarded from sasan safari
و نهایتا الگوی معماری مهم CQRS که یعنی Command Query Responsibility Segregation
یعنی اینکه مسئولیت نوشتن یا تغییر دادهها (Command) رو از مسئولیت خوندن دادهها (Query) جدا کنیم. یعنی یه مدل و مسیر جدا برای نوشتن داریم و یه مدل و مسیر جدا برای خوندن. اینجوری کد مرتبتر، راحتتر قابل نگهداری و بهتر مقیاسپذیر میشه.
تو معماری کلین معمولا بخش Command رو تو لایه دامنه (Domain) میذاریم که منطق تغییر دادهها و قوانین کسبوکار رو اجرا میکنه، ولی بخش Query رو میتونیم تو لایه دیتا یا حتی لایه UI مدیریت کنیم تا خواندن دادهها بهینهتر باشه. این تقسیمبندی کمک میکنه خواندن و نوشتن دادهها مستقل باشن و هر کدوم به بهترین شکل کنترل بشن
یعنی اینکه مسئولیت نوشتن یا تغییر دادهها (Command) رو از مسئولیت خوندن دادهها (Query) جدا کنیم. یعنی یه مدل و مسیر جدا برای نوشتن داریم و یه مدل و مسیر جدا برای خوندن. اینجوری کد مرتبتر، راحتتر قابل نگهداری و بهتر مقیاسپذیر میشه.
تو معماری کلین معمولا بخش Command رو تو لایه دامنه (Domain) میذاریم که منطق تغییر دادهها و قوانین کسبوکار رو اجرا میکنه، ولی بخش Query رو میتونیم تو لایه دیتا یا حتی لایه UI مدیریت کنیم تا خواندن دادهها بهینهتر باشه. این تقسیمبندی کمک میکنه خواندن و نوشتن دادهها مستقل باشن و هر کدوم به بهترین شکل کنترل بشن
❤4👍1
Forwarded from آموزش برنامه نویسی فلاتر Flutter
آموزش ساخت کتابخانه ویندوز از کد گولنگ و اتصال به فلاتر دسکتاپ + ویدیو
▫️ در این راستا، زبان Go (گو) به عنوان یک ابزار عالی برای برنامهنویسی سیستمی و ساخت کتابخانههای بومی، و فلاتر دسکتاپ به عنوان یک فریمورک چندسکویی قدرتمند، میتوانند ترکیبی بسیار موثر باشند.
در این مقاله، به طور کامل به این پرسش پاسخ میدهیم که چگونه یک کد نوشته شده به زبان Go را به یک کتابخانه DLL ویندوز تبدیل کنیم و آن را در یک پروژه فلاتر دسکتاپ فراخوانی کنیم.
🌐 آموزش ساخت کتابخانه ویندوز از کد گولنگ و اتصال به فلاتر دسکتاپ
⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
▫️ در این راستا، زبان Go (گو) به عنوان یک ابزار عالی برای برنامهنویسی سیستمی و ساخت کتابخانههای بومی، و فلاتر دسکتاپ به عنوان یک فریمورک چندسکویی قدرتمند، میتوانند ترکیبی بسیار موثر باشند.
در این مقاله، به طور کامل به این پرسش پاسخ میدهیم که چگونه یک کد نوشته شده به زبان Go را به یک کتابخانه DLL ویندوز تبدیل کنیم و آن را در یک پروژه فلاتر دسکتاپ فراخوانی کنیم.
🌐 آموزش ساخت کتابخانه ویندوز از کد گولنگ و اتصال به فلاتر دسکتاپ
⚜️اولین مرجع فارسی فلاتر @flutter_learn_ir
👍5