التدقيق " validation " وازاي بيتم في فلاتر ! 👑
يعني ايه validation ؟
لو ترجمنا المصطلح الي موجود علي اغلب المواقع هنلاقي انها
عملية تاكد من شكل البينات وليس صحتها
فمثلا لو عملنا فاليديشن للبريد الالكتروني
المفروض يكون مكون من3 اجزاء
الاول username اسم المستخدم
الاول username اسم المستخدم
الثاني رمز ال @
الثالث domain رابط المواقع
وبكدا الفاليديشن للبريد الالكتروني هو مجرد التاكد من توافر ال 3 اجزاء دول في البريد
ahmed@masoud.com بريد الكتروني صحيح
ahmed-masoud.com بريد الكتروني غير صحيح علشان مفيش فيه @
وهكذا مجرد تاكد من شكل وطول ونوع البيانات
لكن هل ahmed@masoud.com بريد الكتروني شغال فعلا وينفع يستلم رسائل ؟ مش مهم ده مش دور عمليه ال validation
ملحوظة :
- مرحله ال validation لازم تتم في التطبيق قدام المستخدم `client side` ولازم تتم في السيرفير `server side`
- ال validation مش متعلق بلغه البرمجه ولا باطار عمل `frame work` معين تقدر تطبيق المفهوم في كل لغات البرمجه وكل اطر العمل بلا استثناء
طب ازاي ننفذ العملية دي ونتاكد من صحه البينات الي اليوزر دخلها ؟
- ممكن تستخدم Regular Experian
- ممكن تستخدم مكتبة للموضوع ده `package`
ازي نطبق الكلام ده في Flutter ؟
الموقع الرسمي لما شرح الطريقه دي
استخدمها مع Form Widget و TextFormField Widget علشان موجود فيه باراميتر ال validators
وده بياخد String Function(String val)
عباره عن فانكشن بتستقبل متغير من نوع String فلاتر بتعتلك فيه القيمة الي الي المستخدم كتبها فيه
وانت بنفسك بتعمل اي عمليه انت حابب تعملها وقدامك في الاخر ترجع حاجه من 2 ياما null وبكدا الحقل ده سليم ومفهوش مشاكل
ياما String ولو رجعت متغير سترنج فلاتر هتعرض القيمة الي فيه كانها رساله الخطا تحت الحقل علشان المستخدم يفهم اليه الخطا
مثال :
كدا في حاله ان المستخدم مكتبش حاجه وسابو فاضي فلاتر هتطلع Text تحت خانه البريد وتظهر فيها الرساله الي انت لسه عامل ليها return
طيب دلوقتي انت عرفت ازاي تاخد القيمة وتعرض رساله الخطا مع فلاتر بس بدون مكتبات وبدون كتابة كود كتير مجرد داله بتحدد اذا كان تمام او لا في خطا والرساله بتاعتو كزا
مكتبة : Queen validators 👑
مبدايا كدا في اكثر من مكتبة لموضوع ال validation و كمان انت مش محتاج مكتبة علشان تعمل الموضوع بنفسك
بس انا هتكلم عن المكتبة دي بالذات علشان انا الي عاملها 😅😅😅😅
ايه الفايده من المكتبة وامتي اكون محتاج ليها ؟
لو انت عندك خانه المستخدم هيكتب فيها البريد الالكتروني وانت مش عارف تحدد هل فعلا ده بريد بصيغه صحيح ولا لا ... الخ
يعني لو انت مش عارف تقرر هل البيانات الي المستخدم كتبها سليمة ولا لا !
ازاي استخدم المكتبة دي ؟
اول حاجه تحطها في ملف ال yaml بتاعك
queen_validators: ^2.0.0
ازاي المكتبة بتشتغل ؟
نفس الطريقة العاديه بتاعت فلاتر ونفس ال widgets
الفرق انك بدل ماتعطي validators داله تعمل الفاليديشن بتعطيها داله من المكتبة
qValidators بيحتاج منك List جواها عناصر من نوع QueenValidationRule
والمكتبة بتوفرلك انواع كتير من validation بسهوله جدا
كل الي عليك تختار من المكتبه انت محتاج ايه
محتاج تتاكد ان الحقل اتكتب فيه قيمها ؟ استخدم IsRequired
محتاج تتاكد انو بريد الكتروني صحيح ؟ استخدم IsEmail
محتاج تتاكد ان طول البيانات اكبر من او اقل من عدد معين ؟ استخدم MinLength او MaxLength
وهكذا ......
وهكذا ......
ازاي اعدل رساله الخطا الي تطلع لو في حاجه فشلت والمستخدم مكتبهاش صح ؟
كل ال Rules الموجود في المكتبه بستقبل متغير من نوع String تكتب في الرساله الي عاوزها تظهر في حاله الفشل
زي التوضيح الي في الصورة الي فوق علي طول والحقل ده اختياري ممكن تسيبو والمكتبه هتعرضلك رساله باللغة الانجليزية
وفي اضافات تانية في المكتبة وفي اكثر من حاجه المكتبة تقدر تعمل عليهم فاليديشن كلهم موجودين في رابط المكتبة علي موقع pub dev