# Dart στο Maguyva: γράφοι κώδικα για εφαρμογές Flutter και Dart

Canonical source: https://maguyva.ai/el/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 να ακολουθούν κλάσεις, mixin, επεκτάσεις και κατασκευαστές σε κώδικα Flutter και Dart.

## Στιγμιότυπο υποστήριξης

- Επίπεδο: Υποστήριξη AST και συμβόλων
- Προγραμματισμός
- Επεκτάσεις: .dart
- Πραγματική ανάλυση AST για αναζήτηση με επίγνωση σύνταξης και δομικό πλαίσιο.
- Τα επώνυμα σύμβολα τροφοδοτούν τη σημασιολογική αναζήτηση και τη διασταύρωση αναφορών. Η πλοήγηση στον γράφο είναι διαθέσιμη όταν είναι ενεργοποιημένη η εξαγωγή σχέσεων.
- Αυτή η γλώσσα συνεισφέρει σύμβολα και σχέσεις στην αναζήτηση με επίγνωση του γράφου· οι υποστηριζόμενοι τύποι ακμών διαφέρουν ανάλογα με τις εγγενείς δομές της.
- Διατίθενται τόσο ανάλυση AST όσο και εξαγωγή συμβόλων.

## Ιδανική χρήση

- Εφαρμογές Flutter όπου γραφικά στοιχεία, κλάσεις κατάστασης, αποθετήρια και υπηρεσίες καλούν το ένα το άλλο σε πολλά αρχεία.
- Πακέτα Dart που προσθέτουν συμπεριφορά μέσω mixin και μεθόδων επέκτασης σε τύπους που ορίζονται αλλού.
- Κώδικας Dart για διακομιστή και γραμμή εντολών που μοιράζεται μοντέλα με έναν πελάτη Flutter.

## Ροές εργασίας πρακτόρων

- Εύρεση όλων των καλούντων μιας μεθόδου αποθετηρίου ή υπηρεσίας πριν αλλάξει το API της.
- Καταγραφή των κλάσεων που υλοποιούν μια διεπαφή πριν προστεθεί νέο μέλος.
- Ανίχνευση του πώς ένα πάτημα σε γραφικό στοιχείο φτάνει στο επίπεδο δικτύου.

## Πού σκοντάφτουν τα επιφανειακά εργαλεία AI στη Dart

Η Dart απλώνει έναν τύπο σε πολλές κατασκευές. Μια κλάση μπορεί να κληρονομεί από μία βασική κλάση, να υλοποιεί πολλές διεπαφές και να αναμειγνύει συμπεριφορά από mixin μέσω `with`. Οι μέθοδοι επέκτασης προσθέτουν μέλη σε τύπους που ορίζονται αλλού, ενώ οι επώνυμοι κατασκευαστές και οι κατασκευαστές `factory` κρύβουν ποια κλάση δημιουργείται στην πράξη. Η αναζήτηση κειμένου βρίσκει τα ονόματα, όχι τη δομή πίσω τους.

Το Maguyva δίνει αυτή τη δομή στον πράκτορα, ώστε να ακολουθήσει μια αλλαγή από ένα γραφικό στοιχείο έως την υπηρεσία από την οποία εξαρτάται.

## Τι εξάγει το Maguyva από τη Dart

Το Maguyva καλύπτει αρχεία `.dart`. Οι κλάσεις, τα mixin και οι επεκτάσεις εξάγονται ως τύποι. Η προεπιλογή `functions` στο `structural_search` καλύπτει συναρτήσεις, μεθόδους, τοπικές συναρτήσεις, lambda και γενετικούς κατασκευαστές, καθώς και κατασκευαστές `const` και `factory`. Οι υπογραφές καταγράφουν ομάδες προαιρετικών θεσιακών και επώνυμων παραμέτρων και μέλη `static`· τα επιθήματα `?` και `!` αφαιρούνται από τα ονόματα ορισμών.

Οι εισαγωγές κανονικοποιούν τις οδηγίες `import`, `part` και `library` και απορρίπτουν τους όρους `show`, `hide` και `as`. Μια κλήση μέσω προθέματος εισαγωγής, όπως `http.get` μετά από `import 'package:http/http.dart' as http`, παραμένει στον γράφο.

Η τυποποίηση δέκτη παρακολουθεί παραμέτρους, μεταβλητές με δηλωμένο τύπο ή αρχικοποίηση, getter και βρόχους `for`-`in` σε λίστες, σύνολα και επαναλήψιμα· τα `var` και `dynamic` θεωρούνται συναγόμενοι τύποι. Κατά την επίλυση κληρονομημένων μελών ακολουθούνται οι όροι `extends`, `implements` και `with`. Ο γράφος καταγράφει επίσης δημιουργία στιγμιοτύπων, αναφορές τύπων, αναγνώσεις και εγγραφές, καθώς και ακμές εξαιρέσεων.

## Παραδείγματα προτροπών για πράκτορες

- «Ποιος καλεί το `CartRepository.addItem` και από ποια γραφικά στοιχεία;» (`find_symbol`, μετά `dependency_search` με εισερχόμενη κατεύθυνση)
- «Ποιες κλάσεις υλοποιούν το `PaymentGateway`;» (`dependency_search`)
- «Ακολούθησε πώς το κουμπί ολοκλήρωσης αγοράς φτάνει στο API πληρωμών.» (`get_task_context`)

## Γνωστοί περιορισμοί

- Περίπου 200 ονόματα από τις βασικές βιβλιοθήκες της Dart φιλτράρονται από τις σχέσεις, μεταξύ τους βοηθητικά συλλογών όπως `map`, `where` και `forEach`, μέθοδοι των `Future` και `Stream` όπως `then` και `listen`, και οι βιβλιοθήκες `dart:`. Για αυτά χρησιμοποιήστε το `text_pattern_search`.
- Οι κόμβοι υπογραφής της Dart κρατούν το σώμα ως αδελφό κόμβο, οπότε στα αποτελέσματα του `structural_search` μια τοπική συνάρτηση ή lambda μπορεί να επικαλύπτει την καλέσιμη μονάδα που την περιέχει, και οι getter και setter εμφανίζονται ως υπογραφές μεθόδων.

## Επόμενα βήματα

Συνδέστε ένα αποθετήριο με τον [γρήγορο οδηγό εκκίνησης](/el/docs/quickstart) και έπειτα δείτε τον πίνακα υποστήριξης στη [σελίδα συμβατότητας](/el/docs/compatibility). Για άλλες βάσεις κώδικα κινητών, διαβάστε τον [οδηγό για την Kotlin](/el/languages/kotlin) και τον [οδηγό για τη Swift](/el/languages/swift).

## Λεπτομέρειες μηχανής

- Η υποστήριξη της Dart καλύπτει αρχεία `.dart`. Οι κλάσεις, τα mixin και οι επεκτάσεις είναι τύποι· οι κατασκευαστές περιλαμβάνουν γενετικές μορφές, `const` και `factory`.
- Οι εισαγωγές κανονικοποιούν τις οδηγίες `import`, `part` και `library`· οι κλήσεις μέσω προθέματος εισαγωγής παραμένουν στον γράφο.
- Η τυποποίηση δέκτη παρακολουθεί παραμέτρους, μεταβλητές, getter και βρόχους `for`-`in`· περίπου 200 ονόματα βασικών βιβλιοθηκών φιλτράρονται από τις σχέσεις.

## Χρήσιμα σημεία εισόδου MCP

- `find_symbol`: Χρησιμοποιήστε το για μια κλάση γραφικού στοιχείου, αποθετηρίου ή υπηρεσίας όταν χρειάζεστε τον ορισμό και τις αναφορές.
- `dependency_search`: Χρησιμοποιήστε εισερχόμενη διάσχιση σε μια μέθοδο αποθετηρίου ή διεπαφή για να δείτε καλούντες και υλοποιήσεις πριν αλλάξετε ένα API.
- `get_task_context`: Χρησιμοποιήστε το για προτροπές όπως «ακολούθησε πώς το κουμπί ολοκλήρωσης αγοράς φτάνει στο API πληρωμών».
