0% found this document useful (0 votes)
480 views11 pages

Flutter Summary (Arabic)

يقدم هذا المستند مقدمة عن لغة البرمجة دارت، حيث يشرح المتغيرات والعوامل وأنواع البيانات والوظائف والبرمجة الكائنية الموجهة.

Uploaded by

moha77moha54
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
480 views11 pages

Flutter Summary (Arabic)

يقدم هذا المستند مقدمة عن لغة البرمجة دارت، حيث يشرح المتغيرات والعوامل وأنواع البيانات والوظائف والبرمجة الكائنية الموجهة.

Uploaded by

moha77moha54
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

‫‪First Lecture: Introduction to Dart‬‬

‫‪Introduction to Dart‬‬

‫‪ Dart‬هي لغة برمجة مفتوحة المصدر تم تطويرها في األصل بواسطة ‪ .Google‬إنها مخصص لكل من جانب الخادم وكذلك جانب‬
‫المستخدم‪ .‬تأتي ‪ Dart SDK‬مع برنامج التحويل البرمجي الخاص بها ‪ Dart VM -‬واألداة المساعدة ‪ Dart2js‬التي تهدف إلى إنشاء كود‬
‫‪ JavaScript‬مكافئ لـ ‪ Dart Script‬بحيث يمكن تشغيلها على تلك المواقع التي ال تدعم ‪ Dart. Dart‬هي لغة موجهة للكائنات وهي‬
‫تشبه تما ًما لغة برمجة ‪ .Java‬يتم استخدام ‪ Dart‬على نطاق واسع إلنشاء مواقع الويب وتطبيقات الويب ذات الصفحة الواحدة‪Dart .‬‬
‫‪Variables‬‬

‫اسم المتغير هو اسم مخصص لموقع الذاكرة حيث يقوم المستخدم بتخزين البيانات ويمكن جلب تلك البيانات عند الحاجة بمساعدة المتغير‬
‫عن طريق استدعاء اسمه المتغير‪ .‬هناك أنواع مختلفة من المتغيرات المستخدمة لتخزين البيانات‪ .‬يعتمد النوع الذي سيتم استخدامه‬
‫لتخزين البيانات على نوع البيانات التي سيتم تخزينها‪.‬‬
‫‪Operators in Dart‬‬

‫العوامل هي رموز خاصة تستخدم لتنفيذ عمليات معينة على المعامالت‪ .‬يحتوي ‪ Dart‬على العديد من عوامل التشغيل المضمنة التي يمكن‬
‫استخدامها لتنفيذ وظائف مختلفة‪ ،‬على سبيل المثال‪ ،‬يتم استخدام "‪ "+‬إلضافة عاملين‪ .‬والمقصود من المشغلين هو تنفيذ العمليات على‬
‫واحد أو اثنين من المعامالت‪.‬‬

‫‪Arithmetic Operators:‬‬ ‫‪Relational Operators:‬‬ ‫‪Type Test Operators:‬‬


‫تحتوي هذه الفئة من العوامل على تلك العوامل‬ ‫تحتوي هذه الفئة من العوامل على تلك العوامل‬ ‫تحتوي هذه الفئة من العوامل على تلك العوامل‬
‫التي تُستخدم إلجراء عملية حسابية على‬ ‫التي تُستخدم إلجراء العمليات العالئقية على‬ ‫التي تُستخدم إلجراء المقارنة على المعامالت‬
‫المعامالت‪ .‬أي أنها تستخدم على معاملين‬ ‫المعامالت‬

‫‪Bitwise Operators:‬‬ ‫‪Assignment Operators:‬‬ ‫‪Logical Operators:‬‬


‫تحتوي هذه الفئة من العوامل على تلك العوامل‬ ‫تحتوي هذه الفئة من العوامل على تلك العوامل‬ ‫تحتوي هذه الفئة من العوامل على تلك العوامل‬
‫التي ت ُستخدم إلجراء عملية البت على المعامالت‬ ‫التي تُستخدم لتعيين قيمة للمعامالت‬ ‫التي تُستخدم للجمع المنطقي بين شرطين أو أكثر‬
‫من المعامالت‬

‫‪Conditional Operators:‬‬ ‫‪Cascade Notation Operator‬‬

‫تحتوي هذه الفئة من العوامل على تلك العوامل‬ ‫تحتوي هذه الفئة من العوامل على تلك العوامل‬
‫التي تُستخدم إلجراء المقارنة على المعامالت‬ ‫التي تسمح لنا بإجراء سلسلة من العمليات على‬
‫نفس الكائن‬
‫‪Data Types in Dart‬‬

‫في لغة دارت هناك العديد من أنواع البيانات التي يمكن تمثيلها والتالعب بها في لغة البرمجة‪ .‬تصنيف نوع البيانات كما هو موضح‬
‫أدناه‪:‬‬

‫‪Number‬‬ ‫‪List‬‬

‫الرقم في الدارت هو نوع البيانات برمجة‬ ‫‪Dart has built-in support for list,‬‬
‫‪.‬المستخدم لالحتفاظ بالقيمة الرقمية‬ ‫‪set, and map‬‬

‫‪Set:‬‬

‫‪Properties‬‬ ‫‪Methods‬‬ ‫عبارة عن مجموعة غير مرتبة ‪ Dart‬المجموعة في‬


‫‪.‬من العناصر الفريدة‬

‫‪hashcode‬‬ ‫)(‪abs‬‬ ‫‪Map:‬‬

‫هي كائن يربط المفاتيح والقيم‪ .‬يمكن أن تكون كل من‬


‫‪isFinite‬‬ ‫)(‪ceil‬‬ ‫‪.‬المفاتيح والقيم أي نوع من الكائنات‬

‫‪isInfinite‬‬ ‫)(‪floor‬‬

‫‪isNan‬‬ ‫)(‪compareTo‬‬

‫‪isNegative‬‬ ‫)(‪reminder‬‬

‫‪sign‬‬ ‫‪round‬‬

‫‪isEven‬‬ ‫‪toDouble‬‬

‫‪isOdd‬‬ ‫)(‪toInt‬‬

‫)(‪toString‬‬

‫)(‪truncate‬‬
‫أنواع مختلفة من الوظائف في دارت‬
‫الوظيفة عبارة عن مجموعة من البيانات التي تأخذ المدخالت وتقوم ببعض المهام المحددة‪ .‬يتم إنشاء الوظائف عندما تتكرر عبارات‬
‫معينة في البرنامج ويتم إنشاء وظيفة لتحل محلها‪.‬‬
‫‪ T‬هناك أربعة أنواع من الوظائف في دارت‬

‫‪Function with no‬‬ ‫‪Function with‬‬ ‫‪Function with‬‬


‫‪No arguments and‬‬ ‫‪arguments but‬‬ ‫‪arguments but no‬‬ ‫‪arguments and with‬‬
‫‪no return type‬‬ ‫‪return type‬‬ ‫‪return type‬‬ ‫‪return type‬‬

‫في األساس‪ ،‬في هذه‬ ‫في األساس‪ ،‬في هذه‬ ‫في األساس‪ ،‬في هذه‬ ‫في األساس‪ ،‬في هذه‬
‫الوظيفة‪ ،‬ال نعطي أي وسيط‬ ‫الوظيفة‪ ،‬ال نعطي أي وسيط‬ ‫الوظيفة‪ ،‬نعطي أي وسيط‬ ‫الوظيفة‪ ،‬نعطي أي وسيط و‬
‫وال نتوقع أي نوع راجع من‬ ‫وال لكن نتوقع أي نوع راجع‬ ‫وال نتوقع أي نوع راجع من‬ ‫نتوقع أي نوع راجع من‬
‫‪.‬البيانات‬ ‫‪.‬من البيانات‬ ‫‪.‬البيانات‬ ‫‪.‬البيانات‬

‫‪Anonymous Functions‬‬

‫تشبه الوظائف المسماة ولكن ليس لديهم أسماء مرتبطة بها‪ .‬يمكن أن تحتوي الوظيفة‬
‫المجهولة على صفر أو أكثر من المعلمات مع التعليقات التوضيحية االختيارية‪ .‬وهو‬
‫يتألف من كتل من التعليمات البرمجية قائمة بذاتها والتي يمكن تمريرها في التعليمات‬
‫‪.‬البرمجية الخاصة بنا كمعلمة دالة‬
‫‪Second Lecture: OOP‬‬

‫‪Implicit interfaces‬‬

‫‪Every class implicitly defines an interface containing all the instance members of the class and of any‬‬
‫‪interfaces it implements. If you want to create a class A that supports class B's API without inheriting B's‬‬
‫‪implementation, class A should implement the B interface.‬‬

‫‪Constructors‬‬
‫يتم تعريف دالة البناء عن طريق إنشاء دالة بنفس اسم فئتها (باإلضافة إلى معرف إضافي اختياريًا كما هو موضح في ال ُمنشئات ال ُمسماة)‪.‬‬
‫أنواع دالة البناء‪:‬‬

‫دالة البناء االفتراضية‬ ‫•‬


‫إذا لم تعرف دالة بناء‪ ،‬فسيتم توفير دالة بناء افتراضية‪ .‬ال تحتوي دالة البناء االفتراضية على أي وسائط‬
‫دالة البناء المسمى‬
‫يتم استخدم دالة بناء مسمى لتنفيذ دوال بناء متعددة لكالس معين أو لتوفير المزيد من الوضوح‬
‫وتذكر ذلك‪:‬‬
‫ال يتم عمل وراثة لدوال البناء‪ ،‬مما يعني أن دالة البناء المسمى للكالس االب ال يتم توريثها بواسطة كالس االبن‪ .‬إذا كنت تريد إنشاء‬
‫كالس فرعي باستخدام دالة بناء مسمى معرفة في الكالس االب‪ ،‬فيجب عليك تنفيذ دالة البناء الخاصة في الكالس االب في الكالس‬
‫االبن‪ .‬وبشكل افتراضي‪ ،‬تقوم دالة البناء في الكالس االبن باستدعاء دالة البناء في الكالس االب بدون اسم وبدون وسيطات‪ .‬يتم استدعاء‬
‫دالة البناء في االب في بداية دالة البناء التابعة الخاصة في االبن‪ .‬إذا تم استخدام قائمة مهيئة ‪ ،‬فسيتم تنفيذها قبل استدعاء الكالس االب‪.‬‬
‫باختصار‪ ،‬ترتيب التنفيذ هو كما يلي‪ :‬قائمة التهيئة‪ 1.‬دالة البناء ‪ no-arg‬للكالس االب‪ 2.‬دالة البناء ‪ no-arg‬دالة البناء الرئيسية‪ 3.‬إذا‬
‫لم يكن لدى الكالس االب دالة بناء غير مسمى وبدون وسيطات‪ ،‬فيجب عليك استدعاء أحد دوال البناء في الكالس االب يدويًا‪.‬‬

‫‪Superparameters:‬‬

‫‪To avoid having to manually pass each parameter into the super invocation of a constructor, you can use‬‬
‫‪superinitializer parameters to forward parameters to the specified or default superclass constructor.‬‬
‫‪This feature can't be used with redirecting constructors.‬‬

‫‪Getters and setters:‬‬

‫تعد أدوات ‪ Getters‬و‪ Setters‬من األساليب الخاصة التي توفر إمكانية الوصول للقراءة والكتابة إلى خصائص الكائن‪ .‬تذكر أن كل‬
‫متغير يحتوي على حرف ضمني‪ ،‬باإلضافة إلى أداة ضبط إذا كان ذلك مناسبًا‬
‫‪Abstract methods:.‬‬

‫يمكن أن تكون أساليب ‪ ،instance‬و‪ ، getter‬و ‪ setter‬مجردة‪ ،‬حيث تحدد واجهة ولكن تترك تنفيذها للكالسات األخرى‪ .‬ال يمكن أن‬
‫توجد الدوال المجردة إال في الكالسات المجردة أو‪ .mixins‬إلنشاء طريقة مجردة‪ ،‬استخدم الفاصلة المنقوطة (;) بدالًعمل جسم للدالة‪.‬‬
‫‪Third Lecture: Introduction to flutter‬‬

‫?‪What is Flutter‬‬

‫هو إطار عمل مجاني ومفتوح المصدر لواجهة مستخدم الهاتف المحمول تم إنشاؤه بواسطة ‪ Google‬وتم إصداره في مايو ‪.2017‬‬
‫باختصار‪ ،‬يسمح لك بإنشاء تطبيق جوال أصلي بقاعدة تعليمات برمجية واحدة فقط‪ .‬هذا يعني أنه يمكنك استخدام لغة برمجة واحدة‬
‫وقاعدة تعليمات برمجية واحدة إلنشاء تطبيقين مختلفين (لنظامي التشغيل ‪ iOS‬و‪.)Android‬‬

‫فالتر تحتوي على قسمين مهمين وهما‬

‫)‪An SDK (Software Development Kit‬‬ ‫)‪A Framework (UI Library based on widgets‬‬

‫مجموعة من األدوات التي ستساعدك على تطوير‬ ‫مجموعة من عناصر واجهة المستخدم القابلة إلعادة‬
‫تطبيقاتك‪ .‬يتضمن ذلك أدوات لتجميع التعليمات‬ ‫االستخدام (األزرار‪ ،‬ومدخالت النص‪ ،‬وشرائح التمرير‪،‬‬
‫البرمجية الخاصة بك إلى تعليمات برمجية أصلية‬ ‫وما إلى ذلك) والتي يمكنك تخصيصها حسب احتياجاتك‬
‫‪Android).‬و ‪ iOS‬رمز لنظامي التشغيل( للجهاز‬ ‫‪.‬الخاصة‬

‫‪Features and advantages of flutter‬‬

‫الخصائص‬ ‫المميزات‬

‫كبيرا لحزم البرامج التي تتيح لك توسيع‬


‫ً‬ ‫تحتوي دارت مستودعًا‬
‫الفالتر إطار عمل حديث وتفاعلي‬ ‫إمكانيات تطبيقك‬

‫يحتاج المطورون إلى كتابة قاعدة تعليمات برمجية واحدة فقط لكال‬
‫سهلة جدا للتعلم‬ ‫)‪iOS‬و ‪ Android‬منصتي( التطبيقين‬

‫ويكفي أن نكتب اختبارات آلية مرة واحدة لكال النظامين‬


‫التطوير السريع‬

‫واجهات مستخدم جميلة وسلسة‬ ‫الفالتر قوية وجيدة للتطوير السريع‬

‫تحتوي على مجموعة كبيرة من ‪widgets‬‬ ‫يتمتع المطورون بالتحكم الكامل في عناصر واجهة المستخدم‬
‫‪.‬وتخطيطها‬
‫‪.‬تشغيل نفس واجهة المستخدم لمنصات متعددة‬ ‫‪.‬تقدم فالتر أدوات مطور رائعة‪ ،‬مع إعادة تحميل سريعة ومذهلة‬

‫تطبيق عالي األداء‬


‫?‪What is a widget‬‬

‫األدوات (‪ )Widgets‬هي اللبنات األساسية لواجهة مستخدم تطبيق ‪ .Flutter‬كل ‪ widget‬عبارة عن إعالن غير قابل للتغيير لجزء من‬
‫واجهة المستخدم‪.‬‬
‫‪A widget can define:‬‬

‫عنصر هيكلي (مثل زر أو قائمة)‬ ‫•‬


‫عنصر تنسيقي (مثل الخط أو نظام األلوان)‬ ‫•‬
‫أحد جوانب التخطيط (مثل المساحة المتروكة)‬ ‫•‬
‫‪Building widgets:‬‬

‫يمكنك تحديد الخصائص الفريدة لعنصر واجهة المستخدم من خالل تنفيذ وظيفة ‪ build‬والتي تُرجع شجرة (أو تسلسل هرمي) لعناصر‬
‫واجهة المستخدم‪ .‬تمثل هذه الشجرة جزء األداة من واجهة المستخدم بعبارات أكثر تحديدًا‪.‬‬
‫‪Handling user interaction:‬‬

‫إذا كانت الخصائص الفريدة لعنصر واجهة المستخدم تحتاج إلى التغيير بنا ًء على تفاعل المستخدم أو عوامل أخرى‪ ،‬فإن عنصر واجهة‬
‫المستخدم هذا يكون ذو حالة تفاعلية ‪.stateful‬‬

‫‪Type of Layout Widget‬‬

‫‪Widget supporting a single child‬‬ ‫‪Widget supporting multiple child‬‬

‫في هذه الفئة‪ ،‬ستحتوي األدوات على عنصر واجهة مستخدم‬ ‫في هذه الفئة‪ ،‬ستحتوي عنصر واجهة المستخدم المحدد على‬
‫واحد فقط كعنصر فرعي لها‪ ،‬وسيكون لكل عنصر واجهة‬ ‫أكثر من عنصر واجهة مستخدم فرعي ويكون تخطيط كل‬
‫‪.‬مستخدم وظيفة تخطيط خاصة‬ ‫‪.‬عنصر واجهة مستخدم فريدًا‬

‫‪Examples:‬‬
‫‪Examples:‬‬ ‫‪Row - Column - ListView‬‬
‫‪Center - Container‬‬

‫‪Gestures‬‬

‫تعد اإليماءات في المقام األول وسيلة للمستخدم للتفاعل مع تطبيق الهاتف المحمول (أو أي جهاز يعمل باللمس)‪ .‬تعتبر اإليماءات بسيطة مثل النقر على‬
‫شاشة الجهاز المحمول إلجراءات أكثر تعقيدًا تستخدم في تطبيقات األلعاب‪.‬‬
‫‪Examples of Gestures:‬‬

‫النقرة – لمس سطح الجهاز بطرف إصبعك لفترة قصيرة ثم حرر طرف إصبعك‪.‬‬
‫النقر المزدوج – النقر مرتين في وقت قصير‪.‬‬
‫‪Fourth Lecture: State management‬‬

‫تعد إدارة الحالة إحدى العمليات األكثر شعبية وضرورية في دورة حياة التطبيق‪.‬‬
‫الحالة هي المعلومات التي يمكن قراءتها عند إنشاء األداة ‪ wigdet‬وقد تتغير أو يتم تعديلها على مدار عمر التطبيق‪.‬‬

‫‪The widget can be classified into two categories‬‬

‫‪Stateless widget‬‬ ‫‪Stateful widget‬‬

‫ال ‪ widget‬ذات الحالة ديناميكية ولها حالة‪ .‬وهذا يعني أنه‬


‫ال تحتوي ال ‪ widget‬عديمة الحالة على أي حالة داخلية‪ .‬وهذا‬
‫يمكننا تعديله بسهولة طوال دورة حياة التطبيق دون إعادة‬
‫يعني أنه بمجرد إنشائه‪ ،‬ال يمكننا تغييره أو تعديله حتى تتم‬
‫تهيئتها مرة أخرى‪.‬‬
‫تهيئتها مرة أخرى‪.‬‬
‫إذا كنت تريد تغيير عنصر واجهة المستخدم الخاص بك‪ ،‬فأنت‬
‫بحاجة إلى تحديث كائن الحالة‪ ،‬وهو ما يمكن القيام به باستخدام‬
‫‪.‬الدالة المتوفرة لعناصر واجهة المستخدم )(‪setState‬‬

‫‪The state management categorizes into two conceptual types‬‬

‫‪Ephemeral State‬‬ ‫‪App State‬‬

‫تُعرف هذه الحالة أيضًا باسم واجهة المستخدم أو الحالة‬ ‫وهي تختلف عن الحالة ‪ .Ephemeral‬إنها نوع من الحالة‬
‫المحلية‪ .‬وهو نوع من الحاالت يرتبط بعنصر واجهة مستخدم‬ ‫التي نرغب في مشاركتها عبر أجزاء مختلفة من تطبيقنا‬
‫محدد‪ ،‬أو يمكنك القول إنها حالة تحتوي على عنصر واجهة‬ ‫ونريد االحتفاظ بها بين جلسات المستخدم‪ .‬وبالتالي‪ ،‬يمكن‬
‫مستخدم واحد‪ .‬في هذا النوع من الحاالت‪ ،‬ال تحتاج إلى‬ ‫استخدام هذا النوع من الحالة عالميًا‪ .‬تُعرف أحيانًا أيضًا باسم‬
‫استخدام تقنيات إدارة الحالة‪ .‬المثال الشائع لهذه الحالة هو‬ ‫حالة التطبيق أو الحالة المشتركة‪.‬‬
‫‪.‬حقل النص‬

‫‪State Management design patterns‬‬

‫‪Bloc‬‬ ‫‪provider‬‬ ‫‪setState‬‬ ‫‪Redux‬‬ ‫‪Fish-Redux‬‬ ‫‪GetX‬‬


‫‪Block Design Pattern‬‬
‫?‪Why block‬‬

‫يرمز ‪ BLoC‬إلى مكون منطق األعمال‪ .‬الفكرة بأكملها هي توفير دفق من األحداث من واجهة المستخدم الخاصة بك إلى ‪ BLoC‬وإذا‬
‫حدث شيء ما (عند حدوث حدث) ‪ -‬قم بإرجاع حالة جديدة إلى واجهة المستخدم‪ .‬التدفق المستمر للبيانات يجعلها سهلة الوصول إليها‬
‫وإدارتها‪.‬‬

‫يجب أن نقسم ال ‪ bloc‬إلى ثالثة ملفات‪:‬‬

‫‪events‬‬ ‫‪states‬‬ ‫‪bloc‬‬

‫األحداث هي مدخالت التطبيق‬ ‫الحاالت هي ببساطة حالة الطلب‪،‬‬ ‫ال ‪ bloc‬يدير هذه األحداث‬
‫(مثل الضغط على زر لتحميل‬ ‫والتي يمكن تغييرها استجابةً‬ ‫والحاالت‪ ،‬أي أنه يأخذ دفقًا من‬
‫الصور‪ ،‬أو إدخاالت النص‪ ،‬أو أي‬ ‫للحدث الذي تم تلقيه‬ ‫األحداث ويحولها إلى دفق من‬
‫إدخال مستخدم آخر قد يأمل تطبيقنا‬ ‫الحاالت كمخرجات‪.‬‬
‫في تلقيه)‬

‫?‪How does block work‬‬

‫‪5‬‬

‫إذا كانت ال ‪ bloc‬قامت بتحدث الحالة بنجاح‪ .‬سيتم‬


‫إعادة بناء واجهة باستخدام بالبيانات التي تم طلبها‬

‫‪event‬‬ ‫‪4‬‬

‫عندما تحتوي ال ‪ bloc‬على البيانات‪ ،‬ستحدد ما إذا‬


‫كانت البيانات ناجحة أم خطأ‪ ،‬وبعد ذلك ستصدر حالة‬

‫)‪UI(Button‬‬
‫‪Block‬‬ ‫‪Data‬‬

‫ينقر المستخدم على الزر للحصول‬


‫على البيانات‬ ‫يقوم ال ‪ bloc‬بطلب البيانات من‬
‫المستودع‬

‫‪1‬‬ ‫‪3‬‬
‫‪event‬‬

‫يتم تشغيل الحدث وإبالغ ال ‪ bloc‬بأن المستخدم يريد بعض البيانات‬

‫‪2‬‬
‫‪Provider Design Pattern‬‬

‫?‪What is Flutter Provider‬‬

‫‪ Flutter Provider‬هو حل إلدارة الحالة لتطبيقات ‪ .Flutter‬فهو يوفر طريقة بسيطة إلدارة حالة التطبيق ومشاركتها عبر عناصر واجهة‬
‫مستخدم متعددة‪ ،‬مما يجعل من السهل الوصول إلى البيانات عند الحاجة إليها‪ .‬يمكنك تخزين البيانات في موقع مركزي يسمى الموفر‬
‫والوصول إليها من أي مكان في تطبيقك‪ .‬كلما تغيرت البيانات‪ ،‬يقوم الموفر بتحديثها‪ ،‬مما يحافظ على اتساق بيانات تطبيقك وتحديثها‪ .‬تعتمد‬
‫حزمة الموفر على مفهوم عناصر واجهة المستخدم الموروثة وتوفر طريقة لنشر تغييرات البيانات عبر شجرة عناصر واجهة المستخدم‪.‬‬
‫يستخدم أسلوب البرمجة التفاعلية ويسمح للمطورين باالستماع إلى التغييرات في الحالة وإعادة بناء أجزاء من واجهة المستخدم التي تعتمد‬
‫على تلك الحالة تلقائيًا‪ .‬بهذه الطريقة‪ ،‬تتم إدارة الحالة في ‪ Flutter‬بشكل فعال‪.‬‬

‫أهمية إدارة الحالة في تطوير تطبيقات ‪Flutter‬‬

‫أمرا بالغ األهمية في تطوير تطبيق ‪ Flutter‬ألنها تساعدك على تنظيم بيانات تطبيقك ومزامنتها‪ .‬فهو يضمن إمكانية‬
‫تعد إدارة الحالة ً‬
‫الوصول إلى البيانات التي تخزنها في جزء واحد من تطبيقك وتحديثها في أجزاء أخرى من التطبيق أيضًا‪.‬‬
‫كيف يمكن مقارنة ‪ Flutter Provider‬بحلول إدارة الحالة األخرى في ‪Flutter‬؟‬

‫يحب المطورون الموفر ‪ provider‬ألنه سهل االستخدام وطريقة فعالة إلدارة الحالة في ‪ .Flutter‬تشمل الخيارات األخرى ‪،BLoC‬‬
‫و‪ ،ScopedModel‬و‪ ،Redux‬ولكل منها نقاط قوتها الخاصة‪ .‬يتميز ‪ Flutter Provider‬بكونه بسي ً‬
‫طا ومر ًنا بدرجة كافية للتعامل مع‬
‫هياكل البيانات المعقدة‪.‬‬
‫ما هي فوائد استخدام ‪Flutter Provider‬؟‬

‫من السهل إضافتها إلى أي مشروع‪.‬‬ ‫•‬


‫إنه خفيف الوزن وسريع وبسيط للمشروعات الصغيرة والمتوسطة‪.‬‬ ‫•‬
‫إنها مرنة بما فيه الكفاية للتعامل مع البيانات المعقدة والمشاريع المعقدة‪.‬‬ ‫•‬
‫ما الفرق بين ‪ ChangeNotifierProvider‬و‪ widget Consumer‬؟‬

‫باستخدام أدوات ‪ ChangeNotifierProvider‬و‪ ،Consumer‬يمكنك بسهولة إدارة البيانات ومشاركتها في تطبيق ‪ ،Flutter‬مما يضمن‬
‫بقاء بياناتك محدثة وأن واجهة المستخدم الخاصة بك تعكس دائ ًما أحدث البيانات‪.‬‬

‫‪ChangeNotifierProvider‬‬ ‫‪Consumer‬‬

‫يستخدم لتخزين البيانات الخاصة بك‬ ‫يستخدم للوصول إلى البيانات من ‪ChangeNotifierProvider‬‬

‫كلما تغيرت البيانات‪ ،‬قم بتحديث البيانات تلقائيًا وإخطار جميع‬


‫عناصر واجهة المستخدم التي تعتمد عليها عن طريق استدعاء دالة‬ ‫يقوم بإعادة إنشاء ال ‪ widgets‬تلقائيًا كلما تغيرت البيانات‪.‬‬
‫‪ ) ( notifyListeners‬على‪. provider‬‬

‫التعامل مع مقدمي الخدمات ‪ multi provider‬المتعددين في الفالتر‪:‬‬

‫أثناء إنشاء التطبيقات‪ ،‬قد تحتاج إلى استخدام موفري خدمات متعددين إلدارة أجزاء مختلفة من الحالة‪ .‬يمكنك التعامل مع موفري خدمات‬
‫متعددين من خالل دمجهم معًا مثل أي عنصر واجهة مستخدم آخر‪.‬‬
‫سنقوم بتغليف ‪ MaterialApp‬باستخدام ‪ MultiProvider‬اضافة قائمة الموفرين في فئة ‪.MultiProvider‬‬
‫‪Fifth Lecture: Laravel‬‬

‫?‪What is Laravel‬‬

‫‪ Laravel‬هو إطار ‪ PHP‬مفتوح المصدر‪ ،‬وهو قوي وسهل الفهم‪ .‬إنه يتبع نمط تصميم ال ‪ .mvc‬يعيد ‪ Laravel‬استخدام المكونات الموجودة‬
‫ألطر عمل مختلفة مما يساعد في إنشاء تطبيق ويب‪.‬‬
‫يحتوي ‪ Laravel‬على مجموعة غنية جدًا من الميزات التي ستعزز سرعة تطوير الويب‪ .‬إنه يوفر الكثير من الوقت إذا كنت تخطط لتطوير‬
‫موقع ويب من الصفر‪ .‬عالوة على ذلك‪ ،‬فإن موقع الويب المبني في ‪ Laravel‬آمن ويمنع العديد من هجمات الويب‪.‬‬

‫مميزات ‪Laravel‬‬

‫يجعل تطبيق الويب يصبح أكثر قابلية للتطوير‪.‬‬ ‫•‬


‫يتم تصميم تطبيق الويب في وقت قصير‪ ،‬حيث يقوم ‪ Laravel‬بإعادة استخدام المكونات من إطار عمل آخر في تطوير تطبيق‬ ‫•‬
‫الويب‪.‬‬
‫يتضمن مساحات األسماء والواجهات‪ ،‬مما يساعد على تنظيم وإدارة الموارد‪.‬‬ ‫•‬
‫‪Composer:‬‬

‫ال ‪ composer‬هو أداة تتضمن جميع ال ‪ dependencies‬والمكتبات‪ .‬يمكن تثبيت مكتبات الطرف الثالث بسهولة بمساعدة ال‬
‫‪.composer‬‬

‫يتم تعريف كافة ‪ dependencies‬في ملف ‪ Composer.json‬الموجود في المجلد المصدر‬

‫‪Artisan:‬‬

‫واجهة األوامر التي تتضمن مجموعة من األوامر التي تساعد في بناء تطبيق ويب‪ .‬تم دمج هذه األوامر من إطار عمل ‪ ،Symphony‬مما‬
‫أدى إلى ميزات إضافية في ‪Larave l.‬‬

‫أساسيات تكامل ‪ Laravel‬مع تطبيقات الهاتف المحمول‪:‬‬

‫‪Routing‬‬ ‫‪Controllers‬‬ ‫‪Migrations‬‬ ‫‪Query builder‬‬ ‫)‪Models (Eloquent ORM‬‬ ‫‪Seeding‬‬

‫يتيح لك ‪ Routing‬في ‪ Laravel‬توجيه جميع طلبات تطبيقك إلى وحدة التحكم المناسبة لها‪ .‬تعترف المسارات الرئيسية والرئيسية في‬
‫‪ Laravel‬وتقبل ‪ URI‬باإلضافة إلى اإلغالق‪.‬‬

‫يتم تعريف جميع المسارات في ‪ Laravel‬ضمن ملفات المسار التي يمكنك العثور عليها في الدليل الفرعي للمسارات‪ .‬يتم تحميل ملفات المسار‬
‫هذه وإنشائها تلقائيًا بواسطة إطار عمل ‪ .Laravel‬يتم تعريف ملف مسار التطبيق في ملف ‪app/Http/Routes.php.‬‬

‫‪ Controllers‬تهدف وحدات التحكم إلى التجميع المرتبط بمنطق معالجة الطلب داخل كالس واحدة‪ .‬بدالً من تحديد منطق طلب المعالجة في‬
‫شكل عمليات اإلغالق في ملفات المسار‪ .‬في مشروع ‪ Laravel‬الخاص بك‪ ،‬يتم تخزينها في دليل ‪.app/Http/ Controllers‬‬
‫?‪What is Laravel Migration‬‬

‫تعد ‪ Laravel Migration‬ميزة أساسية في ‪ Laravel‬تتيح لك إنشاء جدول في قاعدة البيانات الخاصة بك‪ .‬يسمح لك بتعديل ومشاركة مخطط‬
‫قاعدة بيانات التطبيق‪ .‬يمكنك تعديل الجدول عن طريق إضافة عمود جديد أو حذف عمود موجود‪.‬‬
‫?‪Why do we need Laravel Migration‬‬

‫يسمح لك ‪ Laravel Migration‬بإضافة عمود جديد أو حذف السجالت في قاعدة البيانات الخاصة بك دون حذف السجالت الموجودة بالفعل‪.‬‬

‫طرق لتعامل مع قواعد البيانات في‬

‫‪raw sql queries‬‬ ‫‪eloquent model‬‬

‫يمكننا إدراج البيانات واسترجاعها وتحديثها وحذفها في قاعدة‬ ‫يتم استخدام النموذج كوسيلة الستجواب البيانات من وإلى‬
‫‪.‬البيانات باستخدام االستعالمات‬ ‫طريقة أساسية ‪ Laravel‬الجدول داخل قاعدة البيانات‪ .‬يوفر‬
‫حيث يتضمن كل ‪ Eloquent ORM‬للقيام بذلك باستخدام‬
‫‪.‬جدول نموذ ًجا للتفاعل معه‬

‫أمثلة على استخدام النموذج للعمل مع قاعدة البيانات‪:‬‬

‫إلدراج البيانات في قاعدة البيانات‪ ،‬سوف نستخدم دالة )(‪save‬‬

‫لتحديث البيانات في قاعدة البيانات‪ ،‬سنستخدم دالة )(‪ find‬لتحديد السجل الذي نريد تحديثه في قاعدة البيانات وسنستخدم دالة )(‪ save‬لتحديث‬
‫البيانات‪.‬‬

‫لحذف البيانات في قاعدة البيانات‪ ،‬سنستخدم دالة )(‪ find‬لتحديد السجل الذي نريد حذفه في قاعدة البيانات وسنستخدم دالة )(‪ delete‬لحذف‬
‫البيانات‪.‬‬

‫‪Prepared by Hayel Al-Faisali‬‬

You might also like