تعلم كيف يعمل الـ Event Loop في Dart واجعل تطبيقك لا يتوقف أبدًا!

 

الـ Event Loop في Dart: المفتاح السحري لتطبيقات أسرع وأكثر استجابة!
كيف يعمل الـ Event Loop في Dart؟ اكتشف السر وراء تطبيقات لا تتوقف

تعلم الـ Event Loop في Dart خطوة بخطوة وأبدع في تطوير تطبيقات لا تتوقف

إذا كنت مطور Flutter أو Dart، فمن المحتمل أن تواجه العديد من المفاهيم المتعلقة بالبرمجة غير المتزامنة. أحد هذه المفاهيم الأساسية هو دورة الحدث. في هذا المقال سنشرح بالتفصيل ما هي Event Loop وطريقة عملها وأهميتها الكبيرة في تشغيل تطبيقات Flutter او البرمجه بشكل عام بشكل سهل وسريع.


ما هي دورة الحدث - Event Loop؟

تعد حلقة الأحداث جزءًا أساسيًا من كيفية تعامل Dart وFlutter مع العمليات غير المتزامنة، مثل تحديثات واجهة المستخدم وطلبات الشبكة والمؤقتات والمهام الأخرى. يساعدك الفهم الشامل لحلقة الأحداث على تجنب العديد من المشكلات وتحسين أداء التطبيق الخاص بك.


 كيفية إنشاء حلقة حدث في Flutter وDart ؟

1. Main Isolate

يستخدم Dart مفهوم العزلات لتنفيذ التعليمات البرمجية في سياقات تنفيذ مختلفة. العزل الأساسي هو المكان الذي يتم فيه تشغيل كود التطبيق الرئيسي، بما في ذلك واجهة المستخدم (UI).


لا تتشارك Isolate الذاكرة مع بعضها البعض، بل تتواصل من خلال الرسائل.

يتم تشغيل معظم التعليمات البرمجية الخاصة بـ Flutter في العزلة الرئيسية، والتي تتحكم في تحديثات واجهة المستخدم.


2 . Event Queue

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

يتم وضع هذه المهام في قائمة الانتظار حتى يصبح العزل الأساسي فارغًا وقابلاً للمعالجة.


3. Task Execution

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

تمنع هذه الطريقة توقف الخيط الرئيسي، مما يحافظ على سلاسة واجهة المستخدم ويمنع التطبيق من التعطل.


4. Asynchronous Operations

عندما تستخدم كلمات مثل المستقبل وغير المتزامن والانتظار في Dart، فإنها تسمح بتشغيل المهام طويلة الأمد (مثل طلبات الشبكة أو قراءة الملفات) في الخلفية دون تعطيل التطبيق.

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


5. Microtasks 

بالإضافة إلى قائمة الأحداث المعتادة، هناك أيضًا قائمة المهام الصغيرة. تتمتع هذه المهام بأولوية أعلى من المهام العادية ويتم تنفيذها قبل أي مهمة أخرى في قائمة انتظار الأحداث.

يمكن إضافة هذه المهام باستخدام scheduleMicrotask.


مثال عملي على كيفية عمل الـ Event Loop في Flutter و Dart

void main() async {
  print('Start of the program');

  Future.delayed(Duration(seconds: 2), () {
    print('Task 1: After 2 seconds');
  });

  Future.delayed(Duration(seconds: 1), () {
    print('Task 2: After 1 second');
  });

  scheduleMicrotask(() {
    print('Microtask 1: This will be executed first');
  });

  print('End of the program');
}

نتيجة الكود السابق


Start of the program
End of the program
Microtask 1: This will be executed first
Task 2: After 1 second
Task 1: After 2 seconds

أهمية حلقة الأحداث في تطوير تطبيقات Flutter

استجابة سريعة لواجهة المستخدم: بفضل حلقة الأحداث، يمكن لواجهة المستخدم الاستجابة بسرعة حتى عند تنفيذ مهام خلفية ثقيلة.
تحسين أداء التطبيق: يساعدك فهم حلقة الأحداث على كتابة تعليمات برمجية محسنة لتجنب أي تجميد أو تأخير في التطبيق.
إدارة العمليات غير المتزامنة بكفاءة: يتيح لك ربط الأحداث التعامل مع مهام متعددة بشكل غير متزامن دون التأثير على الأداء العام للتطبيق.
تعليقات