البرمجة غير المتزامنة باستخدام Futures وasync/await
تعامل مع العمليات المؤجلة في Dart وFlutter باستخدام Futures وasync وawait ومعالجة الأخطاء.
البرمجة غير المتزامنة باستخدام Futures وasync/await درس مجاني في Flutter Mobile Development على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Flutter Mobile Development، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Flutter Mobile Development 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Why Async?
تقوم التطبيقات جلب البيانات، وقراءة الملفات، والانتظار على المؤقتات. قد يؤدي حظر التنفيذ إلى تجميد واجهة المستخدم، لذلك تستخدم دارت البرمجة غير المتزامنة للحفاظ على استجابتها.
The Future Type
إن الكائن Future هو قيمة ستصل لاحقاً. إما أن يكون غير مكتمل، أو مكتمل بقيمة، أو مكتمل بخطأ.
Future<String> fetchName() {
return Future.delayed(
Duration(seconds: 1),
() => "Ada",
);
}async and await
حدد وظيفة كـ async واستخدم await للإيقاف المؤقت حتى يكتمل Future - كود غير متزامن يُقرأ من الأعلى إلى الأسفل مثل الكود العادي.
Future<void> main() async {
print("start");
String name = await fetchName();
print("Hello, " + name);
}await Suspends, Not Blocks
النقطة الرئيسية: await يعلق التنفيذ ولا يحظره. تستمر حلقة الأحداث في التعامل مع المهام الأخرى، مما يحافظ على استجابة واجهة المستخدم.
Returning Values
ترجع الدالة الـ async دائمًا كائن Future. يؤدي استخدام return عادي داخلها ببساطة إلى إكمال هذا الكائن (Future) بالقيمة.
Future<int> doubleIt(int x) async {
return x * 2; // becomes Future<int>
}Error Handling
قم بلف الاستدعاءات المنتظرة داخل try/catch للتعامل مع الإاخفاقات — تماماً مثل التقاط الاستثناءات المتزامنة.
try {
var data = await fetchData();
} catch (e) {
print("Failed: " + e.toString());
}Chaining with then
بدون استخدام async/await، คุณจะแนบฟังก์ชันเรียกกลับ (callbacks) ด้วย then และ catchError. การใช้ async/await จะชัดเจนกว่า แต่จะถูกคอมไพล์เป็นแนวคิดเดียวกัน.
fetchName()
.then((n) => print(n))
.catchError((e) => print("error"));Running in Parallel
استخدم Future.wait لتشغيل عدة عمليات مستقبلية (Futures) دفعة واحدة وانتظارها معاً — وهو أسرع من انتظارها واحدة تلو الأخرى.
var results = await Future.wait([
fetchA(),
fetchB(),
]);FutureBuilder in Flutter
يعمل عنصر واجهة المستخدم FutureBuilder على إعادة بناء واجهة المستخدم الخاصة بك بينما ينتقل الكائن Future من حالة التحميل إلى الإكمل — بحيث يمكنك عرض الدوائر الدوارة والنتائج بشكل تعريفي.
FutureBuilder<String>(
future: fetchName(),
builder: (context, snapshot) {
if (!snapshot.hasData) return CircularProgressIndicator();
return Text(snapshot.data!);
},
)Streams: Many Values
يُنتج الـ Future قيمة واحدة؛ بينما يُنتج الـ Stream قيمًا متعددة بمرور الوقت. استمع إليها باستخدام await for أو StreamBuilder.
Stream<int> counter() async* {
for (var i = 0; i < 3; i++) {
yield i;
}
}Putting It Together
الخلاصة: Futures للنتائج الفردية، و async/await لكتابة كود نظيف، و try/catch للأخطاء، و FutureBuilder لربط البيانات غير المتزامنة (async) بعناصر واجهة المستخدم (widgets).
Quick Check
إفحص سريعاً كلاً من Future و async/await في لغة Dart قبل الانتقال إلى الخطوة التالية.
Recap
You’ve got Dart async: Future for later values, async/await for readable code, try/catch for errors, and Future.wait plus FutureBuilder.
الأسئلة الشائعة
هل درس «البرمجة غير المتزامنة باستخدام Futures وasync/await» مجاني؟
نعم — نص درس «البرمجة غير المتزامنة باستخدام Futures وasync/await» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Flutter Mobile Development، انتقل إلى CoddyKit PRO. تتضمن دورة Flutter Mobile Development 4 دروس في المجموع.
ماذا ستتعلم في «البرمجة غير المتزامنة باستخدام Futures وasync/await»؟
تعامل مع العمليات المؤجلة في Dart وFlutter باستخدام Futures وasync وawait ومعالجة الأخطاء. تتمرن على Flutter Mobile Development مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Flutter Mobile Development؟
لا تُشترط خبرة سابقة. Flutter Mobile Development على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «البرمجة غير المتزامنة باستخدام Futures وasync/await»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Flutter Mobile Development هذا؟
نعم. كل درس في Flutter Mobile Development يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- منظومة Flutter والإعداد
- أساسيات Dart لتطوير Flutter
- بناء أول تطبيق Flutter لك
- البرمجة غير المتزامنة باستخدام Futures وasync/await