-
المساهمات
6975 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
218
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Wael Aljamal
-
عملت تعديل للكود الأول، الفكرة أن الفاصل العمودي عملته هوامش خارجية للحاوبة container و كل قيمة ضمن Text ويتم المرور على snapshot.data[index] و استخلاص القيم حسب عدد المفاتيح فيها
- 11 اجابة
-
- 1
-
يمكننا محاولة بناء مصفوفة الأبناء children بطريقة ديناميكية، سوف نضع separetor بين العناصر children: [ Text("${snapshot.data[index]['Name']}"), Text("${snapshot.data[index]['Age']}"), Text("${snapshot.data[index]['Location']}"), Text("${snapshot.data[index]['Others']}"), ], => children: [ snapshot.data[index].forEach((key, value){ return Container( margin: const EdgeInsets.only( right: 20.0), child: Text("value"), ) } ],
- 11 اجابة
-
- 1
-
يوجد طريقة من خلال GlobalKey أي تعيين مفتاح عام ل Scafold ومن ثم يمكنك التحكم به من خلال ذلك المفتاح وفتح Drawer final GlobalKey<ScaffoldState> _key = GlobalKey(); // انشاء مفتاح key @override Widget build(BuildContext context) { return Scaffold( key: _key, // اسناد المفتاح the key ل Scaffold. drawer: Drawer(), floatingActionButton: FloatingActionButton( onPressed: () => _key.currentState!.openDrawer(), // <-- فتح drawer ), ); } يمكنك تمرير المفتاح لأي مكون و التحكم بفتح وإغلاق Drawer. الطريقة الثانية من خلال تمرير السياق context من خلال builder @override Widget build(BuildContext context) { return Scaffold( drawer: Drawer(), floatingActionButton: Builder(builder: (context) { return FloatingActionButton( onPressed: () => Scaffold.of(context).openDrawer(), // <-- فتح drawer. ); }), ); } الطريقة الثالثة هي عمل مكون Drawer عام (بالأصل هو عبارة عن حاوية Container) تكون قابلة للانزلاق، هذا المكون يرث من StatefulWidget import 'package:flutter/widgets.dart'; class PublicDrawer extends StatefulWidget { PublicDrawer({Key key}) : super(key: key); @override _PublicDrawerState createState() => _PublicDrawerState(); } class _PublicDrawerState extends State<PublicDrawer> { @override void initState() { super.initState(); } @override Widget build(BuildContext context) { return Container(); } } ثم في الصفحة الخاصة ب Home لديك نقوم باستدعائه وإسناده ل drawer من scaffold import 'package:~~~~~~~/Widgets/drawer.dart'; class HomePage extends StatefulWidget { HomePage({Key key}) : super(key: key); @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { @override Widget build(BuildContext context) { return SafeArea( child: Scaffold( drawer: PublicDrawer(), <---- body: Container(), ), ); } }
- 1 جواب
-
- 1
-
يبدأ الموضوع من قاعدة البيانات، حيث طالما أن الإشعار مرتبط بجميع المستخدمين، يتوجب إضافة حقل لجدول المستخدمين يخزن قيمة بوليانية مثلاً هل شاهد المستخدم الإشعار (التحديث في التطبيق) ليكن اسم الحقل notified تكون بقيمة افتراضية false أي لم نخبره بالتحديث، وعندما يدخل المستخدم لقسم الإشعار في التطبيق، وضغطه على زر ما، نرسل طلبية HTTP PUT للخادم لتحديث الحقل في الجدول مقابل المستخدم الحالي لتصبح notified = true (من خلال تمرير id الخاص به مثلاً في الطلبية لنعرفه) و نخفي ال budges ضمن التطبيق. كيف نعرف هل يجب عرض ال budges أو لا، عند فتح المستخدم للتطبيق وفي الشاشة الرئيسية نعمل استعلام لجلب بياناته ومنها notified (يمكن تخزينها في shred preference في حال يوجد عدة خطوات حتى يضغط المستخدم على زر انه شاهد الاشعار لكي تختبرها لقيمة notified محلياً وتأكد من تحديثها بالتزامن مع قاعدة البيانات ) وعلى أساسها نضع widget شرطية في العرض فإن كانت false == notified نعرض الإشعار وغير ذلك لا نعرضه
-
عليك أولاً أخذ فكرة عامة عن عالم البرمجة، يمكنك قراءة المقالة التالية: إن مسار التعلم يبدأ بدراسة أساسيات البرمجة و الخوارزميات وبنى المعطيات الأساسية ثم يبدأ الطالب بالتعرف على البيئة المناسبة للتطوير ضمن اختصاصه. في هذه الأيام، برمجة التطبيقات بلغات Native أي هي المقدمة من مطور النظام نفسه مثل kotlin لأندرويد و swift ل ios وتقنيات cross-platform التي يمكن عمل مشروع واحد مع شيفرة مصدرية واحدة و استخراج تطبيقات لعدة أنظمة تشغيل مختلفة مثل Flutter/dart و ReactNative/JavaScript
-
يدعى الاسم المختصر للوحدة المستدعاة ب alias ويمكننا من إعادة تسمية الوحدة ضمن الملف الحالي نستخدم الكلمة المفتاحية as ثم الاسم المستعار import information_personal as inf_p1 inf_p1.Your_age(50) inf_p1.Your_age(30) inf_p1.Your_age(32) inf_p1.Name("Zeina") inf_p1.Name("Mary") inf_p1.Name("elias") أرجو مراجعة درس الوحدات
- 1 جواب
-
- 1
-
إن تضمين المكتبات وأول عملية طباعة لايوجد بها مشكلة، أي المشكلة في آخر سطر، حيث قمت بتمرير معاملين للدالة random وهي لا تستقبل وسطاء. إن الدالة random بنفسها تقوم بتشكيل قيمة عشوائية بين 0-1 ومن نمط float الدالة randint هي التي تقبل مجال من الأعداد start-end وتعيد قيمة عدد صحيح من ضمن المجال >>> type(random()) <class 'float'> >>> type(randint(1,3)) <class 'int'> >>> randint(1,3) 2 أي عليك تغيير الدالة المستدعاة الدرس التالي فيه مثال عن random:
- 1 جواب
-
- 1
-
يمكن استخدام الوحدة MIX بعد تضمينها ك laravel-mix و الحزمة dotenv في الملف ثم نصل لمتغيرات البيئة من خلال الكائن process.env مع العلم أن المتغيرات المطلوبة في ملف env. نبدأها بكلمة MIX للمفاتيح let mix = require('laravel-mix'); require('dotenv').config(); ثم let my_env_var = process.env.MY_ENV_VAR; يمكن استخدام الدالة env من PHP ضمن ملف blade لقراءة متغيرات البيئة <script> var value = "{{ env("key") }}" </script> مثال آخر: <script> var name = '{{ env('NAME') }}'; alert(name); </script>
-
إن الموضوع ليس بسيط، يحتاج للعمل على القالب وفهم كيفية عمله ومن ثم التعديل عليه، من الأفضل توظيف مبرمج لمساعدتك في عمل التعديلات المطلوبة، يمكنك عمل التوظيف من مواقع العمل الحر خمسات أو مستقل. حيث يكون له بعد التوظيف، صلاحيات التعديل والتجريب لضمان عمل التعديلات بالشكل المطلوب
-
عليك نقل التركيز للنافذة الابن، جرب أحد الشيفرة التالية: win اصطلاح لاسم نافذة الأب child النافذة الابن child.setAlwaysOnTop(true); أو win.once('ready-to-show', () => { win.show() child.show() }) أو win.on('focus',function(){ if(child!=null && child.isVisible()){ child.focus() } }); أو new BrowserWindow({ parent: top }) أو win.on('show', () => { win.focus(); }); win.show(); تأكد أيضاً من ربط ملف جافاسكربت مع ملف html للصفحة الابن لتقوم بتحميلها وتنفيذها
-
حاول طباعة كل من: قبل الحلقة لمرة واحدة print(UserSimplePreferences.getNotficationAppID()); ثم ضمن الحلقة: print(responsebody[i]['id']); على كل حال، لم أفهم الفائدة من الحلقة، سوف تختبر أكثر من id من response وفي حال كان نفسه تعمل break وإن كان غيره تعمل على تعديله؟ وماذا يحوي responsebody هل يمكنك طباعته بشكل منسق لفهم بنيته؟ وما هي برمجة الدالة getNotficationAppID؟ ربما الاختلاف أن هنالك نمط مختلف بين البيانات (نصية و رقمية) و عملية المقارنة لا تتم بشكل صحيح. responsebody[i]['id'].toString() == UserSimplePreferences.getNotficationAppID() ^^^^^^^^^^^^
- 2 اجابة
-
- 1
-
حاول كتابة البرنامج، ويمكننا إصلاح الأخطاء إن وجدت
-
مرحبا عمر، بعد التخرج سيكون لديك كامل المهارات الكافية لاستلام المشاريع والعمل ضمن تخصصك الذي تخرجت منه. عملية البحث عن عمل سوف تساعدك فيها الأكاديمية في أول فترة وترشدك على كيفية تقديم العروض و عمل CV و الكثير من النصائح. يمكن إيجاد مشاريع برمجية بسهولة عبر مواقع العمل الحر مثل خمسات و مستقل، أو وظيفة مع راتب ثابت من موقع بعيد. ويمكنك بيع منتجاتك البرمجية على موقع بيكاليكا أيضاً. كل هذه الطرق المختلفة متاحة أمامك للعمل وتحقيق دخل. بالإضافة إن كنت ترغب في التقدم لشركات أو العمل لعملاء في منطقتك أو زبائنك.
- 3 اجابة
-
- 1
-
عملية التهيئة تختبر قيمة المتغير هل هي null أم لا. وبذلك وضع late ليس سليم في هذه الحالة، أي يجب أن يكون نمط المتغير nullable Future? _getTaskAsync; كما أن هنالك ملاحظة، إسناد قيمة لدالة غير متزامنة يتوجب استخدام await قبل الاستدعاء _getTaskAsync = await ApiUser();
- 3 اجابة
-
- 1
-
تفكيرك سليم، كلما استعملنا أمور من صلب إطار العمل، سوف نضمن أنه سيتم تحديثه و أن يكون متوافق مع الإصدارات القادمة. بشكل عام نستخدم المكتيات للسرعة في العمل واختصار الوقت، فإن كانت متاحة ومتوافقة نستخدمها، ونحاول حل المشكلات إن وجدت إما عن طريق بديل أو باختراع حل جديد
- 3 اجابة
-
- 1
-
يوجد حل آخر، وهو استخدام الدالة writelines ونمرر لها قائمة list من السلاسل النصية مثلاً كمثالك وسوف تعمل بدون مشكلة. f = open("hsoub.txt", "w") f.writelines(["Welcome To Hsoub!", "Have Fun with learning."]) f.close() f = open("hsoub.txt", "r") print(f.read()) # Welcome To Hsoub!Have Fun with learning. سوف لن تضع أي فراغ بين المخرجات. في حال أردت فصل الأسطر نمرر n\ كمحرف سطر جديد f.writelines(["\nWelcome To Hsoub!", "\nHave Fun with learning."]) ^^^ ^^ أو نستخدم Join لتنسيق دمج عناصر القائمة ' '.join(list) or '\n'.join(list) أو يدوياً بالمرمر على القائمة بحلقة مثل ما أشار له سامح
- 2 اجابة
-
- 2
-
إن اقتصر المتغير الذي لن يتم تمريره فقط على الرقم، يمكن حل المشكلة بوضع عبارة if تختبر قيمته الافتراضية التي نمررها مثلاً None ك optional arguments وبذلك يكون لدينا اثنين من قوالب النص لطباعة أحدهم def info(name,age,country,number=None): if number == None: print({f" Hello{name} Your age{age} and your country {country}") else: print({f" Hello{name} Your age{age} and your country {country} and {number}") بالنسبة للكلمات يمكن وضع نص افتراضي غير معلوم مثلاً def info(name,age,country="UnKnown",number): print({f" Hello{name} Your age{age} and your country {country} and {number}") يمكنك القراءة عن: معاملات الدوال
- 1 جواب
-
- 1
-
أولاً جرب عدم تمرير itemCount له، إن لم تنجح.. يوجد مكتبة مخصصة لهذه الحركة: carousel_slider تأكد من تمرير enableInfiniteScroll: true للباني يمكن تطبيق فكرة الدوران من خلال تمرير باقي القسمة لمكان دليل الصفحة المراد عرضها، وبذلك تصبح حلقة لانهائية (مثال) حيث أن باقي القسمة على 3 للمتغير i في حال أخذ هذا المتغير مجال من الاعداد سيكون دوري for i 1:100 i % 3 => 0 1 2 0 1 2 0 1 2 0 1 2.. لذلك، لمنع الانتقال يمكن عمل حل ذكي نسبياً وهو تكرار المصفوفة الأصلية بشكل معكوس (دمج قائمة الصفحات مع عكسها عدة مرات) pages = [1,2,3,4] reverse = [3,2] // بدون الأول لمنع التكرار myList = pages + reverse = 1 2 3 4 3 2 final_list = myList + myList + myList .. = 1 2 3 4 3 2 1 2 3 4 3 2 1 2 3 4 3 2 1 2 3 4 3 2 مرر الدليل الحالي على عدد الصفحات ل itemBuilder حيث أن الصفحات موضوعة ضمن مصفوفة باسم childern_ في المثال (final_list) return PageView.builder( itemBuilder: (context, index) { return _children[index % _children.length]; }, controller: pageController, ); الآن سوف يتم التمرير بشكل دائري.
- 3 اجابة
-
- 1
-
عند استخدام الدالة open لفتح قناة اتصال مع الملف، يتوجب تمرير معامل ثاني بعد المسار ليفهم مفسر بايثون الغرض من هذه القناة، أهو للقراءة أو الكتابة أو غيره. في حال أردت الكتابة على الملف نمرر المحرف w أي write myfile= open("D:\IT3\zeina.txt", "w") ^^^^^^ يمكنك قراءة: قراءة الملفات والكتابة فيها في بايثون
- 1 جواب
-
- 1