# Dart in Maguyva: grafi del codice per app Flutter e Dart

Canonical source: https://maguyva.ai/it/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 supporta Dart con AST, simboli e grafo, così gli agenti IA seguono classi, mixin, estensioni e costruttori nel codice Flutter e Dart.

## Istantanea del supporto

- Livello: Supporto AST e simboli
- Programmazione
- Estensioni: .dart
- Analisi AST reale per ricerca sintattica e contesto strutturale.
- I simboli nominati alimentano la ricerca semantica e i riferimenti incrociati. La navigazione del grafo è disponibile quando è abilitata l’estrazione delle relazioni.
- Questo linguaggio contribuisce con simboli e relazioni alla ricerca basata sul grafo; i tipi di arco supportati variano in base ai suoi costrutti nativi.
- Sono disponibili sia l’analisi AST sia l’estrazione dei simboli.

## Il più adatto per

- App Flutter in cui widget, classi di stato, repository e servizi si chiamano a vicenda attraverso molti file.
- Pacchetti Dart che usano mixin e metodi di estensione per aggiungere comportamento a tipi definiti altrove.
- Dart lato server e da riga di comando che condivide i modelli con un client Flutter.

## Workflow degli agenti

- Trovare tutti i chiamanti di un metodo di repository o di servizio prima di cambiarne l'API.
- Elencare quali classi implementano un'interfaccia prima di aggiungerle un membro.
- Tracciare come un tocco in un widget raggiunge il livello di rete.

## Dove Dart fa inciampare gli strumenti di IA superficiali

Dart distribuisce un solo tipo su più costrutti. Una classe può ereditare da una classe base, implementare più interfacce e incorporare comportamento dai mixin con `with`. I metodi di estensione aggiungono membri a tipi definiti altrove, e i costruttori con nome e `factory` nascondono quale classe viene davvero costruita. Una ricerca testuale trova i nomi, ma non la struttura che c'è dietro.

Maguyva dà all'agente quella struttura, così può seguire una modifica da un widget fino al servizio da cui dipende.

## Cosa estrae Maguyva in Dart

Maguyva copre i file `.dart`. Classi, mixin ed estensioni vengono estratti come tipi. Il preset `functions` di `structural_search` copre funzioni, metodi, funzioni locali, lambda e costruttori generativi, `const` e `factory`. Le firme registrano i gruppi di parametri posizionali e con nome opzionali e i membri `static`, e i nomi delle definizioni perdono il `?` o `!` finale.

Gli import normalizzano le direttive `import`, `part` e `library` ed eliminano le clausole `show`, `hide` e `as`. Una chiamata attraverso un prefisso di import, come `http.get` dopo `import 'package:http/http.dart' as http`, resta nel grafo.

La tipizzazione dei receiver segue parametri, variabili tipizzate e inizializzate, getter e cicli `for`-`in` su liste, insiemi e iterabili, e tratta `var` e `dynamic` come tipi inferiti. Per risolvere i membri ereditati vengono seguite le clausole `extends`, `implements` e `with`. Il grafo registra anche istanziazione, riferimenti di tipo, letture e scritture e archi di eccezione.

## Esempi di prompt per agenti

- "Chi chiama `CartRepository.addItem`, e da quali widget?" (`find_symbol`, poi `dependency_search` incoming)
- "Quali classi implementano `PaymentGateway`?" (`dependency_search`)
- "Traccia come il pulsante di checkout raggiunge l'API dei pagamenti." (`get_task_context`)

## Limiti noti

- Circa 200 nomi delle librerie core di Dart vengono filtrati dalle relazioni, tra cui helper per le collezioni come `map`, `where` e `forEach`, metodi di `Future` e `Stream` come `then` e `listen`, e le librerie `dart:`. Usa `text_pattern_search` per trovarli.
- I nodi di firma di Dart tengono il corpo come nodo fratello, quindi nei risultati di `structural_search` una funzione locale o una lambda può sovrapporsi al callable che la contiene, e getter e setter compaiono come firme di metodo.

## Prossimi passi

Collega un repository con la [guida rapida](/it/docs/quickstart), poi consulta la matrice di supporto nella [pagina di compatibilità](/it/docs/compatibility). Per altre basi di codice mobile, leggi la [guida a Kotlin](/it/languages/kotlin) e la [guida a Swift](/it/languages/swift).

## Dettagli del motore

- Il supporto a Dart copre `.dart`. Classi, mixin ed estensioni sono tipi, e i costruttori includono le forme generative, `const` e `factory`.
- Gli import normalizzano le direttive `import`, `part` e `library`, e le chiamate attraverso un prefisso di import restano nel grafo.
- La tipizzazione dei receiver segue parametri, variabili, getter e cicli `for`-`in`, e circa 200 nomi delle librerie core vengono filtrati dalle relazioni.

## Punti di ingresso MCP utili

- `find_symbol`: Usalo per una classe di widget, repository o servizio quando ti servono definizione e riferimenti.
- `dependency_search`: Usa l'attraversamento incoming su un metodo di repository o un'interfaccia per vedere chiamanti e implementazioni prima di cambiare un'API.
- `get_task_context`: Usalo per prompt come "traccia come il pulsante di checkout raggiunge l'API dei pagamenti".
