كيفية عمل filter للعناصر اثناء عرضها من الfirebase اكثر من مره
في طبيعة الحال اذا كنت تريد عرض بيانات مخصصه من firebase بنستخدم where (اذا لم تكن تعرف بها من قبل فيمكنك رجوع الى المقالات السابقه في موقعنا والتعرف عليها) , بتكتب اسم الfield وتكتب isEqualTo وتقارن اذا كانت البيانات تحتوي على البيانات التي تبحث عنها فيقوم بعرضها , مثال بسيط على ذلك isEqualTo furniture وايضا تريد تخصيص نوع المنتجات لذلك سوف تكتب ايضا اللون المخصص isEqualTo red وبهكذا اخبرته ان يقوم بعرض المنتجات الخاصه بالاثاث وليس هذا فقط بعد ان تنتهي احضر لنا المنتجات ذات اللون الاحمر , ولهذا بنستخدم where مرتين زيكما هو واضح (في المره التانيه كنت ابحث بداخل list ) ,ولكن سوف تواجهك مشكلة بسيطة وهيا الfirebase هيحدث معك مشكلة ويفشل في عملية البحث والسبب انك تبحث مرتين ؟
ولحل هذه المشكلة نسخدم خاصية باسم Indexes وهيا اننا نخبره باننا سوف نقوم بعمل mix ما بين ال2 field اللي عندنا وتديله اسمائهم وهو هيعمل Indexes بينهم وبهكذا يمكنك استخدام الwhere في نفس الكود .
بالنسبة لل Indexes هتدخل على Cloud Firestore وتروح لخانة Indexes واعمل بقا Index ما بينهم كما هو واضح وما سوف يتم شرحه .
سواء كنت تستهدف iOS أو Android ، أو الويب ، أو Windows ، أو macOS ، أو Linux ، أو تدمجها كمجموعة أدوات واجهة المستخدم لمنصة من اختيارك ، نعتقد أن Flutter سيساعدك على إنشاء تطبيقات جميلة وسريعة مع تطوير منتج وقابل للتوسيع ومفتوح نموذج.
نود أن نوفر للمصممين حرية التعبير عن رؤيتهم الإبداعية بالكامل ، غير المقيدة بقيود الإطار الأساسي. نظرًا لإمكانيات التركيب المعقدة والتصميم متعدد الطبقات لـ Flutter ، يمكنك التحكم الكامل في كل بكسل على الشاشة. يمكنك تراكب وتحريك الرسومات والفيديو والنص وعناصر التحكم دون قيود. سواء كنت تقوم بالتطوير لنظام iOS (Cupertino) أو Android (Material) ، فإن Flutter يتميز بمجموعة كاملة من الأدوات المصغّرة التي توفر تجارب مثالية للبكسل إلى جانب إمكانيات التغيير والتبديل أو إنشاء أنماط مرئية جديدة تمامًا.
How can you use where property twice in the same code Flutter
بالنسبة للكود فيمكنك من خلال الامر where البحث داخل نوع بيانات معينه في اول مره كنت ابحث بداخل field عادي جدا وكررت نفس العملية في السطر الموالي لها وبعدها كنت ابحث بداخل array كما هو موضح يمكنك البحث بداخل 2 field الامر راجع لك يمكنك ذلك بدون مشاكل ولكن لكي لا يحدث معك مشاكل عليك تفعيل الIndexes من firebase كما هو موضح في الخطوة التاليه .
cubit.dart
void getUserBehavior() async {
await FirebaseFirestore.instance
.collection('products')
// search collection
.where('productCategory',isEqualTo: searchBehavior)
// search array
.where('colors',arrayContains:colorBehavior)
.get()
.then((event) async {
listUserBehavior.clear();
for (var document in event.docs) {
productBehavior = ProductModel.fromMap(document.data());
listUserBehavior.add(productBehavior!);
}
emit(UserBehaviorSuccessState());
});
}
how to Indexes between two field in firebase
في هذه الخطوة نقوم بتنفيذ عملية Indexes وذلك يكون عن طريق اتباع الطريقة الموجوده في الصورة التاليه وبعدها تقوم بتمرير اسم الdoc الذي تريد عمل له Indexes مع اسم ال doc الاخر الذي ترغب بعمل Indexes بينهم كما هو موضح بالصورة وبعدها تنتظر بعض لحظات الى ان تتم العمليه ويظهر لك رسالة بالنجاح كما هو موضح .
android sdk manager تحميل flutter developers applications create app android android studio mac