# لغة Dart في Maguyva: رسوم بيانية للشيفرة في تطبيقات Flutter وDart

Canonical source: https://maguyva.ai/ar/languages/dart

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

يدعم Maguyva لغة Dart بشجرة AST والرموز والرسم البياني، ليتمكن وكلاء الذكاء الاصطناعي من تتبّع الفئات وmixins والامتدادات والمُنشِئات في شيفرة Flutter وDart.

## لمحة عن الدعم

- المستوى: دعم AST والرموز
- البرمجة
- الامتدادات: .dart
- تحليل AST حقيقي لبحث واعٍ بالصياغة النحوية وسياق بنيوي.
- تُغذّي الرموز المسمّاة البحث الدلالي والمراجع المتقاطعة. ويتوفر التنقل عبر الرسم البياني عند تمكين استخراج العلاقات.
- تُسهم هذه اللغة بالرموز والعلاقات في البحث المراعي لبنية الرسم البياني؛ وتختلف أنواع الحواف المدعومة بحسب التراكيب الأصلية في اللغة.
- يتوفر كل من تحليل AST واستخلاص الرموز.

## الأنسب لـ

- تطبيقات Flutter التي تستدعي فيها عناصر الواجهة وفئات الحالة والمستودعات والخدمات بعضها بعضًا عبر ملفات كثيرة.
- حزم Dart التي تستخدم mixins وتوابع الامتداد لإضافة سلوك إلى أنواع معرّفة في مكان آخر.
- شيفرة Dart على الخادم وفي سطر الأوامر التي تشارك النماذج مع عميل Flutter.

## سير عمل الوكلاء

- العثور على كل مستدعٍ لتابع في مستودع أو خدمة قبل تغيير واجهته البرمجية.
- سرد الفئات التي تنفّذ واجهة قبل إضافة عضو إليها.
- تتبّع كيف تصل نقرة في عنصر واجهة إلى طبقة الشبكة.

## أين تُربك Dart أدوات الذكاء الاصطناعي السطحية

توزّع Dart النوع الواحد على عدة بنى. يمكن للفئة أن ترث من فئة أساس واحدة، وأن تنفّذ عدة واجهات، وأن تمزج سلوكًا عبر `with` مع mixins. وتُلحق توابع الامتداد أعضاءً بأنواع معرّفة في مكان آخر، بينما تُخفي المُنشِئات المسمّاة ومُنشِئات `factory` أيّ فئة تُبنى فعلًا. يجد البحث النصي الأسماء، لكنه لا يجد البنية التي خلفها.

يمنح Maguyva الوكيل تلك البنية، فيستطيع تتبّع التغيير من عنصر الواجهة إلى الخدمة التي يعتمد عليها.

## ما الذي يستخرجه Maguyva من Dart

يغطي Maguyva ملفات `.dart`. تُستخرج الفئات وmixins والامتدادات بوصفها أنواعًا. ويغطي الإعداد المسبق `functions` في `structural_search` الدوال والتوابع والدوال المحلية وتعابير lambda، إضافة إلى المُنشِئات التوليدية ومُنشِئات `const` و`factory`. وتسجّل التواقيع مجموعات المعاملات الموضعية والمسمّاة الاختيارية والأعضاء `static`، وتُحذف من أسماء التعريفات اللاحقتان `?` و`!`.

توحّد عمليات الاستيراد توجيهات `import` و`part` و`library` وتحذف منها عبارات `show` و`hide` و`as`. ويبقى في الرسم البياني الاستدعاء عبر بادئة استيراد، مثل `http.get` بعد `import 'package:http/http.dart' as http`.

يتتبّع تحديد نوع المستقبِل المعاملات، والمتغيرات ذات النوع المحدد أو المُهيّأة، ودوال الجلب، وحلقات `for`-`in` على القوائم والمجموعات والكائنات القابلة للتكرار، ويعامل `var` و`dynamic` بوصفهما نوعين مُستنتَجين. وعند تحليل الأعضاء الموروثة تُتتبّع عبارات `extends` و`implements` و`with`. ويسجّل الرسم البياني أيضًا إنشاء النُسخ ومراجع الأنواع والقراءة والكتابة وحواف الاستثناءات.

## أمثلة على مطالبات الوكلاء

- "من يستدعي `CartRepository.addItem`، ومن أي عناصر واجهة؟" (`find_symbol` ثم `dependency_search` في الاتجاه الوارد)
- "ما الفئات التي تنفّذ `PaymentGateway`؟" (`dependency_search`)
- "تتبّع كيف يصل زر الدفع إلى واجهة المدفوعات البرمجية." (`get_task_context`)

## القيود المعروفة

- يُستبعد من العلاقات نحو 200 اسم من مكتبات Dart الأساسية، منها أدوات المجموعات المساعدة مثل `map` و`where` و`forEach`، وتوابع `Future` و`Stream` مثل `then` و`listen`، ومكتبات `dart:`. استخدم `text_pattern_search` لها.
- تحتفظ عُقد التواقيع في Dart بجسم الدالة بوصفه عقدة شقيقة، لذا قد تتداخل في نتائج `structural_search` دالة محلية أو تعبير lambda مع الكيان القابل للاستدعاء الذي يحتويه، وتظهر دوال الجلب والتعيين بوصفها تواقيع توابع.

## الخطوات التالية

اربط مستودعًا عبر [دليل البدء السريع](/ar/docs/quickstart)، ثم راجع مصفوفة الدعم في [صفحة التوافق](/ar/docs/compatibility). ولقواعد شيفرة الأجهزة المحمولة الأخرى، اقرأ [دليل لغة Kotlin](/ar/languages/kotlin) و[دليل لغة Swift](/ar/languages/swift).

## تفاصيل المحرك

- يغطي دعم Dart الملفات `.dart`. الفئات وmixins والامتدادات أنواع، وتشمل المُنشِئات الصيغ التوليدية و`const` و`factory`.
- توحّد عمليات الاستيراد توجيهات `import` و`part` و`library`، وتبقى في الرسم البياني الاستدعاءات عبر بادئة استيراد.
- يتتبّع تحديد نوع المستقبِل المعاملات والمتغيرات ودوال الجلب وحلقات `for`-`in`، ويُستبعد من العلاقات نحو 200 اسم من المكتبات الأساسية.

## نقاط دخول مفيدة عبر MCP

- `find_symbol`: استخدمه لفئة عنصر واجهة أو مستودع أو خدمة عندما تحتاج إلى التعريف والمراجع.
- `dependency_search`: استخدم الاجتياز الوارد على تابع مستودع أو واجهة لرؤية المستدعين والمنفّذين قبل تغيير الواجهة البرمجية.
- `get_task_context`: استخدمه لمطالبات مثل "تتبّع كيف يصل زر الدفع إلى واجهة المدفوعات البرمجية".
