# Maguyva में Dart: Flutter और Dart ऐप के लिए कोड ग्राफ़

Canonical source: https://maguyva.ai/hi/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, सिंबल और ग्राफ़ के साथ सपोर्ट करता है, ताकि AI एजेंट Flutter और Dart कोड में क्लास, मिक्सिन, एक्सटेंशन और कंस्ट्रक्टर को ट्रेस कर सकें।

## सपोर्ट स्नैपशॉट

- टियर: AST और सिंबल सपोर्ट
- प्रोग्रामिंग
- एक्सटेंशन: .dart
- सिंटैक्स-अवेयर सर्च और स्ट्रक्चरल कॉन्टेक्स्ट के लिए असली AST पार्सिंग।
- नामित सिंबल सिमेंटिक लुकअप और क्रॉस-रेफ़रेंस को फ़ीड करते हैं। रिलेशनशिप एक्सट्रैक्शन सक्षम होने पर ग्राफ़ नेविगेशन उपलब्ध होता है।
- यह भाषा ग्राफ़-अवेयर सर्च में सिंबल्स और रिलेशनशिप्स जोड़ती है; सपोर्टेड एज प्रकार इसके नेटिव कंस्ट्रक्ट्स के अनुसार बदलते हैं।
- AST पार्सिंग और सिंबल एक्सट्रैक्शन, दोनों उपलब्ध हैं।

## सबसे उपयुक्त

- ऐसे Flutter ऐप जिनमें विजेट, स्टेट क्लास, रिपॉज़िटरी और सर्विस कई फ़ाइलों में एक-दूसरे को कॉल करते हैं।
- ऐसे Dart पैकेज जो कहीं और घोषित टाइप में मिक्सिन और एक्सटेंशन मेथड के ज़रिए व्यवहार जोड़ते हैं।
- सर्वर-साइड और कमांड-लाइन Dart कोड जो किसी Flutter क्लाइंट के साथ मॉडल साझा करता है।

## एजेंट वर्कफ़्लो

- किसी रिपॉज़िटरी या सर्विस मेथड का API बदलने से पहले उसके सभी कॉलर ढूँढना।
- किसी इंटरफ़ेस में नया सदस्य जोड़ने से पहले उसे लागू करने वाली क्लास की सूची बनाना।
- यह ट्रेस करना कि विजेट पर एक टैप नेटवर्क लेयर तक कैसे पहुँचता है।

## Dart सतही AI टूल को कहाँ उलझाती है

Dart एक टाइप को कई संरचनाओं में फैला देती है। एक क्लास एक बेस क्लास से इनहेरिट कर सकती है, कई इंटरफ़ेस लागू कर सकती है और `with` के ज़रिए मिक्सिन से व्यवहार मिला सकती है। एक्सटेंशन मेथड कहीं और घोषित टाइप में सदस्य जोड़ते हैं, और नामित कंस्ट्रक्टर तथा `factory` कंस्ट्रक्टर यह छिपा देते हैं कि असल में कौन-सी क्लास बनाई जा रही है। टेक्स्ट सर्च नाम ढूँढ लेता है, पर उनके पीछे की संरचना नहीं।

Maguyva वह संरचना एजेंट को देता है, ताकि वह किसी बदलाव को विजेट से उस सर्विस तक ट्रेस कर सके जिस पर वह निर्भर है।

## Maguyva, Dart से क्या निकालता है

Maguyva `.dart` फ़ाइलों को कवर करता है। क्लास, मिक्सिन और एक्सटेंशन टाइप के रूप में निकाले जाते हैं। `structural_search` में `functions` प्रीसेट फ़ंक्शन, मेथड, लोकल फ़ंक्शन, लैम्ब्डा और जनरेटिव, `const` तथा `factory` कंस्ट्रक्टर को कवर करता है। सिग्नेचर वैकल्पिक पोज़िशनल और नामित पैरामीटर समूहों तथा `static` सदस्यों को दर्ज करते हैं; परिभाषा के नामों से `?` और `!` प्रत्यय हटा दिए जाते हैं।

इम्पोर्ट `import`, `part` और `library` निर्देशों को सामान्यीकृत करते हैं और `show`, `hide` तथा `as` क्लॉज़ हटा देते हैं। इम्पोर्ट प्रीफ़िक्स के ज़रिए होने वाला कॉल, जैसे `import 'package:http/http.dart' as http` के बाद `http.get`, ग्राफ़ में बना रहता है।

रिसीवर टाइपिंग पैरामीटर, घोषित टाइप वाले और इनिशियलाइज़ किए गए वेरिएबल, गेटर, और लिस्ट, सेट तथा इटरेबल पर `for`-`in` लूप को ट्रैक करती है; `var` और `dynamic` को अनुमानित टाइप माना जाता है। इनहेरिट किए गए सदस्यों को रिज़ॉल्व करते समय `extends`, `implements` और `with` क्लॉज़ का भी पालन किया जाता है। ग्राफ़ इंस्टैंशिएशन, टाइप रेफ़रेंस, रीड और राइट, और एक्सेप्शन एज भी दर्ज करता है।

## एजेंट प्रॉम्प्ट के उदाहरण

- "`CartRepository.addItem` को कौन कॉल करता है, और किन विजेट से?" (`find_symbol`, फिर `dependency_search` इनकमिंग)
- "कौन-सी क्लास `PaymentGateway` को लागू करती हैं?" (`dependency_search`)
- "ट्रेस करो कि चेकआउट बटन पेमेंट API तक कैसे पहुँचता है।" (`get_task_context`)

## ज्ञात सीमाएँ

- Dart की कोर लाइब्रेरी के लगभग 200 नाम संबंधों से फ़िल्टर किए जाते हैं, जिनमें `map`, `where` और `forEach` जैसे कलेक्शन हेल्पर, `then` और `listen` जैसे `Future` और `Stream` मेथड, और `dart:` लाइब्रेरी शामिल हैं। इनके लिए `text_pattern_search` इस्तेमाल करें।
- Dart के सिग्नेचर नोड बॉडी को सिबलिंग नोड के रूप में रखते हैं, इसलिए `structural_search` के नतीजों में कोई लोकल फ़ंक्शन या लैम्ब्डा अपने युक्त कॉलेबल पर चढ़ सकता है, और गेटर तथा सेटर मेथड सिग्नेचर के रूप में दिखते हैं।

## अगले कदम

[क्विकस्टार्ट](/hi/docs/quickstart) से रिपॉज़िटरी जोड़ें, फिर सपोर्ट मैट्रिक्स [कम्पैटिबिलिटी पेज](/hi/docs/compatibility) पर देखें। दूसरे मोबाइल कोडबेस के लिए [Kotlin गाइड](/hi/languages/kotlin) और [Swift गाइड](/hi/languages/swift) पढ़ें।

## इंजन विवरण

- Dart सपोर्ट `.dart` फ़ाइलों को कवर करता है। क्लास, मिक्सिन और एक्सटेंशन टाइप हैं; कंस्ट्रक्टर में जनरेटिव, `const` और `factory` रूप शामिल हैं।
- इम्पोर्ट `import`, `part` और `library` निर्देशों को सामान्यीकृत करते हैं; इम्पोर्ट प्रीफ़िक्स के ज़रिए होने वाले कॉल ग्राफ़ में बने रहते हैं।
- रिसीवर टाइपिंग पैरामीटर, वेरिएबल, गेटर और `for`-`in` लूप को ट्रैक करती है; लगभग 200 कोर लाइब्रेरी नाम संबंधों से फ़िल्टर किए जाते हैं।

## उपयोगी MCP एंट्री पॉइंट

- `find_symbol`: किसी विजेट, रिपॉज़िटरी या सर्विस क्लास के लिए इस्तेमाल करें जब आपको परिभाषा और रेफ़रेंस चाहिए।
- `dependency_search`: API बदलने से पहले कॉलर और लागू करने वालों को देखने के लिए किसी रिपॉज़िटरी मेथड या इंटरफ़ेस पर इनकमिंग ट्रैवर्सल इस्तेमाल करें।
- `get_task_context`: "ट्रेस करो कि चेकआउट बटन पेमेंट API तक कैसे पहुँचता है" जैसे प्रॉम्प्ट के लिए इस्तेमाल करें।
