بلال زيادة

الأعضاء
  • المساهمات

    2,882
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • Days Won

    26

السُّمعة بالموقع

1,285 Excellent
  1. هل يمكنك تحويل ترميز الريسبونس إلى utf8 عن طريق String body = jsonDecodeUtf8(response.bodyBytes); أو يمكنك إضافة الدالة utf8.decode إلى response.bodyBytes كما في الطريقة التالية json.decode(utf8.decode(response.bodyBytes)) إذا لم ينجح ذلك تأكد من شكل الريسبونس الي راجع من api و يكون بالعربية.
  2. هل ترميز الحقول في قاعدة البيانات utf8mb4_unicode_ci ؟
  3. يمكنك من خلال الرابط التالي من هنا ، العثور على تحديات في لغة البرمجة جافا سكريبت و يمكن العمل على حلها.
  4. حاول مسح الملفات المؤقتة و ملفات build باستخدام الأمر التالي flutter clean ثم حاول تحديث فلاتر من خلال الأمر التالي flutter upgrade و تحديث الحزم من خلال الأمر التالي flutter pub upgrade ثم حاول تشغيل البرنامج مرة أخرى من خلال الأمر التالي flutter run
  5. يجب التأكد من بيانات الاتصال بsmtp الخاص بك مثل MAIL_MAILER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null // MAIL_FROM_ADDRESS=null MAIL_FROM_NAME="${APP_NAME}" وأيضا التأكد من حالة التشفير في ملف env. MAIL_ENCRYPTION=tls أو MAIL_ENCRYPTION=ssl , و التأكد من حذف الملفات المؤقتة من خلال الأمر التالي php artisan config:clear أو يمكنك استخدام الأمر التالي لحذف جميع الملفات المؤقتة php artisan optimize:clear
  6. هل هناك قيمة في account الموجودة في ملف constants.php في مجلد config يجب تغييرها للقيمة التي تريد البدء منها و لكن أنصحك بالاعتماد على قيمة id في ربما تكون أدق لجلب رقم المتجر.
  7. لاحظ في الصورة الثانية السطر 70 ، أنه أفتراضياً يبدأ من العدد 100 ، هل يمكنك تعديلها و من ثم اخباري بالنتيجة. و أيضا لماذا لا تستفيد من قيمة id بحيث هي قيمة كل متجر يتم إنشائه وتكون رقمه ؟
  8. يمكنك إنشاء وسم div بهذا الشكل <div class="items"> <div class="box"> <div class="box-header"> <h3>title</h3> </div> <div class="box-body"> <img src="image1.png" /> </div> <div class="box-footer"> <p>Description here</p> </div> </div> <div class="box"> <div class="box-header"> <h3>title</h3> </div> <div class="box-body"> <img src="image1.png" /> </div> <div class="box-footer"> <p>Description here</p> </div> </div> <div class="box"> <div class="box-header"> <h3>title</h3> </div> <div class="box-body"> <img src="image1.png" /> </div> <div class="box-footer"> <p>Description here</p> </div> </div> <div class="box"> <div class="box-header"> <h3>title</h3> </div> <div class="box-body"> <img src="image1.png" /> </div> <div class="box-footer"> <p>Description here</p> </div> </div> <div> ثم نستخدم flexbox و لجعل العناصر بجانب بعض نختار الخاصية display: flex ليتم وضع العناصر بجانب بعضها مثل .items{ display: flex; } .items .box{ border: 2px solid #CCC; margin: 5px 20px; } و قمنا باستخدام الخاصية margin لجعل هوامش من الجهات الأربعة للصناديق التي تحتوي على العناصر المتمثلة في العنصر box .
  9. أو يمكنك إنشاء عنصر حاوي للعناصر ( container ) بحيث يتم توسيط هذا العنصر في منتصف الصفحة باستخدام الخواص width, margin <div class="container"> // هنا العناصر الخاصة بك </div> والأن نطبق التنسيق لجعله في المنتصف .container{ width: 500px; margin: 0 auto }
  10. المُنشئ ( constructor ) هو أيضًا Method في الكلاس ( class ) ، وفي ما يلي قد يجعلك تشعر بالاختلاف بشأن المُنشئ: يحمل المُنشئ نفس اسم الفئة ( class ) ، كما في المثال التالي class Person{ String name; int age; Person(){ name = new String(); age = 2; } } المُنشئ هو الطريقة الأولى التي يتم تشغيلها عند إنشاء مثيل للفئة (يسمى أيضًا الكائن). المُنشئ ، باعتباره أول طريقة يتم تشغيلها ، هو عادةً ما يُستخدم لإنشاء مثيل للكائنات وتهيئة المتغيرات ، والتي هي أعضاء في الفئة، لا يقوم المُنشئ بإرجاع أي قيمة وبالتالي لا يوجد نوع إرجاع. يمكن تحميل المُنشئ ، مثل أي وظيفة. Method هي مجموعة من العبارات التي يتم تجميعها معًا لإجراء عملية. مثل class Person{ public static int test(int x, int y) { } }
  11. هل يمكنك تجربة استخدام خاصية التعويم float للزر ، كما في الشكل التالي float:left ثم تخبرني بالنتيجة ؟
  12. يمكنك استخدام مكتبة بوتستراب الذي توفر لك خصائص أكثر من رائعة في جعل الموقع متجاوب مع جميع الشاشات لذلك يمكنك الاطلاع على توثيق مكتبة بوتستراب من هنا ، و هذه المكتبة توفر مكونات جاهزة يمكنك استخدامها في موقعك بشكل كامل و هذه المكونات قابلة للتخصيص من قبل المطور أي بمعنى يمكن إجراء تعديلات عليها بشكل كلي لتناسب احتياجات المبرمج، و أيضا هناك طريقة أخرى و هي استخدام Media Queries التي تكون التركيبة العامة لها كالتالي /* هنا للشاشات الصغيرة جدا*/ @media (max-width: 576px) { ... } /* هنا لشاشات التابلت وغيرها من الأجهزة اللوحية */ @media (max-width: 768px) { ... } /* هنا لشاشات الحاسوب المكتبية*/ @media (max-width: 992px) { ... } /* هنا لشاشات الكبيرة*/ @media (max-width: 1200px) { ... } بحيث يمكن تنسيق الموقع ليكون متوافق مع شاشات الجوال كالتالي @media (max-width: 576px) { .navi a { text-decoration: none; color: #3a6cf4; font-weight: 500; font-size: 0.1em; padding-right: 23px; } .main-btn { text-align: center; display: block; } .social-icons { text-align: center; margin: 20px 0; } } بحيث يمكنك إكمال تنسيق الصفحة بناء على عرض الشاشة التي تحتاج أن يظهر عليها الموقع بالشكل الذي تريده , ويكون كامل ملف css.css @import url('https://fonts.googleapis.com/css2?family=Noto+Kufi+Arabic:wght@100;200;300;400;500;600;700;800;900&display=swap'); *{ font-family: 'Noto Kufi Arabic', sans-serif; margin: 0; padding: 0; box-sizing: border-box; scroll-behavior: smooth; direction: rtl; } header{ background-color: #f0f0f0; width: 100%; position: fixed; z-index: 999; display: flex; justify-content: space-between; align-items: center; padding: 10px 200px; } .logo{ text-decoration: none; color: #3a6cf4; font-weight: 700; font-size: 1.8em; } .navi a { text-decoration: none; color: #3a6cf4; font-weight: 500; font-size: 1.1em; padding-right: 30px; } .navi a:hover{ color: #601cfc; } section { padding: 100px 200px; } .main{ width: 100%; min-height: 100vh; display: flex; align-items: center; background: rgba(0,0,0,0.4) url(landing-image.png) no-repeat; background-blend-mode: darken; background-size: cover; background-position: center; padding-bottom: 60px; } .main h2{ color: #fff; font-size: 1.4em; font-weight: 500; } .main h2 span{ display: inline-block; margin-bottom: 10px; color: #4e9eff; font-size: 3em; font-weight: 600; } .main h3{ color: #fff; font-size: 2em; font-weight: 700; margin-top: 10px; margin-bottom: 30px; } .main-btn{ color: #fff; background-color: #3a6cf4; text-decoration: none; font-size: 1.1em; font-weight: 600; display: inline-block; padding: 0.25em 3.1875em; border-radius: 15px; margin-top: 10px; margin-bottom: 5px; transition: 0.7s ease; } .main-btn:hover{ background-color: #601cfc; transform: scale(1.1); } .social-icons a{ color: #fff; font-size: 1.7em; padding-left: 30px; margin-right: 5px; } .title{ display: flex; justify-content: center; color: #3a6cf4; font-size: 2.2em; font-weight: 800; margin-bottom: 30px; } .content{ display: flex; justify-content: center; flex-direction: row; flex-wrap: wrap; } .card{ background-color: #fff; width: 21.25em; box-shadow: 0px 5px 25px rgba(1 1 1 / 15%); border-radius: 10px; padding: 25px; margin: 15px; transition: 0.7s ease; } .card:hover{ transform: scale(1.1); } .icon{ color: #3a6cf4; font-size: 8em; text-align: center; } .info{ text-align: center; } .info h3{ color: #3a6cf4; font-size: 1.2em; font-weight: 700; margin: 10px; } .cv{ width: 100%; min-height: 100vh; background-color: #000016; } .cv-description{ color: #fff; font-size: 1.4em; font-weight: 500; } .links a:checked{ color: #f0f0f0; } p a{ color: #3a6cf4; text-decoration: none; } p a:hover{ color: #fff; } .cards-contact .content .icon{ font-size: 4.5em; } .info-2{ text-align: center; } .info-2 h3{ color: #000; font-size: 1.2em; font-weight: 700; margin: 10px; } .info-2 p{ font-size: 1.5em; font-weight: 700; } .footer{ background-color: #000016; color: #fff; padding: 2em; display: flex; justify-content: space-between; } .footer-title{ font-size: 1.3em; font-weight: 600; } .footer-title span{ color: #3a6cf4; } #menu{ width: 25; cursor: pointer; } @media (max-width: 576px) { .navi a { text-decoration: none; color: #3a6cf4; font-weight: 500; font-size: 0.1em; padding-right: 23px; } .main-btn { text-align: center; display: block; } .social-icons { text-align: center; margin: 20px 0; } } @media (max-width: 768px) { } @media (max-width: 992px) { } @media (max-width: 1200px) { } @media (max-width:300px){ body{ font-size: 10px; } } @media (max-width:1023px){ header{ padding: 12px 20px; } .navi a{ padding-left: 10px; } .title{ font-size: 1.8em; } section{ padding: 120px 20px; } .main-content h2{ font-size: 1em; } .main-content h3{ font-size: 1.0em; } .content{ flex-direction: column; align-items: center; } } @media (max-width:641px){ body{ font-size: 12px; } .main h2{ font-size: 1em; display: block; } .main-content h2{ font-size: 0.8em; } .main-content h3{ font-size: 1.4em; } }
  13. يبدو أن firebase قامت بتحديث التعامل مع PhoneAuthProvider | verifyPhoneNumber يمكنك زيارة التوثيق الرسمي من هنا ، لذلك حاول تجربة إزالة الكود التالي PhoneAuthProvider.getInstance().verifyPhoneNumber( number, 10, TimeUnit.SECONDS, TaskExecutors.MAIN_THREAD, mCallBack ); إلى PhoneAuthOptions options = PhoneAuthOptions.newBuilder(mAuth) .setPhoneNumber(phoneNumber) // Phone number to verify .setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit .setActivity(this) // Activity (for callback binding) .setCallbacks(mCallBack) // OnVerificationStateChangedCallbacks .build(); PhoneAuthProvider.verifyPhoneNumber(options); ثم في ملف app\gradle يمكنك استدعاء السطر التالي في dependencies implementation 'androidx.browser:browser:1.2.0'
  14. يمكنك استخدام حزمة flutter_image_compress يمكنك العثور عليها من هنا , تعمل هذه الحزمة على ضغط الصورة , وهناك توثيق كامل يمكنك قراءته للتعامل مع هذه المكتبة و هذه المكتبة تعمل على كلا النظامين ios / android ، ويمكنك تثبيت الحزمة في مشروعك من خلال فتح ملف pubspec.ymal من خلال الأمر التالي dependencies: flutter_image_compress: ^1.0.0-nullsafety ويمكنك استدعاء المكتبة في الملف الذي تعمل عليه من خلال import 'package:flutter_image_compress/flutter_image_compress.dart'; كذلك تزودك هذه الحزمة ببعض الخصائص للتعامل مع الصورة كخاصية الدوران ( rotate ) ، وخاصية autoCorrectionAngle و خاصية التحكم بجودة الصورة و خاصية العرض و الارتفاع الأقصى للصورة .
  15. فئة ArrayList عبارة عن مصفوفة يمكن تغيير حجمها ويمكن العثور عليها في حزمة java.util. يتمثل الاختلاف بين المصفوفة المضمنة و ArrayList في Java في أن حجم المصفوفة لا يمكن تعديله (إذا كنت تريد إضافة عناصر إلى / من المصفوفة أو إزالتها منها ، فيجب عليك إنشاء واحدة جديدة). بينما يمكن إضافة العناصر وإزالتها من ArrayList وقتما تشاء. يختلف بناء الجملة أيضًا قليلاً: import java.util.ArrayList; ArrayList<String> cars = new ArrayList<String>(); فئة LinkedList متطابقة تقريبًا مع ArrayList ، فئة LinkedList هي مجموعة يمكن أن تحتوي على العديد من الكائنات من نفس النوع ، تمامًا مثل ArrayList ، تحتوي فئة LinkedList على جميع الأساليب نفسها مثل فئة ArrayList لأن كلاهما يقوم بتطبيق واجهة List. هذا يعني أنه يمكنك إضافة عناصر وتغيير العناصر وإزالة العناصر ومسح القائمة بنفس الطريقة ، ومع ذلك ، بينما يمكن استخدام فئة ArrayList وفئة LinkedList بالطريقة نفسها ، إلا أنهما تم بناؤهما بشكل مختلف تمامًا. كيف تعمل ArrayList تحتوي فئة ArrayList على مصفوفة منتظمة بداخلها. عند إضافة عنصر ، يتم وضعه في المصفوفة ، إذا لم تكن المصفوفة كبيرة بما يكفي ، يتم إنشاء مصفوفة جديدة أكبر لتحل محل القديم وتتم إزالة المجموعة القديمة. كيف تعمل LinkedList تخزن LinkedList عناصرها في "حاويات". تحتوي القائمة على رابط للحاوية الأولى ولكل حاوية رابط إلى الحاوية التالية في القائمة. لإضافة عنصر إلى القائمة ، يتم وضع العنصر في حاوية جديدة وترتبط تلك الحاوية بإحدى الحاويات الأخرى في القائمة. LinkedList توفر عدة طرق ( وظائف ) للقيام بعمليات معينة بشكل أكثر كفاءة: addFirst () يضيف عنصرًا إلى بداية القائمة. addLast () أضف عنصرًا إلى نهاية القائمة. removeFirst () قم بإزالة عنصر من بداية القائمة. removeLast () قم بإزالة عنصر من نهاية القائمة. getFirst () احصل على العنصر في بداية القائمة. getLast () احصل على العنصر في نهاية القائمة.