اذهب إلى المحتوى

السؤال

نشر (معدل)

flutter : هل ال await  تقوم بإيقاف البرنامج بالكامل 

يعني هل لما اكتب await  رح يوقف البرنامج بالكامل حتى يتم تنفيذ الامر ولا انه لا يتوقف البرنامج ويكمل عادي و خلال عمله يتم تنفيذ ال await 

وشكرا 

و اعتذر عن عدم و ضوح السؤال و العنوان

 

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال

Recommended Posts

  • 1
نشر

عند استخدام الكلمة المفتاحية "await" في Flutter، فإنها لا تقوم بإيقاف البرنامج بالكامل، ولكنها توقف تنفيذ الدالة الحالية المستدعاة حتى يتم استرداد القيمة المتوقعة من العملية الغير متزامنة التي تم استدعاؤها. ويستمر تنفيذ البرنامج في الخلفية خلال فترة الانتظار.

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

بشكل عام، يمكن القول إن استخدام "await" في Flutter يساعد على تنظيم تنفيذ البرنامج وتفادي حدوث المشاكل والأخطاء التي قد تنجم عن تنفيذ العمليات الثقيلة بشكل متزامن.
 

شرح بسيط لأستخدام  Await :

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

في الأساس، يتم استخدام "await" مع دوال تعيد Future في Flutter، وتسمى هذه الدوال بـ "Future Functions". Future هو نوع البيانات الذي يتم استخدامه لإرجاع القيم المستردة من العمليات الغير متزامنة. عند استخدام "await" مع Future Function، يتم إيقاف تنفيذ الدالة الحالية حتى يتم الانتهاء من العملية الغير متزامنة، ويتم استرداد القيمة المتوقعة.

فيما يلي مثال على كيفية استخدام "await" في Flutter:

Future<String> fetchData() async {
  await Future.delayed(Duration(seconds: 2)); // عملية غير متزامنة تأخذ 2 ثانية للإنتهاء
  return "تم الحصول على البيانات";
}

void main() async {
  print("بدء العملية");
  String data = await fetchData();
  print(data);
  print("انتهاء العملية");
}

في هذا المثال، يتم استخدام "await" مع دالة fetchData() التي تعيد Future<String>. تأخذ هذه الدالة عملية غير متزامنة باستخدام Future.delayed()، والتي تستغرق 2 ثانية للإنتهاء. عندما يتم استدعاء الدالة main()، يتم طباعة "بدء العملية"، ثم يتم استدعاء fetchData() باستخدام "await" ويتم إيقاف تنفيذ الدالة الحالية حتى يتم الانتهاء من العملية الغير متزامنة، ويتم استرداد القيمة المتوقعة. بعد ذلك، يتم طباعة القيمة المستردة و "انتهاء العملية".

باستخدام "await" في Flutter، يمكن تحسين أداء التطبيق وتجنب حدوث مشاكل في التنفيذ.
بالتوفيق.

  • 0
نشر

Await في Flutter هي كلمة مفتاحية تستخدم مع العمليات الغير متزامنة أو العمليات الثقيلة التي لا يمكن تنفيذها بشكل فوري.

ويتم استخدام Await في Flutter لتحسين أداء التطبيق وتجنب حدوث مشاكل في التنفيذ، حيث تستخدمات Await مع دوال تعيد Future في Flutter، وتسمى هذه الدوال بـ "Future Functions".

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

مثلاً، إذا كان لدينا دالة fetchData() التي تقوم بجلب بيانات من API وتعيد Future، يمكننا استخدام await لجلب البيانات وإظهارها في واجهة المستخدم كما يلي:

Future<void> fetchData() async {
  // جلب البيانات من API
  final response = await http.get(Uri.parse('https://example.com/api/data'));
  
  // تحويل بيانات الاستجابة إلى قائمة من العناصر
  final data = jsonDecode(response.body) as List<dynamic>;
  
  // إظهار البيانات في واجهة المستخدم
  setState(() {
    _data = data;
  });
}

وتستطيع استخدام await مع أي دالة تعيد Future في Flutter، مثل دوال تعيد Future من نوع SharedPreferences و AnimationController. 

مثال آخر:

 إذا كان لدينا طريقة لاستدعاء ملف JSON من الإنترنت باستخدام حزمة http في Flutter ، فتستطيع استخدام await لإيقاف تنفيذ الكود حتى يتم جلب الملف:

import 'package:http/http.dart' as http;

Future<String> fetchJson() async {
  final response = await http.get(Uri.parse('https://example.com/data.json'));

  if (response.statusCode == 200) {
    return response.body;
  } else {
    throw Exception('Failed to load data');
  }
}

تعود الدالة fetchJson بـ Future<String> ، وتستخدم http.get() لجلب بيانات JSON من URL.

بعد ذلك ، نستخدم await لإيقاف تنفيذ الكود حتى يتم جلب الملف.

إذا كانت الاستجابة من الملقم بنجاح (مثلاً ،رمز الاستجابة 200) ، فستعود الدالة بـ response.body (الجسم الخاص بالاستجابة) كنص String ، وإلا سيتم تنفيذ Exception.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...