![]() |
كيف يعمل الـ 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 programEnd of the programMicrotask 1: This will be executed firstTask 2: After 1 secondTask 1: After 2 seconds