كما يوحي الاسم ، يعد هذا نوعًا من الكتلة غير العادية ، وتكمن خصوصيته في أنه يعمل في عزل منفصل (يُشار إليه فيما يلي بعزل) ولا يبطئ واجهة المستخدم الخاصة بك.
ما هي مشكلة الكتلة العادية؟
بالإضافة إلى النموذج المعياري ، هناك مشكلة أخرى - إنها تعمل في الخيط الرئيسي ، لذا فإن المهام الثقيلة مثل تحليل json يمكن أن تؤدي إلى تجميد في واجهة المستخدم.
يمكن أن تساعد مكتبات مثل simple_bloc أو cubit في حل المشكلة الأولى. من الثانية - عزل ، أو غلاف فوقها - حساب. من حيث المبدأ ، يعد هذا المزيج جيدًا حقًا يستخدمه العديد من الأشخاص ، ولكنه حتى لا يحل جميع المشكلات. على سبيل المثال ، لا يمكنك العمل مع MethodChannel بشكل منفصل ، ومن حيث المبدأ ، يرتبط استخدامه بمضايقات ولوحة مرجل.
عزل الكتلة
تساعد هذه المكتبة في استخدام نمط BLoC وتحل عددًا من المهام ، مثل العمل مع العزلات وقنوات الرسائل. بالإضافة إلى ذلك ، يسمح لك بتقليل مقدار التعليمات البرمجية عند كتابة الكتلة نفسها.
كيفية استخدامها؟
لفهم كيفية العمل مع هذه المكتبة ، دعنا نلقي نظرة على مثال بسيط.
على الرغم من حقيقة أنني حاولت أن أشرح كل شيء بالتفصيل ، إلا أن شيئًا ما قد يظل غير مفهوم ، لذلك من المفترض أنك على دراية بنمط BLoC بالفعل.
يبدأ أي مشروع رفرفة بعداد ، لذلك سنبدأ بذلك أيضًا. الخطوة الأولى هي كتابة الكتلة نفسها.
في السطر 3 ، نقوم بإنشاء فئة CounterBloc التي ترث من فئة IsolateBloc. نشير هنا إلى نوع الأحداث وحالات الكتلة الخاصة بنا.
في السطر 4 ، نمرر الحالة الأولية للعداد - 0.
من السطور 6 إلى 9 ، نتجاوز طريقة onEventReceived ، والتي تسمى عند تلقي حدث جديد. الحالة عبارة عن أداة تجميع تُرجع الحالة الأخيرة التي أرسلها الحظر إلى واجهة المستخدم.
في السطر 8 ، نستخدم الدالة emit ، والتي تأخذ الحالة وترسلها إلى واجهة المستخدم.
الآن أنت بحاجة إلى تسجيل الكتلة.
نظرًا لأنه يعمل في عزلة منفصلة ، فلا يمكننا إنشاؤها مباشرة. لذلك ، تحتاج إلى إعلام المكتبة بوجودها باستخدام وظيفة التسجيل.
في السطر 5 ، نقوم بتهيئة المكتبة وتمرير وظيفة تعمل في عزل وتسجيل الكتل.
في السطر 10 ، نسجل CounterBloc - الآن ستتمكن المكتبة من إنشائها بناءً على طلبنا.
يبقى فقط لوصف واجهة المستخدم!
في السطر 8 ، نقوم بإنشاء كتلة وإضافتها إلى شجرة عناصر واجهة المستخدم.
في السطر 23 ، نستمع إلى حالة الكتلة. يعمل IsolateBlocBuilder مثل StreamBuilder ، ولكنه قادر على العثور على الكتلة في شجرة عناصر واجهة المستخدم نفسها.
من السطور 31 إلى 33 ، نستخدم طريقة الامتداد عزل Block <Bloc، State> () للحصول على الكتلة من السياق واستخدام الوظيفة add () لإضافة حدث جديد إليها.
هذا كل شيء ، الآن يمكنك البدء!
الاخير
باستخدام مثال أساسي ، أوضحت كيفية العمل مع هذه المكتبة ، ولمزيد من الدراسة أنصحك بالاطلاع على صفحتها على github . يتم وصف جميع الوظائف هناك وهناك أمثلة أكثر تعقيدًا.