آشنایی به معماری BLOC در فلاتر-ترجمه ی داکیومنت

سلام به شما امیدوارم حالتون خوب باشه. امروز تصمیم گرفتم داکیومنت آشنایی پکیج bloc رو ترجمه کنم و بذارم خدمت شما. امیدوارم به دردتون بخوره

فعلا از قسمت Cubit رد میشم.

بلاک:

Bloc کلاس پیشرفته تری است که به جای توابع(function)، به رویدادها(event) برای ایجاد تغییرات حالت(state) متکی است. Bloc همچنین BlocBase را گسترش می دهد که به این معنی است که API عمومی مشابه Cubit دارد. با این حال، به جای فراخوانی یک تابع در یک بلوک و انتشار مستقیم یک وضعیت جدید، blocها رویدادها (event)را دریافت می کنند و رویدادهای ورودی را به حالت(state) های خروجی تبدیل می کنند.

تغییرات state در bloc زمانی شروع می‌شود که رویدادهایی اضافه می‌شوند که باعث تحریک oneEvent می‌شوند. سپس رویدادها از طریق EventTransformer منتقل می شوند. به طور پیش فرض، هر رویداد به طور همزمان پردازش می شود، اما یک EventTransformer سفارشی می تواند برای دستکاری جریان رویداد ورودی ارائه شود. سپس همه EventHandlerهای ثبت شده برای آن نوع رویداد با رویداد ورودی فراخوانی می شوند. هر EventHandler مسئول انتشار صفر یا چند حالت در پاسخ به رویداد است. در نهایت، onTransition درست قبل از به‌روزرسانی وضعیت فراخوانی می‌شود و شامل وضعیت فعلی، رویداد و وضعیت بعدی است.

ساخت یک Bloc:

استفاده از bloc

مشاهده یک bloc


از آنجایی که همه بلوک‌ها BlocBase را درست مانند Cubit گسترش می‌دهند(extend)، onChange و onError را می‌توان در یک بلوک نیز لغو کرد.

علاوه بر این، بلوک ها همچنین می توانند oneEvent و onTransition را لغو کنند.

هر زمانی که رویداد جدیدی به بلوک اضافه شود، oneEvent نامیده می شود.

onTransition مشابه onChange است، با این حال، حاوی رویدادی است که علاوه بر state فعلی، باعث تغییر حالت بعدی می شود.

BlocObserver میتواند برای مشاهده ی همه ی observe ها بخوبی استفاده شود.

سیدعباس حسینی

نویسنده: AbbasHoseini

به دنبال خلق رویام تو دنیای برنامه نویسی پیرو دنیای آزاد

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.