<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمدامین طالبی</title>
        <link>https://virgool.io/feed/@m_21674542</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-17 04:50:29</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/3680187/avatar/VMBIt1.jpg?height=120&amp;width=120</url>
            <title>محمدامین طالبی</title>
            <link>https://virgool.io/@m_21674542</link>
        </image>

                    <item>
                <title>توضیح کوتاه روش پیاده سازی BLoC</title>
                <link>https://virgool.io/@m_21674542/%D8%AA%D9%88%D8%B6%DB%8C%D8%AD-bloc-lexypdwzwz1q</link>
                <description>استفاده از BLoC با Http:1. ساخت بلاک استیت: تعریف وضعیت‌های مختلف مانند Loading, Loaded, Error2. ساخت بلاک ایونت: تعریف رویدادها مانند FetchUserEvent.3. پیاده‌سازی بلاک: اتصال Event و State با استفاده از پکیج BLoC.جزئیات Event:- هر Event می‌تواند وضعیت (State) را تغییر دهد.- در Event می‌توان به ریپازیتوری و ورودی‌های فانکشن (event) دسترسی داشت.- Event دو متغیر دارد:   - emit: مقداردهی به وضعیت جدید.  - event: ورودی داده‌ای مربوط به رویداد.عملکرد emit:- هر وضعیت جدید با استفاده از emit به UI ارسال می‌شود.سازوکار BLoC:- Event ورودی رویدادها را مدیریت می‌کند.- State وضعیت‌های جاری برنامه را نمایش می‌دهد.- BLoC مسئول اتصال Event و State است و وضعیت جدید را با emit ارسال می‌کند.نمونه پیاده‌سازی:&#x60;&#x60;&#x60;dartclass UserBloc extends Bloc&lt;UserEvent, UserState&gt; {   final UserRepository userRepository;  UserBloc(this.userRepository) : super(UserInitial()) {  //  به کلاس state دادن ورودی به کلاس و دادن اولین   حالا میتونیم ایونت هارو صدا بزنیم داخل این اسکوپ                          //برای مثال :                                                                                        //    on&lt;FetchUserEvent&gt;((event, emit) async {      emit(UserLoading());                                                    //  (تغییر وضعیت (وضعیت قبلی پاک و وضعیت جدید جایگزین میشه      try {        final user = await userRepository.fetchUser(event.userId);        emit(UserLoaded(user));                                            //  تغییر وضعیت       } catch (e) {        emit(UserError(e.toString()));                                      //  تغییر وضعیت       }    });  }}</description>
                <category>محمدامین طالبی</category>
                <author>محمدامین طالبی</author>
                <pubDate>Tue, 10 Dec 2024 12:05:30 +0330</pubDate>
            </item>
                    <item>
                <title>مفهوم تزریق وابستگی ساده و کوتاه</title>
                <link>https://virgool.io/@m_21674542/%D9%85%D9%81%D9%87%D9%88%D9%85-%D8%AA%D8%B2%D8%B1%DB%8C%D9%82-%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C-%D8%B3%D8%A7%D8%AF%D9%87-%D9%88-%DA%A9%D9%88%D8%AA%D8%A7%D9%87-r3n0qxryteqj</link>
                <description>سلام می‌خوام بهتون مفهوم تزریق وابستگی رو با یه مثال کوتاه توضیح بدم بریم شروع کنیمبرای مثال درست کردن قهوه در خانهبدون تزریق وابستگی (کلاس خودش وابستگی را ایجاد می‌کند)تصور کنید شما یک دستگاه قهوه‌ساز دارید، و این دستگاه خودش همه چیز را مدیریت می‌کند:خودش دانه‌های قهوه را خریداری می‌کند.خودش آب را از منبع می‌گیرد.خودش آسیاب قهوه را تنظیم می‌کند.در این حالت، دستگاه قهوه‌ساز به شدت به نحوه تامین دانه قهوه، آب، و تنظیمات آسیاب وابسته است. اگر روزی بخواهید نوع دیگری از دانه قهوه یا منبع آب استفاده کنید، باید خود دستگاه را تغییر دهید. این یعنی وابستگی سخت‌گیرانه.با تزریق وابستگی (وابستگی‌ها از بیرون تامین می‌شوند)در این روش، شما دستگاه قهوه‌ساز را می‌گیرید و مواد اولیه (آب، دانه‌های قهوه و تنظیمات آسیاب) را به آن می‌دهید:دانه قهوه از یک فروشگاه خاص تامین می‌شود.آب از یک منبع مشخص داده می‌شود.تنظیمات آسیاب از بیرون مشخص می‌شود.حالا اگر بخواهید دانه قهوه را تغییر دهید، فقط فروشگاه را عوض می‌کنید. اگر بخواهید نوع آب را عوض کنید، منبع آب را تغییر می‌دهید. دستگاه قهوه‌ساز نیازی ندارد خودش بداند این منابع از کجا آمده‌اند؛ فقط با آن‌ها کار می‌کند.تحلیل:در حالت اول، دستگاه قهوه‌ساز خودش تمام وابستگی‌ها (دانه قهوه، آب و آسیاب) را ایجاد می‌کند. اگر چیزی تغییر کند، خود دستگاه نیاز به تغییر دارد.در حالت دوم، دستگاه قهوه‌ساز وابستگی‌ها را از بیرون می‌گیرد. این یعنی دستگاه نیازی ندارد بداند منابع از کجا آمده‌اند؛ فقط از آن‌ها استفاده می‌کند.معادل در برنامه‌نویسی:بدون تزریق وابستگی: کلاس خودش وابستگی‌ها را می‌سازد.
class CoffeeMaker {
final CoffeeBean bean;
final Water water;
 CoffeeMaker() { 
bean = CoffeeBean(&amp;quotArabica&amp;quot);
water = Water(&amp;quotMineral&amp;quot);
}
}//با تزریق وابستگی: وابستگی‌ها از بیرون به کلاس داده می‌شوند.//

class CoffeeMaker {
    final CoffeeBean bean;
    final Water water;

    CoffeeMaker(this.bean, this.water);
} 

//و هنگام استفاده://
void main() {
    var bean = CoffeeBean(&amp;quotArabica&amp;quot);
    var water = Water(&amp;quotMineral&amp;quot);
    var coffeeMaker = CoffeeMaker(bean, water);
}

//تزریق وابستگی انعطاف بیشتری ایجاد می‌کند، زیرا تغییرات در منابع خارجی نیازی به تغییر در کلاس اصلی ندارد.//</description>
                <category>محمدامین طالبی</category>
                <author>محمدامین طالبی</author>
                <pubDate>Fri, 06 Dec 2024 13:09:13 +0330</pubDate>
            </item>
            </channel>
</rss>