اذهب إلى المحتوى

Wael Aljamal

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

    6975
  • تاريخ الانضمام

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

  • عدد الأيام التي تصدر بها

    218

كل منشورات العضو Wael Aljamal

  1. الحالة الافتراضية هنا هو بناء الشجرة مباشرة، وأنت تريد تأخير ذلك. حاول نقل Future Builder ك widget بالكامل إلى دالة، واستدعيها عند الحاجة من خلال تغير في أحد متغيرات الحالة أو نقر زر..
  2. طيب متى تريد تنفيذ الدالة
  3. getdataCat تعيد قائمة إن كانت قائمة أغراض برمجية، أي العنصر فيه عدة قيم سوف تكون قائمة من dynamic لأذلك نعدل نمط إرجاع الدالة Future<<List<dynamic>> getdataCat().. Future.value(responsebody); وإذا كانت تعيد سلاسل نصية؟ نوع القيمة المعادة يجب أن يكون نفسه من نمط ما تحسبه و تعيده الدالة. Future<<List<String>> getdataCat().. Future.value(responsebody); أي ما يعيده jsonDecode إن كان كما قلت فسوف نعيد تعديل نمطه من dynamic إلى string jsonDecode(responsebody).cast<List<String>();
  4. لأن كل منهما نمط مختلف يجب أن يكون نفسه
  5. هل تتغير رسالة الخطأ؟
  6. التعليق معدل، تعديل نمط الدالة getdataCat
  7. سبب الشكلة هو نمط الإعادة للدالة getdataCat حاول عملها أن تعيد كالتالي: if (responsebody.length >0){ return Future.value(responsebody); } ربما تعدل تعريف الدالة: Future<List<String>> getdataCat()
  8. أرجو تمرير الدالة بالاسم فقط، وليس تنفيذها future: getdataCat(), ^^^ => future: getdataCat, حيث أن هذا ما يسبب التنفيذ المباشر
  9. هل هي مستدعاة ضمن دالة؟ أرجو إرفاق الملف
  10. المشكلة لديك في تضمين صنف الاستثناءات ضمن عبارة catch catch(Exception $e){ // لا يعمل أبدًا } الذي يجب استبداله بال root namespace \Exception catch(\Exception $e){ // يعمل } أو أضف في بداية الملف use Exception
  11. يتوقف هذا على سياسة غوغل، وما الذي تعطيك صلاحية لتعديله في مستعرض يوتيوب والمشغل المضمن معه embedded player، حيث أن محاولة إخفاء أي شيء من بنية التحكم سيخفيها كاملة. الحل الأمثل هو رفع الفيديوهات على موقع متخصص ويحمي حقوق الملكية، ولكن التكلفة عالية، فأقترح تشغيل الفيديو في التطبيق من خلال طرف ثالث تعطيه الرابط مثل plyr.io مع العلم أني لم أجرب هذا الشيء هل حاولت عمل تحديد للفيديوهات من يوتيوب بأن تكون خاصة وغير عامة؟ ربما يقلل من انتشار الفيديوهات أو في حال توقف الفيديو تقوم بعرض نافذة منبثقة تغطي الأزرار التي لا تريدها
  12. إن shared preferences في Flutter تسمح لك بتخزين قائمة سلاسل نصية مباشرة من خلال الدالة setStringList كما الطريقة التالية: setStringList(String key, List<String> value) هي تماماً ما تحتاجه، لأن قائمتك عبارة عن قائمة سلاسل نصية String List. يوجد الدالة لقراءة القيمة المخزنة مسبقاً // read final myStringList = prefs.getStringList('string_list_key') ?? []; // write prefs.setStringList('string_list_key', ['wael', 'walid', 'wassim']);
  13. أرجو منك إرفاق رسائل الخطأ التي تظهر لديك لنستطيع فهم المشكلة وتوجيهك للحل
  14. موضوع إنشاء الجلسة يقوم به إطار العمل، ونعم لكل مستخدم جلسة مختلفة عن الآخر حاول تطبيق الموضوع بالاستفدة من التوثيق الرسمي: django sessions أو developer.mozilla Django/Sessions حيث أن الجلسة عبارة عن قاموس تحفظ بيانات المستخدم الحالي ضمن جلسة تصفحه للويب في نفس ذلك الوقت يمكن الوصول لبيانات الجلسة من خلال الطلبية قراءة بيانات: my_car = request.session.get('my_car', 'no car') إضافة بيانات: request.session['my_car'] = 'audi' شكرا
  15. حاول إرفاق البرنامج الذي كتبته في تعليق
  16. هل يتم تنفيذ الدوال على نفس المستخدم؟ حاول استخدام الجلسة session التي تتفعل خلال استعراض المستخدم للموقع (جلسة تصفح الموقع) ويمكن ضبط وقت حذفها من إعدادات التطبيق.
  17. حاولت البحث عن بدلاء للخدمة ووجدت Sovrn //Commerce هو الأفضل للمواقع الحديثة.
  18. حاول البحث عن أين يخزن البيانات where electron save database عادة تطبيقات electron تقوم بحفظ البيانات (قواعد البيانات) في مجلد app data حيث أنها قاعدة بيانات محلية C:\Users\user-1\AppData Windows: C:\Users\<you>\AppData\Local\<Your App Name> الخاص بالمستخدم الحالي الذي يشغل التطبيق، أي خارج مجلد مشروع التطبيق، وبذلك نسخ أو استخراج التطبيق و تنصيبه على جهاز آخر لن يعمل على نقل قاعدة البيانات، فقط تجنب تخزين بيانات حساسة في الملفات الخاصة بالمشروع. إن لم تجدها، هل حاولت عرض المجلدات و الملفات المخفية؟ من مستعرض الملفات، نختار تبويب العرض view ثم نضع إشارة بجانب العناصر المخفية hidden items
  19. أعتقد أنه لا يوجد لديك مدونة، و عدد الصفحات قليل. من الأفضل قراءة شرح غوغل لكيفية حل المشكلة
  20. الصفحات في موقعك بدون محتوى والموقع جديد. حاول قراءة فتح الروباط المرفقة مع رسالة غوغل فيها شرح للمشكلة
  21. بعد تحميلك للشهادة كملف pdf يوجد فيها رابط يمكن النقر عليه وسوف يفتح رابط الشهادة من الانترنت عبر عنوان ويب خاص باكاديمية حسوب، وهذا يؤكد على تخرج الطالب و أن الشهادة صحيحة. اقتراح وجود QR Code هو شيء جميل، ربما تأخذه الإدارة في الحسبان. يمكنك التواصل مع مركز المساعدة في أمر طباعة و شحن الشهادة. إن الشهادة مهما كان مصدرها، جامعية أو من معهد خاص أو أكاديمية مهمة جداً كإثبات ان الشخص قد مر بمرحلة دراسية معينة، ولكن لن تقوم بإثبات مهاراتك الفعليه غير خبرتك و مهاراتك في حل المشكلات و تقديم برامج جيدة و مناسبة للعملاء، فالتدرب المستنر و الدراسة هو الطريق السليم للنجاح والحصول على عمل. خذ مثال، هل جميع الأطباء أو المهندسين المدنيين حققوا نفس النجاح؟ ام الأمهر منهم قد تفوق.
  22. انت تعلمت فكرة الحلقة، وفكرة إدخال البيانات من prompt، الآن أصبح الموضوع في ملعبك، عليك البدء في تحليل البرنامج واستخدام أمور أساسية كنت قد تعلمتها و تركيب هذه المفاهيم و المعلومات لبناء تطبيقات أكبر، ليس من الممكن شرح غير الاساسيات، مثلا عند شرح برامج بشكل مباشر سيضر الطالب، لأن اي تغير في التطبيق سيؤدي لعدم قدرة الطالب على إعادة بناء المنطق المطلوب حتى لو كان بسيط. مراجعة الاساسيات، ولو برؤوس أقلام لكي نعرف ما تقدمه لغة البرمجة ومن ثم الاعتماد عليه في بناء برامج أكبر هو الحل للتعلم. المدربون متواجدون لسد اي نقص في الدورات، و الإدارة تتابع جميع الاستفسارات و تجمع ملاحظات لتحسين الدورات دوماً، مع الحفاظ على جانب جعل الطالب يبحث و يتعلم لأن التعلم عملية تراكمية و غير تلقينية. في المرة القادمة، حاول بدء التطبيق ولو بخوارزمية أو شيفرات برمجية بسيطة و إن لم تعرف كيف تكمل يمكنك مشاركة البرنامج في السؤال. أتمنى لك التوفيق
  23. صندوق الإدخال، هل تقصد به prompt؟ يمكنك وضعه دالخل الحلقة، وعند إدخال كل قيمة تقوم بتخزينها في عنصر من مصفوفة أو طباعته مباشرة for (let i=0; i<3; i++) { let person = prompt("Please enter your name"); alert("name is " + person); } حاول كتابة البرنامج بنفسك، وشاركه إن كان فيه خطأ لنساعدك على تصويبه
  24. تمام، في صفحة splash screen تقوم بجلب البيانات بشكل عادي، ثم بعد انتهاء الطلب، في نهاية التابع الذي يجلب البيانات، اعمل تحويل لصفحة Home بطلب الصفحة يدوياً class HomeScreen extends StatefulWidget { final dynamic Data; Tabbar(this.Data); @override State<Tabbar> createState() => _HomeScreenState(); } وإن الانتقال لصفحة ال Home يتم تمرير بيانات api get data async { fetch .. HomeScreen(result) // قائمة result } ثم نتابع تمرير البيانات للقائمة كلا هي الأفضل. لكن يمكن استخدام list عادية سوف تحمل الجميع عند إنشائها وحاول التأكد أن طريقتك في جلب الصور تستخدم الذاكرة المؤقتة cache لتخزين الصور المكررة في التطبيق و عند طلب نفس الرابط لا تحمل الصورة من الانترنت مثل cached_network_image ,الأفضل تطبيق Pagination أي التقسيم لصفحات، لكن فيها عمل أكثر إن لم يكن أداء التطبيق مقبول يمكن الانتقال لها
  25. نعم يمكن ذلك، في بداية استعراض splash screen يمكنك عمل HTTP Get request من API لديك، وتخزن البيانات في متغيرات، ثم تعيد تمريرها من خلال باني الصفحة الرئيسية، الموضوع مرتبط بتطبيقك. Listview.builder لاتقوم بإنشاء عناصر القائمة إلا عند ظهورهم لواجهة التطبيق (مجال مرئي للمستخدم) وبذلك يكون التحميل بطيء. تأكد أن حجم الصور صغير و ليس كبير جداً، لأنه يؤثر في سرعة الانترنت + سرعة معالجة الهاتف
×
×
  • أضف...