تفاوت bloc ،provider و getx در فلاتر

اگر داری این مقاله رو می‌خونی یعنی تو هم مثل من خیلی درگیر این بودی که تفاوت این سه‌تا state management یعنی bloc ،provider و getx رو بدونی، اینکه کدوم بهتره و باید از کدوم توی پروژه خودت استفاده کنی.خب بیایم یک نگاه به هر کدوم بندازیم و ببینم چه ویژگی‌ها و نقطه ضعف‌هایی دارن.شماره یک blocاحتمالا bloc بهترین راه‌حل برای state management ها است که از طریق اون می‌تونید الگوهای معماری رو هم یاد بگیرید.مزایا:۱- جدا شدن کامل منطق پروژه۲- نگهداری، تست نویسی و توسعه آسان پروژه۳- تیم حرفه‌ای توسعه دهنده۴- وجود اسپانسر برای این پکیج۵- داکیومنت قوی و وجود کدهای سمپل زیادمعایب:۱- کدنویسی بیشتر نسبت به رقیبان۲- سرعت توسعه پایین‌تر از رقیبان بخاطر دلیل شماره یک۳- یادگیری سخت‌تر بخاطر پیچیده‌تر بودن نسبت به پکیج‌های رقیب (دلیل اصلی که تازه کارهای فلاتر میرن سمت رقیب‌هاش)آمارها:تعداد ۹,۲۰۰ ستاره در githubتعداد ۴,۱۰۰ لایک در pub.devشماره دو getxاحتمالا getx به عنوان دومین راه حل محبوب برای state management ها است که یکی از بحث برانگیزترین و پر حاشیه ترین‌ها در بین پکیج‌های فلاتر است. این پکیج به دلیل مشکلاتی که در تست نویسی و اختلال در الگوهای معماری باعث شده تا گروه زیادی از توسعه دهنده‌های فلاتر از اون متنفر باشن، اما همزمان بخاطر سرعت زیاد و کوتاه بودن کدنویسی بخش زیادی از برنامه نویس‌ها هم به اون علاقه دارن.مزایا:۱- کدنویسی بسیار آسان (دلیل اصلی محبوبیت بین تازه‌کارهای فلاتر)۲- کدنویسی بسیار کوتاه۳- محبوبیت زیادمعایب:۱- در حقیقت این پکیج رو نمیشه یک state management نام گذاری کرد و بیشتر یک میکرو فریمورک است که هر چیزی رو در درون خودش داره، مثل مدیریت روت‌ها تا هر چیز دیگه. و این وابستگی پروژه شما رو به این پکیج بسیار زیاد میکنه.۲- بزرگ بودن بیش اندازه پکیج که باعث شده مشکلات زیادی رو درون خودش داشته باشه.۳- نداشتن اسپانسر که باعث میشه هر لحظه برنامه نویس اون پکیج بیخیال توسعه اون بشه.۴- فعال نبودن توسعه دهنده اون به صورت مستمر.۵-وقتی یک باگ در این پکیج پیدا میشه و به توسعه دهنده گذارش میشه، زمان زیادی طول میکشه تا اون رو برطرف کنه.۶- نداشتن مستندات واقعی و صحیح۷- شهرت بد در جامعه فلاترآمارها:تعداد ۶,۹۰۰ ستاره در githubتعداد ۹,۴۰۰ لایک در pub.devشماره سه providerپکیج provider برای state management از طریق InheritedWidget است که به روشی ساده این کار رو میکنه. باید بدونید در پکیج bloc هم از provider استفاده شده. شما در provider میتونید به راحتی از Triple, ValueNotifier, ChangeNotifier و دیگر آبجکت‌ها استفاده کنید. این پکیج توسط تیم رسمی فلاتر توسعه داده میشه و به عنوان اولین پکیج مدیریت استیت ها از طرف فلاتر توصیه شده. مزایا:۱- کدنویسی سریع۲- کدنویسی آسان۳- محبوبیت زیاد۴- پشتیبانی و توسعه توسط تیم فلاتر. این یعنی تا فلاتر هست، provider هم توسعه پیدا میکنه و هست. پس خیالتون ازش راحت.معایب:والا خیلی گشتم نبود. اگر شما میدونید برام بنویسید.آمارها:تعداد ۴,۳۰۰ ستاره در githubتعداد ۶,۸۰۰ لایک در pub.devنتیجه گیریخب حالا که به نقاط قوت و ضعف هر سه‌تای عزیز دل نگاه کردیم بریم سراغ منبر من. ببینید اینجای کار تصمیم گیرنده خودتونید، باید ببینید میخواید چه پروژه‌ای بزنید. اگر زمان مهمه و پروژه کوچیکه پس سرعت عمل مهمه، اما اگر پروژه بزرگه و قراره توسعه طولانی مدت داشته باشه جواب مشخصه.برای راحت شدن فکر شما هم باید بگم شخصاً بعد این همه بررسی و تجربه کار با این پکیج ها به این نتیجه رسیدم که در پروژه جدید (تقریبا اندازه دیوار) که قراره انجام بدم از provider استفاده کنم. چون باید یک پروژه نسبتاً بزرگ رو توی کمتر از چند ماه تحویل بدم پس سرعت عمل، راحتی و توسعه در آینده برام مهمه و اینها همه در provider وجود داره.باید بدونید در خیلی از بخش های پروژه اصلا نیازی به هیچ کدوم از این پکیج ها نیست و میتونید با StateFulWidget مشکلتون رو حل کنید. در نهایت اینم بگم که هر چی ابزار به وجود میاد فقط و فقط برای اینه که به ما کمک کنن. پس از این ابزارها استفاده کنید و لذت کار با اونها رو ببرید.خوشحال میشم نظرتون رو در مورد این پکیج‌ها و مقاله من بنویسید. راستی اینم بگم این اولین مقاله من در ویرگول بود. امیدوارم که برای شما مفید واقع شده باشه.