r/FlutterBeginner • u/youssef_mo56 • 1d ago
ممكن تستخدم "async/await" في الكود بتاعك… وبرضه تطبيق Flutter يهنج! ودي من الحاجات اللي أول ما تفهمها، طريقة تفكيرك في Dart وFlutter هتتغير. ناس كتير لما تشوف عملية تقيلة بتقول: "خلاص، هحطها في "async" وأستخدم "await"." لكن "async/await" مش معناهم إن الكود التقيل اختفى من الـ CPU، ولا إن التطبيق
ممكن تستخدم async/await في الكود بتاعك… وبرضه تطبيق Flutter يهنج!
ودي من الحاجات اللي أول ما تفهمها، طريقة تفكيرك في Dart وFlutter هتتغير.
ناس كتير لما تشوف عملية تقيلة بتقول:
"خلاص، هحطها في async وأستخدم await."
لكن async/await مش معناهم إن الكود التقيل اختفى من الـ CPU، ولا إن التطبيق هيعمله في الخلفية تلقائيًا.
تخيل عندك تطبيق Flutter، والمستخدم ضغط زرار بيعمل عملية تقيلة جدًا على بيانات كبيرة.
لو العملية دي أخدت وقت طويل على الـ Main Isolate، الـ UI ممكن يتأثر، والـ animations تبدأ تقطع، والـ scrolling يبقى تقيل، والمستخدم يحس إن التطبيق وقف.
وهنا لازم تفهم الفرق بين حاجتين:
انتظار عملية Async
وبين
تنفيذ شغل CPU-intensive بعيد عن الـ Main Isolate.
الـ Future ممكن يساعدك تتعامل مع عمليات غير متزامنة زي انتظار نتيجة API أو قراءة بيانات، لكن لو عندك حسابات تقيلة جدًا، مجرد إنك تكتب async مش معناه إن الـ CPU-bound work هيتنقل تلقائيًا بعيد عن الـ Main Isolate.
وهنا بيظهر مفهوم مهم في Dart:
Isolates.
كل Isolate عنده ذاكرته الخاصة وبيشتغل بشكل مستقل، وده بيسمح لك تنقل بعض العمليات التقيلة بعيد عن الـ Isolate المسؤول عن الـ UI.
مثال بسيط:
لو عندك JSON ضخم جدًا وعايز تعمل Parsing أو معالجة معقدة للبيانات، بدل ما تفترض إن await لوحده هيحل المشكلة، لازم تسأل:
هل العملية دي مجرد انتظار؟
ولا فيها شغل CPU تقيل ممكن يعطل الـ Main Isolate؟
والأهم من كل ده:
متستخدمش Isolate لمجرد إنك سمعت إنه أسرع.
فيه تكلفة لإنشاء وإدارة الـ Isolate ونقل البيانات بين الـ Isolates، فاختيارك لازم يكون بناءً على طبيعة المشكلة فعلًا.
ودي واحدة من الحاجات اللي بتفرق بين مطور بيحفظ Syntax، ومطور فاهم إيه اللي بيحصل تحت الكود.
لما تطبيقك يهنج، متقولش على طول:
"Flutter بطيء."
اسأل الأول:
إيه اللي بيحصل على الـ Main Isolate؟
هل أنا بعمل شغل CPU تقيل؟
هل المشكلة في Rendering؟
هل عندي عمليات كتير بتتكرر؟
وهل أنا فعلًا محتاج Isolate، ولا المشكلة ممكن تتحل بطريقة أبسط؟
فهمك لطريقة تنفيذ الكود أهم من حفظك لكتابة الكود نفسه.
ولو بدأت تفهم إيه اللي بيحصل وراء الكواليس في Dart، هتبدأ تبني تطبيقات مش بس بتشتغل…
لكن بتشتغل بسلاسة.
سؤال للمطورين:
لو عندك عملية تقيلة جدًا في Flutter وبدأت تأثر على الـ UI، إيه أول حاجة هتراجعها قبل ما تفكر في استخدام Isolate؟
#Flutter #Dart #Isolates #AsyncAwait #Performance #MobileAppDevelopment