Mohammed Hhhh نشر 23 مايو 2023 أرسل تقرير نشر 23 مايو 2023 (معدل) و انا اتابع دوره لاحظت ان الي بيشرح خلى اول class من ال. states abstarct class ايش السبب تم التعديل في 23 مايو 2023 بواسطة Mustafa Suleiman تعديل عنوان السؤال 1 اقتباس
0 Mustafa Suleiman نشر 23 مايو 2023 أرسل تقرير نشر 23 مايو 2023 السبب وراء وضع الـ abstract class في بداية قائمة الـ states في فلاتر BLOC هو لتوفير واجهة مشتركة لجميع حالات الحالة (states) المحتملة التي يمكن أن يتبعها Cubit أو Bloc. وباستخدام الـ abstract class ، تستطيع تعريف مجموعة محددة من الحالات الأساسية التي قد يعتمدها Cubit أو Bloc دون الحاجة إلى إعادة تعريف الأساليب الأساسية في كل مرة. والكود في الصورة، تم به تعريف NewestBooksState كـ abstract class وتنفيذها من قبل عدة حالات محددة، مثل NewestBooksInitial و NewestBooksLoading و NewestBooksFailure و NewestBooksSuccess. ومن خلال استخدام abstract class، تستطيع توحيد النهج وتطبيق المنطق المشترك بين حالات الحالة المختلفة، مثل توفير قائمة الممتلكات (props) المشتركة وأي أساليب أخرى ترغب في تعريفها لجميع حالات الحالة. أيضًا بوجود abstract class، بإمكانك استخدام المتغيرات من نوع NewestBooksState للإشارة إلى أي حالة من حالات الحالة، مما يسهل تحديد الحالة الحالية واتخاذ الإجراءات المناسبة في الـ Cubit أو Bloc الخاص بك. وسأقدم لك مثالًا يوضح كيفية استخدام الفئة المجردة (abstract class) في فلاتر BLOC، ولنفترض أن لدينا Cubit لإدارة حالة قائمة أحدث الكتب في تطبيق مكتبة. فتستطيع كتابة الفئات المختلفة على النحو التالي: import 'package:equatable/equatable.dart'; abstract class NewestBooksState extends Equatable { const NewestBooksState(); @override List<Object> get props => []; } class NewestBooksInitial extends NewestBooksState {} class NewestBooksLoading extends NewestBooksState {} class NewestBooksFailure extends NewestBooksState { final String error; const NewestBooksFailure(this.error); @override List<Object> get props => [error]; } class NewestBooksSuccess extends NewestBooksState { final List<Book> books; const NewestBooksSuccess(this.books); @override List<Object> get props => [books]; } هنا لدينا الفئة المجردة NewestBooksState التي تم تنفيذها من قبل عدة حالات محددة. وNewestBooksState يحتوي على المنطق المشترك لجميع حالات الحالة، والذي يشمل تنفيذ props لإعطاء معرف فريد لكل حالة، وذلك لتمكين المقارنة والتعامل مع التغييرات في الحالة بشكل فعال. NewestBooksInitial: حالة البداية، ويمثل الحالة الأولية للقائمة. NewestBooksLoading: حالة التحميل، ويشير إلى أن القائمة تحمل البيانات حاليًا. NewestBooksFailure: حالة الفشل، ويشير إلى حدوث خطأ أثناء جلب البيانات، ويحتوي على رسالة الخطأ المحددة. NewestBooksSuccess: حالة النجاح، ويشير إلى أن البيانات تم جلبها بنجاح، ويحتوي على قائمة الكتب الأحدث. وباستخدام الفئة المجردة NewestBooksState وحالاتها المحددة، يمكنك توحيد المنطق وإدارة حالة قائمة الكتب في Cubit الخاص بك، وإصدار حالة معينة باستخدام emit داخل Cubit بناءً على المنطق والأحداث التي تحدث في التطبيق. اقتباس
0 عبدالباسط ابراهيم نشر 25 مايو 2023 أرسل تقرير نشر 25 مايو 2023 السبب في جعل الصنف الأول "abstract" هو أنه يعمل كصنف أساسي أو واجهة للصنف الآخر الذي يمتد منه. في هذه الحالة، يهدف "NewestBooksState" إلى كونها واجهة مشتركة لجميع الحالات الممكنة التي يمكن أن يكون عليها "NewestBooksCubit". بجعل "NewestBooksState" مجرد صنف أساسي، فلا يمكن إنشاؤه مباشرة، ولكن يمكن تمديده من خلال صنف آخر لتعريف حالات أكثر تحديداً. هذا هو نمط شائع في إدارة الحالة بنمط Cubit أو BLoC، حيث يكون الحالة الأساسية مجردة، وتمتد الحالات الفعلية منها لتمثيل حالحالات المختلفة للتطبيق. بالإضافة إلى ذلك، بتنفيذ صنف "Equatable" والتعديل على الطريقة "props"، يمكّن ذلك من مقارنة الحالات المختلفة بسهولة عن طريق مقارنة خصائصها. وهذا مهم عندما يصدر Cubit حالة جديدة ونريد التحقق من ما إذا كانت مختلفة عن الحالة السابقة وتحريك التحديثات وفقًا لذلك. كما أن استخدام الفئة المجردة abstract class في بلوك (BLoC) له عدة فوائد: تنظم الحالات (states) في هيكل تراثي. يمكن للفئة المجردة ان تكون اب لجميع الحالات، وبالتالي تربط بينها. تجبر على تطبيق الوظائف التي يحتويها الفئة الأب abstract class في الفئات المشتقة منها. مثلا يمكن تعريف وظيفة abstract في الفئة الأب، ثم تطبيقها في الفئات البنات. تسهل اضافة فئات جديدة مشتقة لأن التركيبة والقواعد الأساسية يتم وضعها في الفئة الأب. تساعد في اعادة الإستخدام لأن الفئة الأب تحتوي على المنطق المشترك بين الحالات، ويمكن استخدام نفس المنطق في سياقات مختلفة. في المثال الذي أعطيته، تم استخدام abstract class لتنظيم حالات الكيوبت (cubit) في هيكل تراثي. وهذا يسهل الحفاظ على الكود وتطويره فيما بعد. اقتباس
السؤال
Mohammed Hhhh
و انا اتابع دوره لاحظت ان الي بيشرح خلى اول class من ال. states
abstarct class ايش السبب
تعديل عنوان السؤال
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.