رفرفة. كيفية ترقية BLoC

هناك العديد من المكتبات التي تطبق نمط BLoC. لكن الشيء الذي سأتحدث عنه غير معتاد ويسمى كتلة العزلة.



كما يوحي الاسم ، يعد هذا نوعًا من الكتلة غير العادية ، وتكمن خصوصيته في أنه يعمل في عزل منفصل (يُشار إليه فيما يلي بعزل) ولا يبطئ واجهة المستخدم الخاصة بك.



ما هي مشكلة الكتلة العادية؟



بالإضافة إلى النموذج المعياري ، هناك مشكلة أخرى - إنها تعمل في الخيط الرئيسي ، لذا فإن المهام الثقيلة مثل تحليل 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 . يتم وصف جميع الوظائف هناك وهناك أمثلة أكثر تعقيدًا.



All Articles