By using this site, you agree to the Privacy Policy and Terms of Use.
موافق
عرب فلاترعرب فلاتر
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
قراءة: الدرس 56: شرح عبارات async & await في لغة دارت (Dart)
شارك
تسجيل الدخول
إشعار أظهر المزيد
Aa
عرب فلاترعرب فلاتر
Aa
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
Search

أقسام الموقع

استكشف جميع أقسام الموقع
قسم Dart في موقع عرب فلاتر

Dart

59 مقالات
قسم Widgets في موقع عرب فلاتر

Widgets

104 مقالات
قسم Packages في موقع عرب فلاتر

Packages

19 مقالات
قسم Tutorials في موقع عرب فلاتر

Tutorials

22 مقالات

أخر المواضيع

استكشف أخر المواضيع المنشورة
شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا
Tutorials

شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا

5
حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر
Tutorials

حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر

10
أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات
Tutorials

أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات

17
لديك حساب موجود؟ تسجيل الدخول
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
© جميع الحقوق محفوظة موقع عرب فلاتر 2023
عرب فلاتر > Dart > الدرس 56: شرح عبارات async & await في لغة دارت (Dart)
Dart

الدرس 56: شرح عبارات async & await في لغة دارت (Dart)

عبدالله يوسف
أخر تحديث 2024/11/15
بواسطة عبدالله يوسف اضف تعليق 4 دقيقة للقراءة 3252 مشاهدات 6
شارك
شرح عبارات async & await في لغة دارت (Dart)
شرح عبارات async & await في لغة دارت (Dart)
شارك

خدماتنا البرمجية – عرب فلاتر🚀

خدماتنا البرمجية – عرب فلاتر

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

المحتويات
فهم البرمجة الغير متزامنةاستخدام كلمتي async و awaitالتعامل مع الأخطاء

فهم البرمجة الغير متزامنة

في العديد من التطبيقات، هناك مهام تستغرق وقتًا طويلاً لإكمالها، مثل استرجاع البيانات من الشبكة أو قراءة من ملف. في السابق، كان المطورون يستخدمون التعامل مع الاستدعاءات أو الوعود (Callbacks/Promises) للتعامل مع هذه العمليات الغير متزامنة. ومع ذلك، يمكن أن تؤدي هذه الأساليب إلى تعقيد الكود وجعله صعب القراءة والصيانة.

تقدم لغة دارت حلاً أكثر أناقة مع كلمتي async و await. عندما يتم تحديد الدالة بأنها async، فإن ذلك يعني أنها ستقوم بعمل يستغرق وقتًا وسوف تعيد كائن Future يحتوي على نتيجة هذا العمل. بالمقابل، تسمح لنا كلمة await بإيقاف تنفيذ دالة async حتى يتم إكمال الـ Future المنتظر. وهذا يتيح لنا كتابة الكود الذي يبدو وكأنه متزامن ولكنه في الواقع غير متزامن.


استخدام كلمتي async و await

لتحديد دالة كغير متزامنة، نستخدم كلمة async قبل جسم الدالة. دعنا نلقي نظرة على مثال:

void main() {
  print("البدء");
  fetchData();
  print("النهاية");
}

void fetchData() async {
  String data = await fetchDataFromServer();
  print(data);
}

Future<String> fetchDataFromServer() {
  return Future.delayed(Duration(seconds: 2), () => "بيانات من الخادم");
}

في المثال أعلاه، لدينا دالة fetchData محددة بأنها async. تستدعي دالة fetchDataFromServer التي تعيد Future مع نتيجة مؤجلة. باستخدام كلمة await قبل استدعاء fetchDataFromServerتأخذ الدالة fetchData استراحة في تنفيذها حتى يكتمل الـ Future وتسترد النتيجة.

نتيجة الكود:

البدء
النهاية
بيانات من الخادم

كما ترون، على الرغم من أن دالة fetchDataFromServer تحتوي على تأخير لمدة 2 ثانية، إلا أن البرنامج لا يتوقف ويستمر في تنفيذ المهام الأخرى. وهذه هي قوة async و await في لغة دارت.


التعامل مع الأخطاء

التعامل مع الأخطاء هو جانب أساسي في البرمجة الغير متزامنة. توفر لغة دارت طريقة بسيطة للتعامل مع الأخطاء في الدوال الغير متزامنة باستخدام عبارات try-catch. دعنا نقوم بتعديل المثال السابق ليشمل التعامل مع الأخطاء:

void main() {
  print("البدء");
  fetchData();
  print("النهاية");
}

void fetchData() async {
  try {
    String data = await fetchDataFromServer();
    print(data);
  } catch (e) {
    print("خطأ: $e");
  }
}

Future<String> fetchDataFromServer() {
  return Future.delayed(Duration(seconds: 2), () {
    throw Exception("خطأ في الشبكة");
  });
}

في هذا المثال المعدلة، نقوم عمدًا بإلقاء استثناء داخل دالة fetchDataFromServer. عبارات try-catch في الدالة fetchData تمتلك الاستثناء وتقوم بطباعة رسالة الخطأ.

نتيجة الكود:

البدء
النهاية
خطأ: Exception: خطأ في الشبكة

من خلال استخدام عبارات try-catch، يمكننا التعامل بسهولة مع الأخطاء ومنعها من تعطيل تطبيقنا.


عبارات async و await في لغة دارت توفر طريقة قوية وقابلة للقراءة للتعامل مع العمليات الغير متزامنة. من خلال تحديد الدوال بأنها async واستخدام كلمة await، يمكننا كتابة كود يبدو متزامنًا وفعليًا يقوم بالمهام الغير متزامنة بكفاءة. بالإضافة إلى ذلك، تتيح لنا لغة دارت التعامل مع الأخطاء في الدوال الغير متزامنة باستخدام عبارات try-catch، مما يضمن تعامل قوي وموثوق به للأخطاء في تطبيقاتنا.

 

Arab Flutter Community 🚀

انضم إلى مجتمع Arab Flutter
شارك هذا المقال
فيسبوك تويتر Whatsapp Whatsapp لينكد ان تلغرام نسخ الرابط
المقال السابق شرح مفهوم الـ Future في لغة دارت (Future In Dart) الدرس 55: شرح مفهوم الـ Future في لغة دارت (Future In Dart)
المقال التالي شرح الـ Stream في لغة دارت (Stream in Dart) الدرس 57: شرح الـ Stream في لغة دارت (Stream in Dart)
Avatar of عبدالله يوسف
بواسطة عبدالله يوسف Founder and CEO at ArabFlutter
تابع:
أنا عبدالله يوسف، مهندس مصري ومؤسس موقع عرب فلاتر، ملهم بشغف التكنولوجيا والإبداع. كمصمم مواقع ومبرمج تطبيقات موبايل باستخدام Flutter، أستمتع بخلق عوالم رقمية فريدة ومبتكرة. تتجلى مواهبي في تصميم وتطوير واجهات مستخدم تفاعلية، حيث يمزج الجانب الجمالي بالدقة الهندسية. ما يميزني هو إلمامي الواسع بتقنيات البرمجة والتصميم، ومقدرتي على تطوير تطبيقات متنوعة عبر منصات مختلفة. أعتبر نفسي مبدعًا وملتزمًا، حيث أسعى دائمًا لتحقيق تحسين مستمر في مهاراتي وتقنياتي. أستمتع بتحديات العمل الجماعي وأؤمن بأهمية الابتكار والتطور. بفضل إبداعي والتزامي، أسعى لتقديم حلول فعّالة تلبي توقعات العملاء وتفوق عن المألوف.
اترك تعليقا اترك تعليقا

اترك تعليقاً إلغاء الرد

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا
شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا
Tutorials
حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر
حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر
Tutorials
أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات
أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات
Tutorials
طريقة انشاء المجلدات باستخدام Dart
طريقة انشاء المجلدات باستخدام كود Dart تلقائيًا
Tutorials

مقالات ذات الصلة

اطلع على المزيد من المقالات المتعلقة بهذا الموضوع!
شرح العوازل في لغة دارت (Isolates in Dart)
Dart

شرح العوازل في لغة دارت (Isolates in Dart)

8
شرح الـ Stream في لغة دارت (Stream in Dart)
Dart

الدرس 57: شرح الـ Stream في لغة دارت (Stream in Dart)

8
شرح مفهوم الـ Future في لغة دارت (Future In Dart)
Dart

الدرس 55: شرح مفهوم الـ Future في لغة دارت (Future In Dart)

6
شرح مفهوم الـ Asynchronous في لغة دارت (Dart)
Dart

الدرس 54: شرح مفهوم الـ Asynchronous في لغة دارت (Dart)

5
10 تمارين محلولة على Null Safety في لغة دارت Dart
Dart

الدرس 53: 10 تمارين محلولة على Null Safety في لغة دارت Dart

5
شرح كلمة Late في لغة دارت (Late in Dart)
Dart

الدرس 52: شرح كلمة Late في لغة دارت (Late in Dart)

8
أظهر المزيد
شعار موقع عرب فلاتر شعار موقع عرب فلاتر

About US

Quick Links

  • خدماتنا
  • من نحن
  • اتصل بنا
  • اتفاقية استخدام
  • سياسة الخصوصية
© جميع الحقوق محفوظة موقع عرب فلاتر 2023
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
adbanner
تم اكتشاف مانع إعلانات
مرحبًا، يرجى إيقاف مانع الإعلانات. الإعلانات تُساهم في دعم موقعنا وتغطية جزء من تكاليف الاستضافة وتطوير المحتوى. شكرًا لتفهمك ودعمك.
Okay, I'll Whitelist
Welcome Back!

Sign in to your account

هل نسيت كلمة المرور؟