<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علیرضا باشی</title>
        <link>https://virgool.io/feed/@alirezabashi98</link>
        <description>یه برنامه‌نویس موبایل از جنس فلاتر، یه قلب پر از کد و یه ذهن پر از ایده!

من علیرضام و اینجا دارم با عشق محتوا می‌سازم. حمایتت یعنی یه لبخند، یه انگیزه و کلی محتوای خفن‌تر! 😎🔥</description>
        <language>fa</language>
        <pubDate>2026-04-15 10:05:04</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/178155/avatar/AqIQ9Z.jpeg?height=120&amp;width=120</url>
            <title>علیرضا باشی</title>
            <link>https://virgool.io/@alirezabashi98</link>
        </image>

                    <item>
                <title>جدیدترین قابلیت‌های فلاتر ۳.۳۲ که باید بدونی!</title>
                <link>https://virgool.io/@alirezabashi98/%D8%AC%D8%AF%DB%8C%D8%AF%D8%AA%D8%B1%DB%8C%D9%86-%D9%82%D8%A7%D8%A8%D9%84%DB%8C%D8%AA-%D9%87%D8%A7%DB%8C-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-%DB%B3%DB%B3%DB%B2-%DA%A9%D9%87-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A8%D8%AF%D9%88%D9%86%DB%8C-qzi3qatfkvzj</link>
                <description>flutter 3.32خوش اومدی به Flutter 3.32!این نسخه پر از قابلیتهای جدیده که قراره سرعت توسعهتو بالا ببره و کیفیت اپهاتو بهتر کنه.حالا دیگه روی وب هم hot reload داریم، آیکونهای squircle کوپرتینو برای تجربهی بومیتر اضافه شدن، و کلی قابلیت هوش مصنوعی جدید با Firebase هم بهش اضافه شده.بریم ببینیم چه چیزای جدیدی اومده! 🚀وبخب Hot reload روی وب (بهصورت آزمایشی)یه خبر خفن!از این به بعد میتونی روی وب هم hot reload بزنی!این یکی از پرطرفدارترین درخواستای بچههای Flutter بود و بالاخره اضافه شد.حالا وقتشه خودت تو پروژههات امتحانش کنی و حالشو ببری! 🔥حالا میرسیم به قسمت باحال ماجرا: چطوری از این قابلیت استفاده کنیم؟!!! 😎یه فلگ ساده به Flutter اضافه شده به اسم --web-experimental-hot-reloadهرجا که از دستور flutter run استفاده میکنی، کافیه اینو هم بهش اضافه کنی تا hot reload روی وب برات فعال شه. 💻🔥اجرای پروژه با VS Codeاگه از تنظیمات دیباگ توی VS Code استفاده میکنی، میتونی این تنظیم اضافی رو به فایل launch.json اضافه کنی:&amp;quotconfigurations&amp;quot: [
…
  {
 &amp;quotname&amp;quot: &amp;quotFlutter for web (hot reloadable)&amp;quot,
 &amp;quottype&amp;quot: &amp;quotdart&amp;quot,
 &amp;quotrequest&amp;quot: &amp;quotlaunch&amp;quot,
 &amp;quotprogram&amp;quot: &amp;quotlib/main.dart&amp;quot,
 &amp;quotargs&amp;quot: [
 &amp;quot-d&amp;quot,
 &amp;quotchrome&amp;quot,
 &amp;quot--web-experimental-hot-reload&amp;quot,
    ]
  }
]برای اینکه همه چیز بینقص باشه، بهتره تو تنظیمات VS Code گزینه «Dart: Flutter Hot Reload On Save» رو روشن کنی.وقتی خواستی هم میتونی با آیکون ⚡ که تو پنل Run/Debug هست، یه hot reload بزنی.و اگه خواستی برنامه رو از اول راه بندازی، دکمه ⟳ رو فشار بده، همونه که hot restart میزنه.اجرای پروژه از طریق خط فرماناگه از دستور “flutter run” تو خط فرمان استفاده میکنی، حالا میتونی با این دستور، روی وب هم hot reload رو اجرا کنی:flutter run -d chrome --web-experimental-hot-reloadوقتی hot reload فعال باشه، میتونی با زدن حرف “r” توی ترمینال در حال اجرا، برنامهات رو دوباره بارگذاری کنی، یا با زدن “R” یه hot restart بزنی.بارگذاری مجدد در DartPadتو DartPad هم الان یه دکمه Reload اضافه شده که باهاش میتونی سریع برنامه رو ریلود کنی.البته فقط وقتی که برنامهات Flutter باشه این دکمه فعال میشه.میتونی با اپ نمونهای که DartPad داده، کلی حال کنی و تستش کنی!فریمورک ( Framework )میخوان منطق رو از کتابخانه Material بیارن توی کتابخانه Widgets.تو این نسخه یه ویجت جدید به اسم Expansible اضافه شده که کار ساخت ویجتهایی که باز و بسته میشن رو با تمهای مختلف خیلی سادهتر کرده.این ویجت پایه و اساس ExpansionTile به سبک Material هم هست.یه چیز باحال دیگه هم هست به اسم RawMenuAnchor که یکی از بچههای جامعه، @davidhicks980 ساخته.این ویجت شده پایه و اساس منوهای Material  و کلی امکان میده که منوها رو با شکل و شمایل دلخواه بسازی.حتی میتونی این ویجت رو جداگونه و بدون هیچ استایلی استفاده کنی و ظاهر منو رو کاملاً دست خودت بگیری!RawMenuAnchorکوپرتینو  (Cupertino)شکل بین مربع و دایره ( Squircles )یه قابلیت خیلی توپ به Flutter اضافه شده به اسم rounded superellipse.این شکلی که همه بهش میگن «Apple squircle» همون گوشههای نرم و خوشفرم اپلیه، خیلی بهتر از مستطیلهای گرد معمولیه.خیلیها تو جامعه Flutter درخواستش رو کرده بودن و اضافه شدنش یعنی داریم میریم سمت UI هایی که کاملاً شبیه به چیزی باشن که تو دستگاههای اپل میبینی.هم CupertinoAlertDialog و هم CupertinoActionSheet حالا این شکل جدید رو استفاده میکنن!میتونی با این APIهای جدید، rounded superellipses رو به اپلیکیشنهات اضافه کنی:RoundedSuperellipseBorder برای نقاشی یا استفاده بهعنوان شکل ویجتClipRSuperellipse برای برش دادن (clipping)Canvas.drawRSuperellipse، Canvas.clipRSuperellipse و Path.addRSuperellipse برای APIهای سطح پایینتر که کنترل مستقیمتری رو فراهم میکننیه نکته اینکه rounded superellipse هنوز داره فعالانه روش کار میشه و داره بهتر میشه.فعلاً فقط روی iOS و اندروید پشتیبانی میشه و تو بقیه پلتفرمها مثل یه مستطیل گرد ساده نمایش داده میشه.بهینهسازیهای عملکردی هم هنوز در حال انجامه.پس با این نکات تو ذهنت امتحانش کن و منتظر آپدیتهای بعدی باش که این قابلیتها بهتر میشن!مودال Sheetچند تا مشکل هم با مودال شیت Cupertino حل شده، از جمله اینکه وقتی شیت روی اندروید باز میشه، بهتر تنظیم میکنه سیستم UI تم رو.مودال شیت تنظیم شد تا ارتفاع نوار ناوبری درست بشه و مطمئن بشه که محتوا از پایین بریده نمیشه.عکس زیر هم قبل و بعد از این تغییر رو نشون میده.یه سری باگ دیگه هم تو این نسخه رفع شده، مثلا اینکه موقع باز و بسته شدن شیت با PopupMenuButton خوب هماهنگ نبود،و گوشههای گرد شیت هم بهتر شده که روی بیشتر گوشیها درست و بدون مشکل دیده بشه. قبلاً بعضی گوشیها گوشهها رو درست نشون نمیدادن.حالا یه گزینه جدید هست به اسم enableDrag که میتونی توی CupertinoSheetRoute و showCupertinoSheet استفاده کنی تا وقتی شیت کوپرتینو بازه، دیگه با کشیدن پایین بسته نشه. (#163923)نوارهای ناوبری ( Navigation bars )CupertinoSliverNavigationBar.search حالا انیمیشن باز و بسته شدن صفحه جستجو رو بهتر و نرمتر نشون میده و آیکونهای قبل و بعد از فیلد جستجو هم دقیقتر و درستتر چیده شدن.در نهایت، انتقال بین صفحهها با CupertinoNavigationBars یا CupertinoSliverNavigationBars بهروزرسانی شده تا دقیقاً مثل جدیدترین انیمیشنهای iOS باشه (#164956).متریال ( Material )توی این نسخه کلی قابلیت جدید و باگفیکس برای کتابخونه Material اضافه شده که هم امکاناتش بهتر شده، هم کار کردن باهاش برای دولوپرها راحتتر شده.قابلیتهای جدیدی که اضافه شدن شامل اینا میشن:خب CarouselController حالا یه متد راحتتر به اسم animateToIndex داره که میتونی باهاش خیلی نرم بری روی آیتم خاصی از کاروسل — فرقی هم نمیکنه آیتمهات اندازه ثابت داشته باشن یا با flexWeights تنظیم شده باشن.خب TabBar الان دوتا کالبک جدید داره:یکی onHover برای وقتی که ماوس روش میره،و یکی onFocusChange برای وقتی که فوکوس میگیره یا از دست میده.با اینا میتونی کنترل بیشتری روی ظاهر تبهات تو حالتهای مختلف داشته باشی.حالا توی SearchAnchor و SearchAnchor.bar، دو تا کالبک جدید اضافه شده:viewOnOpen برای اولیonOpen برای دومیبا اینا میتونی راحتتر بفهمی کی باز یا بسته میشن و واکنش نشون بدی. برای هندل کردن event باز و بسته شدن کلی کمک میکنن.توی CalendarDatePicker حالا میتونی یه calendarDelegate بدی، که باهاش میتونی تقویم دلخواه خودت رو بسازی — نه فقط تقویم میلادی.توی مثالش یه تقویم فرضی نشون داده که ماههای زوج ۲۱ روزهن، ماههای فرد ۲۸ روزهن، و هر ماه از دوشنبه شروع میشه!با این قابلیت، انعطاف خیلی بیشتری برای ساخت تقویمهای خاص داری.یه سری بهبود کوچیک دیگه هم داشتن:حالا میتونی به showDialog، showAdaptiveDialog و DialogRoute یه animationStyle بدی، که انیمیشن باز و بسته شدن دیالوگ رو شخصیسازی کنی.ویجت Divider هم یه borderRadius گرفته که بتونی گوشههای خط جداکننده رو گرد کنی — مخصوصاً وقتی که قطرش زیاده خیلی به درد میخوره.جدا از فیچرهای جدید، توی این نسخه چندتا باگ مهم هم توی ویجتهای DropdownMenu و Slider توی لایبرری Material برطرف شده:مثلاً:مشکلاتی که باعث میشدن DropdownMenu درست کار نکنه یا نادرست رندر بشهیا ایراداتی که توی اسلایدرها بودن و رو تعامل یا انیمیشنها تأثیر میذاشتندر کل یه سری ریزهکاری فیکس شده که تجربه کار با این ویجتها رو بهتر و روانتر کرده.حالا DropdownMenu میتونه عرض منوی خودش رو کوچیکتر از عرض فیلد متنی نشون بده. تو نسخههای قبلی این باعث میشد با خطای RenderFlex overflow مواجه بشی، ولی الان دیگه فیکس شده. ضمن اینکه عرض پیشفرض منو هم الان با توجه به متن داخل فیلد تنظیم میشه، نه یه اندازه ثابت.وقتی روی یکی از دایرههای کنترلی (thumb) توی RangeSlider موس میبری، فقط همون یکی که روش هستی افکت &quot;overlay&quot; نشون میده. قبلاً جفتشون با هم فعال میشدن که اشتباه بود.و حالا Slider میتونه حتی وقتی رنگ Track شفافه، تا آخر هر دو طرف بردسترسی پدیری ( Accessibility )📦 یه قابلیت خفن دیگهای که تو این نسخه اضافه شده، بهینهسازی ساخت درخت semantics ـه!✅ با این تغییر، زمان کامپایل درخت semantics تقریباً ۸۰٪ کمتر شده.اگه داری برای وب کار میکنی، این یعنی چیزی حدود ۳۰٪ کاهش زمان رندر فریمها وقتی که semantics فعاله (مثلاً برای screen reader یا دسترسیپذیری).خلاصهش اینه: هم سرعت بیشتر، هم تجربه بهتر، مخصوصاً برای پروژههایی که دسترسیپذیری براشون مهمه.معرفی نقشهای semantics با جزئیات دقیقتریه API جدید به اسم SemanticsRole به ویجت Semantics و بخشهای مرتبطش اضافه شده که به توسعهدهندهها این امکان رو میده تا دقیقتر کنترل کنن که چطوری اجزای UI توسط تکنولوژیهای کمکی (مثل screen readerها) تفسیر بشن.حالا میتونی یه نقش خاص رو به کل زیرشاخهای از ویجتها بدی، فقط کافیه اون زیرشاخه رو با یه ویجت Semantics که نقش دلخواه رو روش گذاشتی، بپیچی. اینجوری خیلی راحتتر و منظمتر میتونی دسترسیپذیری اپت رو بهتر کنی.فعلاً این قابلیت پیشرفته semantics roles فقط برای برنامههای وب فعال شده و قراره تو آپدیتهای بعدی برای بقیه پلتفرمها هم اضافه بشه. داکبرای اطلاعات بیشتر، میتونی به بخش «بهبود دسترسیپذیری با نقشهای semantics» تو مستندات مراجعه کنی.یه سری بهبودای دیگه هم برای دسترسیپذیری اضافه شده:تجربه کاربری بهتر برای ویجتها و اسکرین ریدرها:حالا ویجتهای مختلف مثل تکستفیلد، منوها، اسلایدرها و دراپداونها بهتر از قبل پشتیبانی میشن و وقتی کاربر باهاشون تعامل میکنه، اسکرین ریدر هم توضیحهای دقیقتر و بهتری میده.ناوبری روانتر فوکوس تو وب وقتی semantics فعال باشه:رفت و آمد بین ویجتها با فوکوس دیگه پرشهای ناگهانی نداره و حرکت بین اجزا نرمتر و منطقیتر شده.شناسایی بهتر لینکها تو Android TalkBack:الان TalkBack تو اندروید لینکهایی که با Semantics.linkUrl یا ویجت Link از پکیج url_launcher تعریف شدن رو درست تشخیص میده و اعلام میکنه.پشتیبانی از حالت high-contrast ویندوز تو Flutter وب:حالت «forced colors» ویندوز که برای دیده شدن بهتر در شرایط کنتراست بالا استفاده میشه، حالا تو Flutter وب فعال شده.توسعهدهندهها میتونن با تنظیم useSystemColors تو ThemeData به صورت خودکار رنگهای سیستم رو تو تمهای Flutter اعمال کنن تا دید کاربرا بهتر بشه.بهبود تجربه Voice Control در iOS:ویجتهایی که قابلیت تعامل ندارن دیگه برچسب اضافی نمایش نمیدن، پس تجربه کاربری برای کسانی که از Voice Control استفاده میکنن، سادهتر و مرتبتر شده.تسکت اینپوت ( Text input )میتونیم اینطوری خودمونی و راحت بگیم:تو این نسخه چندتا بهبود مهم تو ورودی متن داشتیم:منوی انتخاب متن سیستم تو iOS فعال شده که پایینتر تو بخش iOS بیشتر توضیح دادیم.گزینههای ویجت Autocomplete حالا با OverlayPortal ساخته میشن که سرعتشون بهتر شده و باگهای چیدمان هم رفع شده.الان میتونی رفتار onTapUpOutside تو تکستفیلدها رو شخصیسازی کنی.توسعهدهندهها دیگه مجبور نیستن فقط متن خطا بذارن، میتونن هر ویجتی که میخوان برای پیام خطا تو FormField بسازن.متن قابل انتخاب تو Flutter باگ کمتری داره و روی وب هم سریعتر و روانتر شده.پشتیبانی از multi-windowیه عده از بچههای Canonical زحمت کشیدن و حسابی رفتن جلو که اپ دسکتاپ بتونه چندتا پنجره همزمان باز کنه!Canonical چندتا باگ رو که موقع باز شدن چندتا پنجره همزمان تو اپ پیش میومد درست کردن، مثل:دسترسی بهتر ( Accessibility )اعلانهای چرخه زندگی اپ ( App lifecycle )مدیریت فوکوس ( Focus )اتفاقات کیبورد ( Keyboard events )ورودی متناتفاقات موس ( Mouse events )حالا خیلی بهتر شده همه چی وقتی چندتا پنجره داریم!Canonical یه ویژگی جدید اضافه کرده که حالا کد دارت میتونه مستقیم با موتور Flutter از طریق FFI حرف بزنه (#163430). این یعنی دارن برای آیندهی windowing در Flutter آماده میشن.همچنین، یه رشته ریستر هم روی لینوکس اضافه کردن (#161879) که باعث میشه فریمها خیلی نرمتر اجرا بشن و وقتی چندتا پنجره باز کردی، همهچی حسابی روان باشه.(Raster)مرج کردن Threadها در دسکتاپخب Canonical ویندوز و مکاواس رو هم آپدیت کرده تا اپها بتونن Threadهای رابط کاربری و پلتفرم رو با هم Merge کنن (#162883, #162935).خب Merged threads این امکان رو میدن که با Dart FFI بتونی با APIهای native که باید روی platform thread اجرا بشن کار کنی. مثلاً اگه تو ویندوز merged threads رو فعال کنی، میتونی با Dart FFI اندازه پنجره اپت رو با استفاده از win32 APIs تغییر بدی!توی ویندوز میتونی merged threads رو فعال کنی با اضافه کردن کد زیر به فایل windows/runner/main.cpp، داخل تابع wWinMain:project.set_ui_thread_policy(UIThreadPolicy::RunOnPlatformThread)توی مکاواس میتونی merged threads رو فعال کنی با اضافه کردن این تنظیمات به فایل macos/Runner/Info.plist، داخل عنصر &lt;dict&gt;:&lt;key&gt;FLTEnableMergedPlatformUIThread&lt;/key&gt;
&lt;true /&gt;در آینده نزدیک، merged threads تو ویندوز و مک بهطور پیشفرض روشن میشه.و iOSتجربه (paste) تو اپهای Flutter روی iOS بهتر شده!حالا وقتی تو تکستفیلدهای ساده که چیز خاصی روشون تنظیم نکردی محتوا (paste) میکنی، دیگه دیالوگ تأیید نمیاد بالا. این قابلیت بهصورت پیشفرض روی همه اپهای Flutter برای iOS فعال شده.فقط اینو بدون که اگه تو اپت اکشنهای سفارشی مثل “Send Email” تو منوها داری، هنوز این قابلیت براشون کار نمیکنه.اندرویدبازنویسی ابزارهای Gradle به زبان Kotlinپلاگین Gradle در Flutter از زبان Groovy به Kotlin تبدیل شده. این تغییر باعث شده کدها راحتتر قابل ویرایش و توسعه باشن و همچنین امکان نوشتن تستهای واحد (unit tests) برای پلاگین فراهم بشه. با این تستها و تبدیل از زبان پویا به زبان استاتیک، روند ساخت (build) پروژهها پایدارتر و قابل اعتمادتر میشه. این بازنویسی قرار نیست رفتارهای قبلی رو تغییر بدهپشتیبانی از قلملمسی (Scribe / Stylus)حالا میتونید با قلملمسی (stylus) روی اندروید هم توی فیلدهای متنی بنویسید، درست مثل قابلیت نوشتن با Apple Pencil توی اپهای Flutter روی iOS. کاربرها میتونن مستقیم روی هر فیلد متنی بنویسن و دستخطشون تبدیل به متن توی فیلد میشه. هنوز همه ژستها (gestures) پشتیبانی نمیشن ولی دارن روش کار میکنن که این نقصها برطرف بشه. این ویژگی فقط روی اندروید ۱۴ به بالا فعاله و اگه خواستید میتونید با تنظیمات TextField.stylusHandwritingEnabled یا CupertinoTextField.stylusHandwritingEnabled خاموشش کنید.موتور ( Engine )ایمپلر روی اندروید ( Impeller  )از نسخه ۳.۲۹.۳ به بعد، روی دستگاههایی که اندرویدشون API level 28 (اندروید ۹) یا قدیمیتره، اپهای Flutter بهصورت پیشفرض از رندرر قدیمی Skia استفاده میکنن. این کار باعث میشه Flutter روی دستگاههای قدیمیتر پایدارتر و کممشکلتر کار کنه. رندرر Impeller همچنان روی دستگاههایی با API level 29 (اندروید ۱۰) و بالاتر بهعنوان رندرر پیشفرض باقی میمونه.با گرفتن بازخورد از کاربران با دستگاههای مختلف، تصمیم گرفتن که کدوم دستگاهها از Vulkan استفاده کنن و کدومها OpenGLES. تو این نسخه، امولاتور اندروید، دستگاههای MediaTek با API کمتر از ۳۱، دستگاههای PowerVR قدیمیتر از CXT، و نسخههای قدیمیتر GPUهای Samsung XClipse که Vulkan 1.3 رو ساپورت نمیکنن، به جای Vulkan میرن سراغ OpenGLES.مثل نسخههای قبلی، هنوزم میتونی از Impeller انصراف بدی و از این راهنما استفاده کنی. ولی چون دارن بیشتر و بیشتر به پایداری و عملکرد Impeller مطمئن میشن، تو نسخههای پایدار بعدی این امکان حذف میشه و دیگه نمیتونی روی دستگاههای جدید اندروید از Impeller رد شی.خلاصه اینکه تو Flutter 3.27 با Impeller روی دستگاههای Vulkanدار باگ و کرش داشتیم که تو 3.29 به بعد درست شده. این مشکلات رو قراره برای 3.27 درست نکنن، پس بهتره هرچی زودتر آپدیت کنید به 3.29 یا بالاتر. اگه هم نمیتونید، پیشنهاد میکنیم Impeller رو تو اندروید خاموش کنید تا دردسر نداشته باشید.آپدیتهای دیگه Impellerتو این نسخه، رندر کردن متن با Impeller خیلی بهتر شده. انیمیشنهای متنی نرمتر شدن و دیگه تکونهای اضافه و عجیب ندارن، چون کیفیت شکلهای متن (glyph) توی atlas بالاتر رفته و خطاهای گرد کردن اعداد شناور هم درست شده. اگر دوست داشتی میتونی جزئیات بیشترش رو تو flutter#149652 ببینی.قبل اپدیتبعد اپدیتالبته! اینجوری بهتره:این نسخه کلی بهبود تو کیفیت و سرعت داره، مثل:دیگه Conic curves تقریبی نیستن و مستقیماً tessellate میشنو Partial repaint بهینه شده و دیگه frequent memory allocation اتفاق نمیفتهسرعت Blur بهتر شده چون redundant attachments حذف شدنمتنهایی که دقیقاً ۱۸۰ درجه چرخیده بودن، دیگه به هم نمیخورن و درست نمایش داده میشنو DevTools and IDEs[جدید] Flutter Property Editor🛠️ حالا با ابزار جدید Flutter Property Editor خیلی راحت میتونی Property ویجتها رو تغییر بدی و مستنداتشون رو هم بخونی!📌 چطوری بهش دسترسی داشته باشی؟اگه از VS Code استفاده میکنی: از پنل کناری Property Editor.اگه با Android Studio یا IntelliJ کار میکنی: از Tool Window مربوط به Property Editor.🧪 به درد کی میخوره؟همه کسایی که موقع طراحی UI با Flutter سر و کله میزنن! میتونی:سریع ویجتها رو شخصیسازی کنیمستندات هر خاصیت رو بخونیبدون نیاز به نوشتن کد اضافی یا رفرش کردن، تغییرات رو ببینیخلاصه، طراحی UI با Flutter حالا راحتتر از همیشه شده! 🚀vs code android studio🎯 بهبودهای DevToolsابزارهای DevTools این نسخه کلی ارتقاء داشتن که تجربهی توسعه باهاشون رو خیلی بهتر میکنه:🔌 پشتیبانی آفلاین برای بخش Networkحالا میتونی ترافیک شبکه رو حتی وقتی آنلاین نیستی بررسی کنی. خیلی به درد دیباگ آفلاین میخوره.🛠️ باگفیکسهای مختلفیه سری باگهای اعصابخوردکن برطرف شدن، مثل:مشکلات بررسی تاریخچه (Review History)ارورهای Inspectorابزار Deep Links📊 بهبود ابزار CPU Profiler و Memoryدادهها دقیقتر شدن و رابط کاربری هم بهتر شده.🚀 افزایش سرعت و کاهش مصرف حافظهDevTools حالا سریعتر بالا میاد و کمتر کرش میکنه، مخصوصاً موقع کار با پروژههای سنگین.خلاصه، اگه با Flutter زیاد سر و کار داری، این نسخه از DevTools حسابی به کارت میاد!📝 اینا فقط یه بخش کوچیکی از تغییرات نسخه جدید Flutter بودن!اگه میخوای با همهی آپدیتها و جزئیات Flutter 3.32 آشنا بشی، حتماً یه سر به release noteهای DevTools نسخههای 2.44.0 و 2.45.0 بزن. اونجا همه چی دقیقتر و کاملتر توضیح داده شده.🎯 بهبودهای آنالایزر (Analyzer) در Dartتیم Dart همچنان داره روی بهتر شدن تجربه توسعهدهنده کار میکنه! این سری کلی پیشرفت داشتیم توی Dart Analyzer که باعث میشه راحتتر و سریعتر کد بزنیم:📚 معرفی قابلیت جدید doc imports: حالا میتونی توی کامنتهای مستندات (documentation comments) به المانهای خارجی اشاره کنی بدون اینکه لازم باشه واقعاً اونها رو import کنی. این خیلی برای مستندسازی مرتب و کمحجم مفیده!🔧 کلی بهبود توی قابلیتهای quick fix، assist و rename شده که حسابی سرعت کارتو بالا میبره.جزئیات بیشترشم میتونی توی سایت dart.dev بخونی.🤖 حالا Gemini تو Android Studio باهات به زبون Flutter و Dart حرف میزنه!اگه با Android Studio کار میکنی، یه خبر توپ دارم برات: Gemini حالا پشتیبانی کامل از Flutter و Dart پیدا کرده!یعنی چی؟ یعنی از این به بعد میتونی از هوش مصنوعی Gemini درست تو دل IDE محبوبت کمک بگیری تا:سریعتر و راحتتر اپ بزنی 🚀کدهای بهینهتری بنویسی ✨راحتتر با ویجتها و ساختارهای Flutter کار کنی 🎯همه اینا باعث میشن ساخت یه اپ Flutter باکیفیت بالا، هم سریعتر باشه هم لذتبخشتر.اگر میخواد راجبش این داک بخون✨ پشتیبانی از Model Context Protocol (MCP) برای Dart و Flutter تو راهه!پشتیبانی از Model Context Protocol (یا همون MCP) داره برای Dart و Flutter میاد، و قراره یه تغییر اساسی تو تجربهی برنامهنویسیمون ایجاد کنه! 😍Dart Tooling MCP Serverیعنی چی؟یه MCP SDK برای Dart منتشر شده و حالا دارن یه سرور MCP مخصوص ابزارهای Dart میسازن. این سرور قراره اطلاعاتی مثل وضعیت کد، زمان اجرا، و حتی وابستگیهای پروژه رو بده به ابزارهایی مثل Android Studio یا VS Code.چه فایدهای داره برامون؟ 🤔✅ کدهای پیشنهاد میشن دقیقتر میشنمثلاً وقتی autocomplete یا generate میزنی، خروجیها باهوشتر و کاربردیتر میشن.🧠 کارهای پیچیده رو هم میتونه خودش انجام بدهمثل:– درست کردن مشکل چیدمان– مدیریت وابستگیها (dependencies)– حتی رفع خطاهای زمان اجرا 😲خلاصهاش:یه دستیار حرفهایتر تو IDE خواهیم داشت که دقیقاً میدونه داره با چه پروژهای کار میکنه. منتظر بمون... قراره کلی حال کنیم! 🚀با هوش مصنوعی بساز! 🧠✨معرفی Firebase AI Logic توی فلاتر!حتماً اسم Vertex AI به گوشت خورده یا شاید تو پروژههات استفادهش کردی — همون سرویس گوگل برای آوردن قدرت مدلهای هوش مصنوعی مثل Gemini داخل اپها.اما یه عالمه از شما گفتید که:&quot;میخوایم مستقیماً از Gemini Developer API استفاده کنیم، چون رایگانتره و راحتتر!&quot;خب، گوگل صداتون رو شنید! 😎از امروز:خب Vertex AI توی Firebase تبدیل شده به Firebase AI Logic!با این ابزار جدید، میتونی با یه Flutter SDK ساده، هم از Gemini API استفاده کنی، هم از Imagen مدلها، اونم مستقیم از اپ سمت کلاینت، بدون نیاز به سرور! 🎉🔧 یعنی چی دقیقتر؟لازم نیست برای هوش مصنوعی بری سمت backend.میتونی مستقیماً از فلاتر به مدلهای تولید متن یا تصویر وصل شی.و از فری تیِر خفن Gemini Developer API هم لذت ببری!🔥 خلاصهاش؟هوش مصنوعی از همیشه سادهتر و دم دستتر شده برای اپهای Flutter. وقتشه یه قابلیت AI خفن به اپت اضافه کنی 💪اگر الان داری از بستهی firebase_vertexai استفاده میکنی، فعلاً مثل قبل کار میکنه، ولی بهتره هر چه زودتر به بستهی جدید firebase_ai مهاجرت کنی تا از قابلیتهای بهروز و بهتر بهره ببری.داشبورد AI Monitoringداشبورد AI Monitoring جدید توی کنسول Firebase بهت یه دید دقیق و قابل استفاده میده از نحوه استفادهات از APIهای Gemini.این داشبورد کلی اطلاعات مثل الگوهای مصرف، عملکرد سیستم، و مشکلات احتمالی رو نشون میده تا بتونی با داده تصمیم بگیری و مطمئن باشی که بهترین استفاده رو از APIها داری.همچنین AI Monitoring کمکت میکنه باگها و رفتارهای عجیب توی استفاده از Gemini API رو پیدا و حل کنی.تغییرات بزرگ و حذفهاتو اندروید، از API 36 به بعد دیگه نباید از semantic announcement events استفاده کنی چون منسوخ شدن.به جای اون، باید از “polite” implicit announcements استفاده کنی که با تنظیم SemanticProperties.liveRegion انجام میشه.یه مشکل فعلاً هست که وقتی متن باید اعلام بشه ولی نباید فوکوسپذیر باشه، اعلان به درستی کار نمیکنه.برای جزئیات بیشتر و برنامههای حل این مشکل میتونی به issue شماره #165857 مراجعه کنی.همچنین تو داکیومنت SemanticService.announce راهحلهای جایگزین هم هست که میتونی ببینی.حمایت از ۶ پکیج متوقف شدهمونطور که قبلاً تو بلاگ انتشار Flutter 3.29 گفتیم، دیگه پشتیبانی از این پکیجها قطع شده:flutter_markdown (جزئیات در issue شماره #162966)ios_platform_images (#162961)css_colors (#162962)palette_generator (#162963)flutter_image (#162964)flutter_adaptive_scaffold (#162965)بهتون پیشنهاد میکنیم برای جایگزینها و بحثهای بیشتر، به هر کدوم از اون issueها سر بزنید و نظرات رو ببینیدحداقل نسخههای iOS و macOSخب Flutter در نسخهی بعدی پایدار، دیگه از iOS 12 و macOS 10.14 (Mojave) پشتیبانی نمیکنه و حداقل نسخهها رو میبره روی iOS 13 و macOS 10.15 (Catalina). یعنی برنامههایی که با نسخههای آیندهی Flutter ساخته بشن، روی iOS 12 یا macOS 10.14 اجرا نمیشن.تغییرات مهم و حذفها در این نسخه:اول ExpansionTileController در Material حذف شده و به جای اون باید از ExpansibleController در لایه Widgets استفاده کنید.اسم SelectionChangedCause.scribble که حذف شده بود، به SelectionChangedCause.stylusHandwriting تغییر کرده، چون ویژگی Scribble اپل حالا با Scribe اندروید یکی شده.برای هماهنگسازی بیشتر تمهای Material، ThemeData.indicatorColor حذف شده و باید به جای اون از TabBarThemeData.indicatorColor استفاده کنید. همچنین تمهای کامپوننت مثل cardTheme، dialogTheme و tabBarTheme باید به ترتیب به CardThemeData، DialogThemeData و TabBarThemeData مهاجرت داده بشن.فرمول SpringDescription در بعضی رفتارها اصلاح شده تا رفتارهای فیزیکی واقعیتر و بدون خطا باشه. این تغییر باعث میشه که بعضی springهای با نسبت میرایی کمتر از 1 (underdamped) که جرمشون غیر از 1 بود، رفتار پرش متفاوتی بعد از آپدیت داشته باشن. برای برگردوندن رفتار قبلی باید پارامترهای spring رو طبق راهنمای Spring Description Underdamped تغییر بدید. اونجا همچنین ابزاری برای محاسبه تغییرات پارامترها هست.اگر بخوای، میتونم لینک و راهنمای کامل این تغییرات رو هم برات بیارم!خلاصهنسخه ۳.۳۲ فلانتر یه قدم بزرگ دیگه رو به جلو برداشته که به لطف تلاش بینظیر جامعه توسعهدهندهها ممکن شده. کلی ویژگی جدید مثل وب هات ریلود و بهبودهای پیوسته روی پلتفرمها اضافه کردیم.منبعیه برنامه‌نویس موبایل از جنس فلاتر، یه قلب پر از کد و یه ذهن پر از ایده!من علیرضام و اینجا دارم با عشق محتوا می‌سازم. حمایتت یعنی یه لبخند، یه انگیزه و کلی محتوای خفن‌تر! 😎🔥کافی بدهبزن بریم! بزودی ویدیوش رو میزارم داخل یوتیوب: کانال یوتیوب منو همینطور تو تلگرام: t.me/alirezabashi_98منتظرتونم! 🙌🔥</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Wed, 21 May 2025 02:44:22 +0330</pubDate>
            </item>
                    <item>
                <title>چگونه از حالت‌های System UI در Flutter برای تجربه کاربری بهتر استفاده کنیم</title>
                <link>https://virgool.io/@alirezabashi98/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B2-%D8%AD%D8%A7%D9%84%D8%AA-%D9%87%D8%A7%DB%8C-system-ui-%D8%AF%D8%B1-flutter-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%DB%8C-%D8%A8%D9%87%D8%AA%D8%B1-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D9%86%DB%8C%D9%85-arox8fdmrhkk</link>
                <description>immersiveSticky sv edgeToEdgeسلام دوستان چطورید امدم SystemUiMode در فلاتر براتون بگم و اینگه چطئر برای تجربه کاربری بهتر استفاده کنیم.میخوایم نوار وضعیت Status Bar و Navigation Bar رو مدیریت کنیم که چطور نمایش داده بشه.اول از هرچیزی قبل runApp کد زیر مینویسیمWidgetsFlutterBinding.ensureInitialized();وضعیت edgeToEdgeedgeToEdgeاگر بخوایم یه تجربه کاربری تمام صفحه ایجاد کنیم برای کاربرامون از edgeToEdge استفاده میکنیمنوار وضعیت و نوار ناوبری شفاف میشن و محتوای برنامه زیر اونها نمایش داده میشه.void main() {
  WidgetsFlutterBinding.ensureInitialized();

  SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
  runApp(const MyApp());
}وضعیت immersiveimmersiveنوار وضعیت و نوار ناوبری کاملاً مخفی میشه و فقط با کشیدن انگشت از لبه صفحه ظاهر میشه.این حالت تمرکز کامل روی محتوای برنامه را فراهم میکنه.void main() {
  WidgetsFlutterBinding.ensureInitialized();

  SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive);
  runApp(const MyApp());
}وضعیت immersiveStickyimmersiveStickyمشابه حالت immersive، اما نوارهای وضعیت و ناوبری پس از ظاهر شدن با کشیدن انگشت، به‌طور خودکار دوباره مخفی می‌شوند.نیازی به تعامل بیشتر برای ناپدید شدن مجدد نیست.void main() {
  WidgetsFlutterBinding.ensureInitialized();

  SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
  runApp(const MyApp());
}وضعیت manualmanual( تنظیم شده فقط Navigation Bar نمایش داده نشه )کنترل کامل بر نمایش یا مخفی‌سازی نوار وضعیت و ناوبری را فراهم می‌کند.شما باید به‌صورت دستی مشخص کنید که کدام یک از نوارها نمایش داده شوند (با استفاده از overlays).void main() {
  WidgetsFlutterBinding.ensureInitialized();

  SystemChrome.setEnabledSystemUIMode(     
   SystemUiMode.manual, 
    overlays: [SystemUiOverlay.bottom],
   );
  runApp(const MyApp());
}وضعیت leanBackleanBackنوار وضعیت و نوار ناوبری مخفی می‌شوند، اما به محض تعامل کاربر (مثلاً لمس صفحه)، دوباره ظاهر می‌شوند.نوارها تا زمانی که تعامل بیشتری وجود نداشته باشد، نمایش داده می‌شوند.void main() {
  WidgetsFlutterBinding.ensureInitialized();

  SystemChrome.setEnabledSystemUIMode(SystemUiMode.leanBack);
  runApp(const MyApp());
}</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Sat, 07 Dec 2024 13:12:12 +0330</pubDate>
            </item>
                    <item>
                <title>ریسک = پیشرفت</title>
                <link>https://virgool.io/@alirezabashi98/%D8%B1%DB%8C%D8%B3%DA%A9-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA-bzjgwbz8xclw</link>
                <description>سلام چطورید دوستان خیلی وقته که نبودم ولی میخوام یه تجربه جدیدم بهتون بگماولن اگر مثل من پارتی نداشته باشید بشینید یه گوشه و غصه بخورید هیچ مشکلی حل نمیشه خب این خودتونم میدونیدمن یه جای به بعد گفتم خودم برای خودم پارتی درست میکنم رفتم به یکی اسم نمیارم پیام دادم یه سرویسی کمکی حالا اسمش هرچی باشه رایگان بهش میدم دید کارم خوبه استخدامم کرد حقوق کم بود ولی برای من  پیشرفت بودهمون جمع کردم شد ۱۰ میلیون میخواستم لپ تاپم بفروشم لپ تاپ دست دو بهتری بگیرمولی به این فکرم بعدش هیچ خبری نیست باید مهاجرت کنم تهران کار پیدا کنم ماهی ۱۰ میلیون کم کمش بگیرم که بتونم رشد کنمتهران که میخواستم برم دوستام مسخر میکردن ۱۰ میل ۵ فقط باید بخوری چیکار میخوای بکنیولی گوش ندادم ریسک کردم رفتم یک ماه نیم دونه به دونه شرکتا گشتم هی نه میشنیدم بعد یک ماه نیم بالاخره اره شنیدم و رشد و پیشرفت من شروع شداون شرکتای که میرفتم میگفتن رزومه باسد بفرستی بعد تایید شد خودشون میگن بیای حضوری خودت نباید بریمن حوصله نداشتم بگم میدونم ولی وقت ندارم و... میگم باشه و میرفتم شرکت بعدیخلاصه این همه گفتم که به این برسم که ریسک کنید اگر پیشرفت نکنید تجربه جدید به دست میارید فقط حواستون باشه ریسک خیلی بدیم نباشه دیگه اینجا من بدترین حالت برمیگشتم خونه و ۱۰ میلیونم میرفته</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Thu, 05 Dec 2024 21:45:42 +0330</pubDate>
            </item>
                    <item>
                <title>برنامه نویسی از کجا شروع کنم؟</title>
                <link>https://virgool.io/codenevis/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A7%D8%B2-%DA%A9%D8%AC%D8%A7-%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D9%86%D9%85-yomd574ckm78</link>
                <description>میخوام داخل این مقاله بهتون بگم ایا برنامه نویسی بدرد میخوره یا از کجا باید شروع کنی چه زبانی به درد تو میخوره همه سوالاتی که شاید برات پیش بیاد!یوتیوب من هم دنبال کنید که بزودی اموزش های برنامه نویسی 0 تا 100 میزارمhttps://www.youtube.com/@alirezabashi98آیا برنامه نویسی بدرد من میخوره ؟باید ببینی ایا حوصله این داری در روز 8 ساعت بشینی یه جا و کد بزنیآیا حوصله این داری خودت هروز به چالش بکشی چون موقع کد زدن به باگ یا چالش های برخورد میکنی که باید ساعت ها یا روز ها دنبال راه حل باشیبیشتر بدرد درونگرا ها میخوره برنامه نویسی ، نکه برونگراها نتونن ولی خب...چه زبانی باید بخونم؟خیلیا میان از من میپرسن آیا پایتون بخونم خوبه؟ آیا php بخونم خوبه؟خب کلا سوال اشتباه هست!!باید اول از خودت بپرسی که کدوم بخش میخوای کار کنی!یعنی چی؟ بیا مثال بزنم مثلا من میخوام برنامه نویس موبایل بشم یا برنامه نویس هوش مصنوعی یا نه من دوست دارم سایت طراحی کنمخب وقتی مشخص باشه مقصد کجاس میشه به سوال قبلی جواب داد که پایتون خوبه یا نه مثلا  کسی که برنامه نویس موبایل میخواد بشه قطعا پایتون بده و کسی که برنامه نویس هوش مصنوعی میخواد بشه پایتون بهترین زبانهانتخاب زبان اندروید -&gt; kotlinios -&gt; swiftموبایل ( اندروید و ios ) -&gt; flutterوب فرانت اند ( زیبای سایت ) -&gt; html , css , jsبک اند ( مغز و دیتابیس سایت )  -&gt; خیلی گزینه ها برای این مورد هست باید تحقیق کنی ولی من پیش نهاد میکنم php , mysql در حالت کلیبازی سازی -&gt; موتور بازی سازی unreal engine که فکر کنم c++ باید میخوندید موتور بازی سازی یونیتی هم هست که من انریل انجین پیشنهاد میدمویندوز -&gt; c# و....برای حمایت من حتما لایک کن که انگیزه برای نوشتن مقاله های بیشتر پیدا کنم</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Wed, 27 Mar 2024 17:06:40 +0330</pubDate>
            </item>
                    <item>
                <title>The Struggles of Alireza and Fatemeh: A Young Iranian Couple&#039;s Journey Toward Becoming an International Powerhouse</title>
                <link>https://virgool.io/@alirezabashi98/the-struggles-of-alireza-and-fatemeh-a-young-iranian-couples-journey-toward-becoming-an-international-powerhouse-oghrkf2hr7us</link>
                <description>Alireza And FatemehAlireza Bashi is a 20-year-old Flutter programmer living in Iran. Despite the difficult social and economic conditions in the country, Alireza is dedicating himself to becoming a great programmer and mobile app developer. His fiancee, Fatemeh, is on the same journey, and they are both working hard to succeed in their respective fields.Alieza And FatemehBefore becoming a programmer, Alireza used to read books in school that he thought were ridiculous. However, when he finally prepared to read a book of his own free will, he realized it wasn&#x27;t as bad as he thought. Alireza has since developed strong programming skills and is determined to put those skills to use.Alireza and Fatemeh went to Tehran together after Fatemeh was accepted at Tehran University. Despite their meager financial resources, the couple had big dreams for their future – to collect enough money for them to be able to travel abroad to a safer place, get comfortable, and travel together more easily.Alireza and Fatemeh shared a strong bond of love and worked together to face all their challenges. They hoped that with their hard work, they would eventually be able to achieve their dreams and start their own company in Iran, helping other young people who are struggling similarly.The couple also wanted to have a daughter and had already decided on a name for her – Helma. They dreamed of giving birth to her in a foreign country such as Germany or Canada and being the best parents for her there. Alireza aspired to be a top international programmer and Fatemeh dreamed of becoming the best designer in the world.Alireza and Fatemeh&#x27;s story is one of love, resilience and strength. They are an example of how, with determination and dedication, even the most challenging circumstances can be overcome.</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Wed, 28 Dec 2022 11:18:12 +0330</pubDate>
            </item>
                    <item>
                <title>Persistence in the Face of Resistance: Alireza Bashi&#039;s Journey to Freedom</title>
                <link>https://virgool.io/@alirezabashi98/persistence-in-the-face-of-resistance-alireza-bashis-journey-to-freedom-dwzlnur93jw2</link>
                <description>AlirezaAlireza Bashi is a 20 year old from Iran who is trying to learn Flutter programming despite facing difficult financial conditions. He dreams of using his skills to earn money, so he can travel to Tehran and find better job prospects. Alireza also has aspirations to become the best programmer in the world, and start his own company with his family.AlirezaUnfortunately, Iran&#x27;s authorities have made the conditions difficult for its people and Alireza has limited resources to make his dreams come true. He must pay for his own accommodation, transportation, and food to travel to Tehran. And despite all this, there is still the pressure of authorities looming over him in Iran.Fortunately, Alireza has a friend, Fatima, who he hopes to marry one day and have a daughter named Helma abroad with her. Alireza wants to give birth to Helma away from Iran, because that is the only way he can be sure that she won&#x27;t have to endure a difficult life as he has.To make his dreams a reality, Alireza decides to set out on an ambitious path of learning Flutter programming and perfecting his skills until he can get accepted in Tehran and find lucrative job opportunities. He puts in long hours of hard work and perseverance so that he can achieve his dreams of freedom and success.After months of studying and practice, Alireza manages to get accepted in Tehran and find better job opportunities. He is finally able to use his Flutter programming skills to earn money and travel abroad with his family.Aeza And FatemehNow, Alireza is living his life to the fullest and fulfilling his dreams of becoming the best programmer in the world and starting a company with his family. He has also married the love of his life and the two of them are expecting their daughter soon. Alireza knows that his family will have all the opportunities that he was denied, and he is grateful for everything he has achieved.</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Tue, 27 Dec 2022 21:30:48 +0330</pubDate>
            </item>
                    <item>
                <title>Helma&#039;s Path: The Love Story of Alireza and Fatemeh, Two Flutter Programmers in Iran</title>
                <link>https://virgool.io/@alirezabashi98/helmas-path-the-love-story-of-alireza-and-fatemeh-two-flutter-programmers-in-iran-jj1khutjshq3</link>
                <description>Alireza And FatemehAlireza Bashi was a 20-year-old Flutter programmer living in Iran, where the conditions of the country were not good. Despite his poor financial conditions, Alireza worked very hard to become a successful Flutter programmer and create mobile applications.HelmaAlireza’s fiancee, Fatemeh, was also on the same path and trying her best to become a designer. Both of them were accepted to Tehran University, and together they started working towards their dreams.Although the exams had made it difficult for them to talk to each other, Alireza and Fatemeh knew they were both going to make it. Fatemeh was an avid reader, and she had taught Alirezam how to read properly. Alirezam could not understand the ridiculous books that he was forced to read in school, until he read a book of his own and realized how useful it was.Alireza was particularly skilled in programming, and both him and Fatemeh had the same intention of collecting their money after going to Tehran, then go abroad so that they wouldn’t have to face the same hardships in Kashkari and have some peace for themselves.This couple were really in love and helped each other in every way. However, they faced a number of challenges, such as paying for their food, transportation and the cost of their dormitories. Nevertheless, both of them stayed determined and worked hard for their future.When the time came to decide on a name for their daughter, Alireza and Fatemeh agreed on Helma; a name that symbolized both their love for each other and determination to make their dreams come true.</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Tue, 27 Dec 2022 06:02:30 +0330</pubDate>
            </item>
                    <item>
                <title>چرا فایل ها روی تب های موجود در VS Code باز می شوند و چگونه آن را تغییر دهیم</title>
                <link>https://virgool.io/@alirezabashi98/%DA%86%D8%B1%D8%A7-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7-%D8%B1%D9%88%DB%8C-%D8%AA%D8%A8-%D9%87%D8%A7%DB%8C-%D9%85%D9%88%D8%AC%D9%88%D8%AF-%D8%AF%D8%B1-vs-code-%D8%A8%D8%A7%D8%B2-%D9%85%DB%8C-%D8%B4%D9%88%D9%86%D8%AF-%D9%88-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A2%D9%86-%D8%B1%D8%A7-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%AF%D9%87%DB%8C%D9%85-hfolz4iogzdi</link>
                <description>چرا فایل ها روی تب های موجود در VS Code باز می شوند و چگونه آن را تغییر دهیمبا استفاده از کد ویژوال استودیو، احتمالاً متوجه این رفتار شده اید:شما روی یک فایل کلیک می کنید. در یک برگه جدید باز می شود.روی فایل دیگری کلیک می کنید. فایل را در همان تب باز می کند و جایگزین فایل قبلی می شود.دیدن مثالو این می تواند کمی آزار دهنده باشد. اگر بخواهید هر فایل را با کلیک روی آنها در یک تب جدید باز کنید، چه؟ چرا اینجوری رفتار میکنه ?خوب، اگر دقیق‌تر نگاه کنید، متوجه می‌شوید که نام برگه مورب است . در واقع این تب پیش نمایش فایل است. وقتی روی یک فایل کلیک می کنید، محتوای آن را پیش نمایش می کنید. از آنجایی که فقط یک برگه پیش نمایش می تواند وجود داشته باشد، اگر فایل دیگری را انتخاب کنید، پیش نمایش تغییر می کند.در واقع، این یک ویژگی VS Code است. اگر فقط به دنبال چیزی هستید، اما نمی‌خواهید فایل‌ها را باز نگه دارید، از باز کردن 10 تب مختلف جلوگیری می‌کند. به این ترتیب، تنها با کلیک کردن بر روی آن، می توانید به راحتی آنچه در داخل یک فایل وجود دارد، مشاهده کنید.اگر می‌خواهید فایل باز شود و در برگه خودش بچسبد، می‌توانید روی نام فایل یا روی برگه دوبار کلیک کنید.دیدن مثالخوب است، اما ترجیح می دهم وقتی روی آنها کلیک می کنم فایل ها را باز کنم. چطور می توانم آن را انجام بدهم؟من تو را می شنوم شاید معمولاً بخواهید فایل‌هایی را که انتخاب می‌کنید باز کنید و این رفتار به نوعی آزاردهنده باشد.این فقط اصطکاک را اضافه می کند زیرا فکر می کنید فایل باز است اما ایجاد تفاوت با پیش نمایش دشوار است. پس فراموش می کنید، روی فایل دیگری کلیک می کنید و اسنپ می کنید، فایل قبلی شما از بین رفته است و باید دوباره بروید آن را دریافت کنید!من یک خبر خوب برای شما دارم: می توانید این رفتار را پیکربندی کنید! ?برای انجام این کار، تنظیمات VS Code را باز کنید. «فعال کردن پیش‌نمایش» را جستجو کنید. یک گزینه Workbench › Editor: Enable Preview را خواهید دید که مطمئناً علامت زده شده است.vs codeتوجه داشته باشید که می‌توانید این رفتار را برای فایل‌هایی که از طریق ویژگی باز کردن سریع باز می‌کنید نیز کنترل کنید .vs codeهنگامی که یک فایل را با نام آن از طریق ویژگی باز کردن سریع باز می کنید، احتمالاً می خواهید آن را به جای پیش نمایش باز کنید. اگر چنین است، تیک گزینه Workbench › Editor: Enable Preview From Quick Open را نیز بردارید.در نهایت، اگر ترجیح می دهید به روز رسانی settings.jsonکنید، در اینجا کلیدهایی وجود دارد که به دنبال آن هستید:{
  &amp;quotworkbench.editor.enablePreview&amp;quot: false,
  &amp;quotworkbench.editor.enablePreviewFromQuickOpen&amp;quot: false
}دیدن منبعاگه خوشتون امد لایک و کامنت شما به من انگیزه میده امیدوارم به کارتون امده باشهکانال تلگرامی خودمم میزارم اگه خوشتون امد عضو بشیدt.me/alirezabashi_98instagram.com/alirezabashi98github.com/alirezabashi98</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Fri, 16 Dec 2022 11:03:45 +0330</pubDate>
            </item>
                    <item>
                <title>درس ، تجربه</title>
                <link>https://virgool.io/@alirezabashi98/%D8%AF%D8%B1%D8%B3-%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-lnr5iy85fqfv</link>
                <description>‏یه ضرب‌المثلی هست که میگه:کسایی که کاری رو بلد هستن انجامش میدن و کسایی که کاری رو خوب بلد نیستن؛اون کار رو درس میدنواسه همینه کسایی که زندگی کردن بلدن؛زندگی میکننو کسایی که زندگی کردن بلد نیستن؛دیگران رو نصیحت میکنن که چطور زندگی کنین.با کسی رابطه احساسی برقرار کن که نَ تنها افتخار میکنه تو رو داره ، بلکه حاضره هر ریسکی رو بکنه که فقط کنار تو باشه!</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Sun, 06 Nov 2022 22:32:35 +0330</pubDate>
            </item>
                    <item>
                <title>حلقه بی پایان آموزش خریدن</title>
                <link>https://virgool.io/@alirezabashi98/%D8%AD%D9%84%D9%82%D9%87-%D8%A8%DB%8C-%D9%BE%D8%A7%DB%8C%D8%A7%D9%86-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AE%D8%B1%DB%8C%D8%AF%D9%86-hefszjcfkltd</link>
                <description>سلام چطورید دوست داشتم یه نکته بیام اشاره کنم البته تویه برنامه نویسی یا هر رشته ای که زیاد اپدیت میشه و تغییر میکنه هم میتونه اینطوری باشه خلاصش کنم‌....آموزش میخری -&gt; تمرین میکنی یادمیگیری -&gt; تکنولوژی و اپدیت و... -&gt; آموزش میخریو همینطور یه حلقه بی نهایت میشه مشکلی نداره ولی در صورتی که برایه اموزش پولی ندی دقیقا امدم این بگم زبان بخون برو سایت رسمی یاد بگیر بجز شروع اول دیگه هزینم نکن این اموز دیدن بیخودیم چرخش بشکن برنامه بساز البته مثال برنامه نویسیه .رشنه دیگه هستی اون علم عملی استفادش کن هی یادبگیری استفاده نکنی برایه چته پس راه پولدراوردنش ایده و ... پیدا کن</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Wed, 02 Nov 2022 23:27:25 +0330</pubDate>
            </item>
                    <item>
                <title>∅</title>
                <link>https://virgool.io/@alirezabashi98/%E2%88%85-itwn7nunnwrp</link>
                <description>قانون شمع : اگر میخوای ؟ باید بسوزی !مشکلات چه ادم‌هایی رو دوست دارم؟چه نوع درد و سختی رو میخواهم؟انجامش بده !!انچه که موفقیت شما را تعیین میکند این نیست که &quot;شما میخواهید از چه چیزی لذت ببرید؟ &quot;سوال درست این است: &quot;چه دردی را میخواهید تحمل کنید؟&quot; مسیر خوشبختی مسیری پر از خفت و شرم استقلبت هرجای باشه جسمت میره اونجا?</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Mon, 17 Oct 2022 11:04:44 +0330</pubDate>
            </item>
                    <item>
                <title>کلید میانبر ، پلاگین و تنظیمات vs code برایه فلاتر</title>
                <link>https://virgool.io/@alirezabashi98/%DA%A9%D9%84%DB%8C%D8%AF-%D9%85%DB%8C%D8%A7%D9%86%D8%A8%D8%B1-%D9%BE%D9%84%D8%A7%DA%AF%DB%8C%D9%86-%D9%88-%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA-vs-code-%D8%A8%D8%B1%D8%A7%DB%8C%D9%87-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-z8osvgzqpk4u</link>
                <description>میانبر هایه vs codeتویه یوتیوب پر از کلید هایه میانبر vs code هست من بهتریناشو گلچین کردمQuick Fixلینوکس ctrl + .ویندوز ctrl + .مک cmd + .هرجایه از کد که نشانگر متن اونجا باشه بعد زدن کلیک میانبر بالا میتونید ویجت اضافه کنید حذف کنید اون بخش کد به یه تابع جدا و.... انجام بدید پیشنهادا برایه اون بخش که نشانگر باشه به شما پیشنهاد میده کارتون سریع انجام بدیدquick fixquick fixنمایش Command Platetteلینوکس ctrl + shift + pلینوکس ctrl + shift + pمک cmd + shift + pبا زدن کلید میانبر بالا یه کادر جستجو باز میشه که میتونید دستورات پیدا کنیدCommand Platetteسرچ کردن فایل بر اسا اسملینوکس ctrl + pویندوز ctrl + pمک cmd + pبدون ول کردن صفحه کلید البته اگه تایپ ده انگشتی میکنید میتونید به راحتی وارد فایلایه مختلف بشید خوبی که داره اگه فایلا زیاد باشه با سرچ راحت پیدا میکنیSearch files by nameDart: Add Dependencyلازم نیست همش pub.dev باز کنید و دنبال کتابخونه باشید و بعد اضافه کنید با این دستور به راحتی کتابخونه هارو اضافه کنیدابتدا کامند پلت باز کنید و دستور &quot;Dart: Add Dependency&quot; سرچ و انتخاب کنیدDart: Add Dependencyدوتا گزینه هست یکی کتابخونه پروژه اضافه میکنه یکی کتابخونه دولوپربعد انتخاب هر کتابخونه ای که لازم دارید میتونید سرچ کنید اگه چندتا کتابخونه میخواید یکی که انتخاب کردید کاما بزارید و بعدی سرچ کنید در اخر اینتر بزنید کتابخونه ها اضافه میشنDart: Add Dependency snippets دارت و فلاتربا کلمه کلیدی هایه زیر بجایه نوشتن کامل کلاس ها و اضافه کردن ارث بریهاشون به راحتی اونهارو اضافه کنید این snippets نمیدونم فارسی چی بگم بهتر باشه :)دستورات زیر بزنید کلاسی از نوعی که گفتم به راحتی میسازه ( کلاسی که ارث بری میکنه از اون ویجت )stless =&gt; StatelessWidgetstful =&gt; StateFulWidgetstanim =&gt; StateFulWidget with an AnimationControllerداخل دارت میتونید تایپ کنید ife و به راحتی یه if else بسازید بدنه کامل میسازه فقط شرط لازمه بزاریدبرایه snippets هایه بیشتر اینجا کلیک کنیدو اگر snippets هایه بیشتر میخواید میتونید پلاگین Awesome Flutter Snippets نصب کنیدلیست کلید هایه میانبر کیبوردلینوکس ctrl+k  ctrl +sویندوز ctrl+k  ctrl +sمک  cmd+k  cmd+k حواستون باشه کلید میانبر ها دوتا نیست یکیه باید پشت سرهم سریع بزنیدشونو لیست کامل کلید میانبر ها میتونید بخونید و اگه لازم دونستید میتونید ورایشم بکنیدShow all the keyboard shortcuts پلاگین هایه کاربردی vs code برایه flutter1. Dart Data Class Generatorاین پلاگین خیلی خفنه و خودکار که دیتا کلاس میسازه متد هایه copyWith , toMap , fromMap , toJson , fromJson  , toString , == , hashCodeبراتون به راحتی یه کلیک ایجاد میکنه Using the quick fix shortcut to generate a data class Generated data class code خیلی میتونه تویه زمانتون صرفه جوی بشه رویه لینک زیر کلیک کنیدDart Data Class Generatorپلاگین جایگزینم این پایین میزارم میتونید استفاده کنیدJson to Dart Model2. Error Lensخطاهاتون اشتباهاتتون هنگام تایپ میگهError Lens3. Better Commentsاین پلاگین باعث قشنگ شدن و معلوم تر شدن کامنتا میشه Better Comments4. Remove commentsوقتی یه پروژه جدید فلاتر ایجاد میکنی کلی کامنت اضافه هست با این پلاگین همه با یه کلیک پاک کنRemoving all single line comments with the Remove Comments extension Remove Commentsادامه داره این اپدیت میکنم بعدا اینستام خبر میدمیا پست جدید میکنم کامنتا بهم بگید</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Mon, 17 Oct 2022 10:22:05 +0330</pubDate>
            </item>
                    <item>
                <title>دلی</title>
                <link>https://virgool.io/@alirezabashi98/%D8%AF%D9%84%DB%8C-irj2n5lhmpft</link>
                <description>این روزا همه ناراحتیم و خب منم خیلی بی حال خسته و دقیقا نزدیک یه هفته کلا هیچ کاریم رو نتونستم بکنم و امیدوارم حال کشورمونم یکم خوب بشه ناراحتی ها مشکلات و ... که خب همه میدونیم و الان میخوان اینترنت با طرح صیانت که بنظرم خیانت درست ترشه وضعیت بدترم بکنن البته ما برنامه نویسا تحریم بود فیلترم کردن فقط صیانت کم داشتیم ??این روزا دوباره شروع کردم و به خودم قول دادم بیشتر از قبل کار کنم به امید اینکه زودتر از این کشور خارج بشم که بتونم بقیه زندگیمون رو زندگی کنیم...اگه میخوای چیزی رو داشته باشی رو که هیچوقت نداشتی ، باید کاریو کنی که هیچوقت نکردیهرکاری که میتونیم باید برایه خودمون بکنیم چون کسی جز خودمون نداریم باید زودتر بریم پس منم به خودم قول دارم به حرف بالا که گفتم عمل کنم که زودتر برم ، اینجا گفتم که حتما خودم بعدا بتونم ببینم و یه خاطره باشه بگم دیدی تونستی هم شاید به درد کسی بخور موفق و پیروز باشید.برایه اینده ، برایه مهاجرت ، برایه با فاطمم بودن و خوشگذرونی کردن</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Thu, 29 Sep 2022 15:06:36 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش استفاده از Android Debug Bridge (adb)</title>
                <link>https://virgool.io/@alirezabashi98/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-android-debug-bridge-adb-nxkyl4kizunm</link>
                <description>Android Debug Bridge (adb)ابزار ADB چیست؟یه ابزار خط فرمان که این امکان بهمون میده به گوشی اندرویدی خودمون وصل بشیم و اعمالی مثل نصب حذف و اشکل زدایی برنامه و دسترسی به پوشته یونیکس و ... میده که اینجا میخوایم درموردشون حرف بزنیمیوتیوب من هم دنبال کنید که بزودی اموزش های برنامه نویسی 0 تا 100 میزارمhttps://www.youtube.com/@alirezabashi98پیش نیاز ها چی هستن؟1- ابزار adb داخل Android SDK Platform-Tools هست پس باید نصب کرده باشید میتونید با SDK Manager نصبش کنید یا اگه جدا میخواید دانلودش کنید اینجا کلیک کنید2- حالت USB Debugging mode تویه گوشیتون باید فعال کرده باشید با یه سرچ ساده تویه یوتیوب یا گوگل میتونید راحت چطور فعال کردنش رو پیدا کنید اینجا من خلاصه میگم به مسیر زیر بریدSettings &gt; About Phone &gt; Build number &gt; حدود ۱۵ بار رویه شماره ساخت کلیک کنید ; Settings &gt; Developer Options &gt; USB Debugging).3- یه کابل که گوشی به لپ تاپ وصل کنید4-پکیج زیر اگه لینوکسید نصب کنیدsudo pacman -S android-toolsچطور با adb به گوشی خودمون وصل بشیم؟به ترتیب دستورات زیر بزنیدadb devices adb devicesبا این دستور لیست گوشی های متصل به سیستم بهتون نمایش میده یه عددی برایه دیوایس ما نمایش داده اینجا برایه من هست 520005f5dcd1a6e7 برایه شما ببینید چیه و دستور زیر بزنیدadb devices adb -s 520005f5dcd1a6e7 tcpip 5555یه درخواست به گوشیتون ارسال میشه تاییدش کنید و الان به گوشی متصل هستیدچطور بدون کابل به گوشی وصل بشیم؟اول باید مرحله قبل انجام داده باشید و با کابل متصل شده باشیددوم باید نقطه اتصال گوشی روشن و با سیستم بهش وصل بشیدحالا بریم سراغ وصل شدن با wi-fi با adb دستورات زیر به ترتیب میزنیم قبلش اگه لینوکسی هستید پکیج net-tools نصب داشته باشیدتویه لینوکس دستور ifconfig بزنید و ip خودتون پیدا کنید اینجا برایه من 192.168.43.60 هست ببینید برایه شما چیه و دستور زیر بزنیدنکته : فقط وقتی میخواید ip  خودتون بزنید عدد اخر برایه من 60 هست بجاش 1 مینویسم شمام عدد اخر بجاش 1 بنویسید مثل داخل تصویراگه لینوکسید پکیج net-tools نصب کنیداگه کانکت نشد به این ip اول چک کنید وصل باشید به وای فای بعد چک کنید با کابل کانکت باشید در اخر حتما ip فرق داره بررسی کنید ip که بهش وصلید چیه adb connect adb connect ip:5555 و حالا به گوشی خودتون با wi-fi وصل هستید میتونید کابل جدا کنیدچطور دیست کانلت بشیم و یطورای ریستارت کنیم ADB رو؟دستورات زیر به ترتیب بزنیدadb disconnectadb kill-server  چطور یه فایل به گوشی خودمون با adb ارسال کنیم؟با دستور زیر به راحتی میتونید هر فایلی رو ارسال کنیدadb pushadb push /home/alireza/a.jpg /sdcard/ اینجا دوتا مسیر داریم مسیر اولی فایلی هستش که داخل سیستممون هست دومی میسری هست که داخل گوشی قرار میگیره اینجا حافظه داخلی گوشی هستچطور یه فایل از گوشی خودمون با adb دریافت کنیم؟با دستور زیر به فایل از گوشی به سیستم خودتون کپی کنیدadb pulladb pull /sdcard/a.jpg اینجا فقط یه مسیر داریم گفتیم داخل حافظه اصلی فایل a.jpg برامون بگیر بزار تو سیستم داخل لینوکس میره داخل پوشه یوزرمونچطور دستورات یونیکس اجرا کنیم؟این بخش مورد علاقه خودمه و بریم سراغش میتونید با دستور زیر دستورات یونیکس اجرا کنیدadb pushadb shellبعد از زدن این دستور وارد پوسته یونیکس گوشی میشیم و هر دستور که لازممون باشه میتونیم استفاده کنیمبرایه خارج شدن از پوشته دستور exit بزنید اگرم نخوایم وارد پوسته بشیم و فقط یه دستور برایه اجرا داریم به شکل زیر میشه دستورمون رو وارد کنیم یعنی بعد از shelladb pullچطور یه برنامه نصب کنیم؟با دستور زیر میتونید یه برنامه نصب کنیدadb installadb install /home/alireza/Downloads/termux.apk یه میسر از ما میخواد که مسیر برنامه در سیستممون هست و بعد اینتر صبر میکنیم تا نصب بشه وقتی تصب شد با پیام Success بهمون خبر میده چند تا پارامتر داره که عبارتند از -rاین برایه زمانیه برنامه نصبه و میخوایم یه اپدیت کنیم به نسخه جدید تر-s که برنامه در حافظه خارجی نصب میکنه (در صورتی که بشه برنامه در حافظه خارجی نصب کرد)چطور یه برنامه حذف نصب کنیم؟از دستور زیر برایه حذف برنامه میشه استفاده کردadb uninstall  adb shell pm uninstall -k --user 0 com.termux فقط بجایه com.termux باید پکیج نیم برنامه ای که میخواید پاک کنید بزنید حالا پکیج نیم برنامه های که الان نصبن چطور پیدا کنیم؟ با دستور زیرadb shelladb shell pm list packages  لیست پکیج نیم برنامه هارو به این شکل دسترسی دارید و همونطور که فهمیدید پکیج منیجر اندروید pm هستچطور با adb اسکرین شات بگیریم؟این خیلی کاربردیه مثلا میخوای README بنویسید و عکس چند صفحه برنامه تون هم بزارید با این دستور همین که اسکرین شات گرفتن عکس داخل سیستمتون به راحتی دارید adb shelladb shell screencap /sdcard/screenshot.pngبا این دستور اسکرین شات گرفته شد و در مسیر گفته شده یعنی حافظه داخلی و با اسم screenshot.png سیو شده حالا چطور اسکرین شات داخل سیستم داشته باشیم؟ قبلا جوابش دادم با دستور زیرadb shelladb pull /sdcard/screenshot.pngچطور با adb از صفحه گوشی فیلم بگیریم؟اینم خیلی برایه README خیلی میتونه کاربردی باشه با دستور زیرadb shelladb shell screenrecord /sdcard/movie.mp4دستوور بالا شروع به ضبط صفحه گوشی میکنه فقط وقتی که کارتون تموم شد خواستید دیگه رکورد صفحه متوقف کنید داخل ترمینال دستور Ctrl+C یا Command+C میزنیددستور پایین هم مثل همیشه فایل برامون میگیره میزاره داخل سیستمموناطلاعیه‌ها b pulladb pull /sdcard/movie.mp4چطور یه رویداد داخل گوشی با adb انجام بدیم؟نیازی نیست اینجا حتما بلد باشید من خودم خیلی این چیزا دوست دارم پس خوندم میتونه سرعتتون رو بالا تر ببره مثلا با یه دستور برید داخل صفحه home گوشیاتون من مهم ترین دستوراتشو خلاصه براتون میزارمadb shell input keyevent 3 // Home btn
adb shell input keyevent 4 // Back btn
adb shell input keyevent 5 // Call
adb shell input keyevent 6 // End call
adb shell input keyevent 26 // Turn Android device ON and OFF. It will toggle device to on/off status.
adb shell input keyevent 27 // Camera
adb shell input keyevent 64 // Open browser
adb shell input keyevent 66 // Enter
adb shell input keyevent 67 // Delete (backspace)
adb shell input keyevent 207 // Contacts
adb shell input keyevent 220 / 221 // Brightness down/up
adb shell input keyevent 277 / 278 /279 // Cut/Copy/Pasteبرایه دیدن لیست کاملشون میتونید اینجا کلیک کنید و لیست کاملی که تهیه کردم ببینیداگه خوشتون امد لایک و کامنت شما به من انگیزه میده امیدوارم به کارتون امده باشهکانال تلگرامی خودمم میزارم اگه خوشتون امد عضو بشیدt.me/alirezabashi_98instagram.com/alirezabashi98github.com/alirezabashi98</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Wed, 01 Jun 2022 12:57:04 +0430</pubDate>
            </item>
                    <item>
                <title>ضبط صفحه در لینوکس</title>
                <link>https://virgool.io/@alirezabashi98/%D8%B6%D8%A8%D8%B7-%D8%B5%D9%81%D8%AD%D9%87-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-dqexp3uisaux</link>
                <description>EasyScreenCastسلام من خودم از obs استفاده کردم مشکلی با Wayland نداره ولی بنظرم کیفیت فیلم برداریش خوب نیست یطوریه اگه تنظیماتی داره که انجام بدی خوب بشه نمیدونم من دستکاری کردم چیزی حل نشد حالا بریم سراغ راه حلی که پیدا کردم هم کیفیت هم صدا خوب بگیره یه پلاگین ضبط صفحس به اسم EasyScreenCast که خیلی راحت اول پلاگین زیر نصب کنید برایه کروم بعد پلاگین قبلی که گفم نصب کنید به همین راحتی موفق باشیداول اینجا کلیک کنید و پلاگین کروم نصب کنیدحالا اینجا کلیک و پلاگین لینوکس نصب کنیدنکته با این روش فیلم برداری کنید بزارید یوتیوب مشکلی نیست ولی بفرستید برایه بقیه رویه سیستم عامل های دیگه صفحه سیاه هست و هیچی نمیتونن ببین اگه بخوان فیلمای ضبط شده ببین باید برنامه vlc نصب کنن یا بجای این شما obs نصب کنید با اون فیلم برداری کنیدEasyScreenCastاگه خوشتون امد لایک و کامنت شما به من انگیزه میده امیدوارم به کارتون امده باشهکانال تلگرامی خودمم میزارم اگه خوشتون امد عضو بشیدt.me/alirezabashi_98instagram.com/alirezabashi98github.com/alirezabashi98</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Sun, 20 Mar 2022 14:08:52 +0330</pubDate>
            </item>
                    <item>
                <title>نصب و حل مشکل زمپ در ارچ</title>
                <link>https://virgool.io/@alirezabashi98/%D8%AD%D9%84-%D9%85%D8%B4%DA%A9%D9%84-%D8%B2%D9%85%D9%BE-%D8%AF%D8%B1-%D8%A7%D8%B1%DA%86-nlo2x85vhkbx</link>
                <description>xamppنصب xampp در مانجارو1- از اینجا xampp برایه لینوکس دانلود کنید2- به مسیری که فایل دانلود شده بروید و دسترسی های اجرا طبق دستور زیر بزنید و بعد دستور دوم برایه نصب xampp بزنیدchmod 755 xampp-linux-*-installer.run
sudo ./xampp-linux-*-installer.runبجایه * نسخه ای که دانلود کردید بزارید3-محیط گرافیکی بالا میاد نکست بزنید و xampp نصب کنید بعد نصب در مسیر /opt/lampp نصب شده4- برنامه بستید بعدا خواستید باز کنید دستور زیر بزنیدsudo /opt/lampp/manager-linux-x64.run مشکل مجوزبه مسیر /opt/lampp برید و به بجایه alireza بیاید و یوزور سیستم خودتون بزاریدsudo chown -R alireza:alireza htdocsنحوه حل خطای phpMyAdmin ($cfg[&#x27;TempDir&#x27;] (./tmp/) قابل دسترسی نیست.)1-یک پوشه tmp در پوشه /opt/lampp/phpmyadmin ایجاد کنید. مسیر باید &quot;/opt/lampp/phpmyadmin/tmp&quot; باشد.2-فایل &quot;config.inc.php&quot; را که در پوشه /opt/lampp/phpmyadmin یافت می شود باز کنید و خط زیر را اضافه کنید:sudo gedit config.inc.php$cfg[&#039;TempDir&#039;] = &amp;quot/opt/lampp/phpmyadmin/tmp&amp;quotفایل را ذخیره کنید.3- مجوز های زیر بدهیدsudo chmod a+w tmpاجرای فرآیند apache (httpd) تحت حساب کاربری1- باید فایل /opt/lampp/etc/httpd.conf را اصلاح کنیم. قبل از اینکه این فایل را اصلاح کنیم، اجازه دهید از فایل فعلی نسخه پشتیبان تهیه کنیم.sudo cp /opt/lampp/etc/httpd.conf /opt/lampp/etc/httpd.conf.bak
ls /opt/lampp/etc/httpd*2-اکنون فایل httpd.conf را برای ویرایش باز کنید:sudo gedit /opt/lampp/etc/httpd.conf3- دستورات زیر را جستجو کنید:User daemon
Group daemon4- نام کاربری و نام گروه خود را جایگزین مقدار daemon کنید و فایل را ذخیره کنید:User alireza
Group alirezaپس از ذخیره فایل، XAMPP را مجددا راه اندازی کنید و بررسی کنید که همه سرویس ها به درستی راه اندازی شده اندخطایه نبود کتابخانه ۳۲ بیتیاگر خطای نصب نبودن کتابخونه ۳۲ بیتی براتون میاره مثل زیر بخاطر اینکه فعلا ۶۴ بیتی پشتیبانی نمیکنه باید کتابخونه لازم نصب کنیمXAMPP is currently only availably as 32 bit application. Please use a 32 bit compatibility library for your system.با نصب کردن پکیج زیر در ارچ بیس ها و ریستارت کردن سیستم میتونید مشکل حل کنید sudo pacman -S libxcrypt-compatاگه خوشتون امد لایک و کامنت شما به من انگیزه میده امیدوارم به کارتون امده باشهکانال تلگرامی خودمم میزارم اگه خوشتون امد عضو بشیدt.me/alirezabashi_98instagram.com/alirezabashi98github.com/alirezabashi98</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Thu, 17 Mar 2022 08:31:15 +0330</pubDate>
            </item>
                    <item>
                <title>نصب فلاتر در مانجارو</title>
                <link>https://virgool.io/@alirezabashi98/%D9%86%D8%B5%D8%A8-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-%D8%AF%D8%B1-%D9%85%D8%A7%D9%86%D8%AC%D8%A7%D8%B1%D9%88-jecv1wtxdb8k</link>
                <description>flutterنکته : در ارچ و هر ارچ بیس دیگه میتونید از این مقاله برای نصب فلاتر استفاده کنیدنکته : باید از قبل git و base-devel رویه سیستمتون نصب باشه پس اگه نیس دستور زیر بزنید و نصب کنیدsudo pacman -S base-devel git حالا وارد پوشه دلخواه خودتون بشید و دستور زیر بزنید که فلاتر کلون بشهgit clone https://aur.archlinux.org/flutter.gitبعد با cd وارد اون پوشه بشید و دستور زیر بزنیدmakepkg -si   حالا صبر میکنیم تا کارش تموم بشه بعد تموم شدن این مرحله باید دستور زیر بزنید فقط یادتون باشه جایه USER که تویه کد پایین هست اسم یوزر خودتون بزاریدsudo chown USER:flutterusers -R /opt/flutterبعد از اون دستور زیر بزنیدflutter doctorحالا احتمالا بار اول باز باید صبر کنید ولی بعدش اگه چیزی شناسای نکنه بهتون میگه اخر مقاله راه حل بعضی از اونای که شاید شناسای نکنه بهتون میگم اگه مشکلی دارید برید اخر مقاله حل کنید برگردید از اینجا به بعد ادامه بدید حالا دستور زیرflutter precacheبعدش دستور زیرflutter doctor --android-licensesخطا های احتمالیشناسای نکردن اندروید استودیواگه اندروید استودیو نصب هست و برای اندروید استودیو اررور میزنه که شناسای نشدهAndroid toolchain - develop for Android devices کنار متن بالا تیک نزاشته برید داخل اندروید استودیو بخش SDK و Android SDK Command-line Toolsنصب کنید تویه عکس زیر میتونید ببینیدAndroid SDK Command-line Tools شناسای نکردن مرورگر کروماول دستور زیر در صورتی که از zsh استفاده میکنید sudo gedit ~/.zshrcو به انتهای اون دستور زیر اضافه کنید# Chrome PATH
export PATH=$PATH:/opt/google/chrome
# Flutter PATH
export PATH=&amp;quot$PATH:/opt/flutter/bin&amp;quotبعد از سیو کردن خارج بشید و دستور زیر بزنیدsource ~/.zshrc   اگه خوشتون امد لایک و کامنت شما به من انگیزه میده امیدوارم به کارتون امده باشهکانال تلگرامی خودمم میزارم اگه خوشتون امد عضو بشیدt.me/alirezabashi_98instagram.com/alirezabashi98</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Sun, 13 Feb 2022 18:33:10 +0330</pubDate>
            </item>
                    <item>
                <title>استفاده از MediaPipe در اندروید</title>
                <link>https://virgool.io/@alirezabashi98/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-mediapipe-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-ezu3zjzcjiiv</link>
                <description>MediaPipeاگه میخواید بدونید mediapipe چیه و کاربردش چیه برید به لینک زیرhttps://google.github.io/mediapipe/اول از هرچیزی باید رویه سیستم عامل خودمون نصبش کنیم که من سیستم عاملم لینوکس توزیع مانجارو هست پس در ادامه اموزش نصب در مانجارو میگمنصب MediaPipe در مانجارونکته اگر توزیع ارچ یا هر ارچ بیس دیگه دارید همینطور هستاول هر چیزی باید git و base-devel رو رویه سیستمتون نصب داشته باشید اگر ندارید دستور زیر بزنیدsudo pacman -S git base-devel حالا خود mediaPipe باید نصب کنیم دستورات زیر وارد کنیدsudo pacman -S mesa opencv bazel ffmpegوارد یه مسیر دلخواهی بشید و دستور زیر بزنید من در home یه پوشه AUR  دارم اونجا کلون میکنمgit clone https://aur.archlinux.org/python-mediapipe.gitبعد کلون وارد پوشش بشید cd python-mediapipe-git حالا برای ساخت برنامه و نصبش دستورات زیر بزنیدmakepkg -siنکته رمز ادمین میخواد و چندتا سوال میکنه y بزنید :/استفاده از mediaPipe در اندروید استودیوMy AIاول از هرچیزی باید NDK نسخه ۲۱ نصب کنیم که همون c++ هست مراحل زیر دنبال کنیدSetting &gt; Appearance &amp; Behavior &gt; Android SDK &gt; SDK Toolsمیتونید اینجا کلیک کنید و ویدیو مسیری که باید برای نصب ndk برید دانلود کنیدخب دیگه تمومه میتونید کتابخانه هارو ایمپورت کنید و برنامه خودتون بنویسید یا اینجا کلیک کنید وارد گیت هاب پروژه MediaPipe بشید که هاوی راه حل و دایومنت هم هستاگه خوشتون امد لایک و کامنت شما به من انگیزه میده امیدوارم به کارتون امده باشهکانال تلگرامی خودمم میزارم اگه خوشتون امد عضو بشیدt.me/alirezabashi_98instagram.com/alirezabashi98</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Sat, 05 Feb 2022 10:58:39 +0330</pubDate>
            </item>
                    <item>
                <title>نصب anydesk و حل مشکل وصل نشد بقیه به ما در لینوکس</title>
                <link>https://virgool.io/@alirezabashi98/%D9%86%D8%B5%D8%A8-%D9%88-%D8%AD%D9%84-%D9%85%D8%B4%DA%A9%D9%84-%D9%88%D8%B5%D9%84-%D9%86%D8%B4%D8%AF-%D8%A8%D9%82%DB%8C%D9%87-%D8%A8%D9%87-anydesk-%D9%85%D8%A7-omtyfbnh3wxy</link>
                <description>anydeskاول بریم سراغ نصب انی دیسک در ارچ و ارچ بیس ها من در مانجارو نصب میکنم ولی هر ارچ بیست یا توزیع ارچ میتونید به همین شکل نصب کنیدنصب anydeskباید git و  base-devel از قبل نصب کرده باشید ولی اگه نکردید دستورات زیر بزنیدsudo pacman -S git base-develحالا بعد باید anydesk دریافت کنیم داخل مسیری که دوست دارید برید و دستور زیر بزنید من خودم داخل home یه پوشه به اسم AUR میسازم و اونجا بقیه کارا میکنمgit clone https://aur.archlinux.org/anydesk-bin.gitحالا بعد دریافت وارد پوشش میشیم دستور زیر بزنیدcd anydesk-bin و بعد هم دستور زیر توجه کنید که نتتون روشن باشهmakepkg -siحالا نت که وصل هستید صبر میکنید تا کارش تموم بشه بعد اگه سوالی کرد y وارد کنید و اگر رمز خواست بهش بدید و تمام برنامه نصب شدهحل مشکل anydesk در مانجاروanydesk errorاگر در انی دیسک تونستید به بقیه وصل بشید ولی بقیه نتونستن به شما وصل بشن احتمالا این روش مشکل شمارو حل کنه اول دستور زیر بزنیدsudo gedit /etc/gdm/custom.confنکته بجای gedit میتونید nano یا .. استفاده کنیدحالا وارد صفحه ای به شکل زیر میشوید geditباید # پشت دستور WaylandEnable=false وردارید #WaylandEnable=falseدستور بالا به دستور پایین تغییر بدید و سیو کنیدWaylandEnable=falseبه بقیه دستورات کاری نداشته باشید بعد سیو کردن سیستم ریستارت کنید و بعد روشن شدن مشکل احتمالا حل شده باشه اگه خوشتون امد لایک و کامنت شما به من انگیزه میده امید وارم به کارتون امده باشهکانال تلگرامی خودمم میزارم اگه خوشتون امد عضو بشیدt.me/alirezabashi_98</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Fri, 04 Feb 2022 14:29:16 +0330</pubDate>
            </item>
                    <item>
                <title>نصب ProtonVPN در ارچ و مانجارو</title>
                <link>https://virgool.io/@alirezabashi98/%D9%86%D8%B5%D8%A8-protonvpn-%D8%AF%D8%B1-%D8%A7%D8%B1%DA%86-%D9%88-%D9%85%D8%A7%D9%86%D8%AC%D8%A7%D8%B1%D9%88-yeapqdc1iiho</link>
                <description>برای نصب به ترتیب دستورات زیر وارد کنیدProtonVPN۱- مخزن محلی خود را اپدیت کنیدpamac update --force-refresh۲- بررسی وجود پروتون در ریپازیتوریpamac search --aur protonvpn۳- نصب پروتون pamac build protonvpn4- دانلود کلید عمومیClick the link https://repo.protonvpn.com/debian/public_key.asc to download.5-اضافه کردن کلیدsudo pacman-key --add /path/to/downloaded/public_key.ascبجای /path/to/downloaded/public_key.asc مسیر کلید بزارید6-  اطمینان از وارد شدن کلیدsudo pacman-key --finger A88441BD4864F95BEE08E63A71EB474019940E117 - امضای کلیدsudo pacman-key --lsign-key A88441BD4864F95BEE08E63A71EB474019940E11بعد از نصب باید ورود کنید به اکانت خود اگر قبلا حساب ایجاد کردید از اون استفاده کنید در غیر این صورت یه حساب ایجاد کنید</description>
                <category>علیرضا باشی</category>
                <author>علیرضا باشی</author>
                <pubDate>Fri, 10 Dec 2021 14:41:02 +0330</pubDate>
            </item>
            </channel>
</rss>