# Dart i Maguyva: kodegrafer for Flutter- og Dart-apper

Canonical source: https://maguyva.ai/nb/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 støtter Dart med AST, symboler og graf, slik at AI-agenter kan følge klasser, mixins, extensions og konstruktører i Flutter- og Dart-kode.

## Støtteoversikt

- Nivå: AST- og symbolstøtte
- Programmering
- Filendelser: .dart
- Ekte AST-analyse for syntaksbevisst søk og strukturell kontekst.
- Navngitte symboler mater semantisk oppslag og kryssreferanser. Grafnavigasjon er tilgjengelig når relasjonsuttrekk er aktivert.
- Dette språket bidrar med symboler og relasjoner til grafbasert søk; støttede kanttyper varierer med språkets egne konstruksjoner.
- Både AST-analyse og symboluttrekk er tilgjengelige.

## Best egnet

- Flutter-apper der widgets, tilstandsklasser, repositorier og tjenester kaller hverandre på tvers av mange filer.
- Dart-pakker som bruker mixins og extension-metoder til å legge atferd på typer som er definert et annet sted.
- Dart på serversiden og kommandolinjen som deler modeller med en Flutter-klient.

## Agent-arbeidsflyter

- Finne alle kallere av en repository- eller tjenestemetode før API-et endres.
- Liste hvilke klasser som implementerer et grensesnitt før det får et nytt medlem.
- Spore hvordan et trykk i en widget når nettverkslaget.

## Der Dart får overfladiske AI-verktøy til å snuble

Dart sprer én type over flere konstruksjoner. En klasse kan arve fra én baseklasse, implementere flere grensesnitt og blande inn atferd fra mixins via `with`. Extension-metoder fester medlemmer til typer som er definert et annet sted, og navngitte konstruktører og `factory`-konstruktører skjuler hvilken klasse som faktisk bygges. Tekstsøk finner navnene, men ikke strukturen bak dem.

Maguyva gir agenten den strukturen, slik at den kan følge en endring fra en widget til tjenesten den er avhengig av.

## Hva Maguyva henter ut i Dart

Maguyva dekker `.dart`-filer. Klasser, mixins og extensions hentes ut som typer. Presetet `functions` i `structural_search` dekker funksjoner, metoder, lokale funksjoner, lambdaer og generative, `const`- og `factory`-konstruktører. Signaturer registrerer valgfrie posisjonelle og navngitte parametergrupper og `static`-medlemmer, og definisjonsnavn mister en avsluttende `?` eller `!`.

Importer normaliserer `import`-, `part`- og `library`-direktiver og fjerner `show`-, `hide`- og `as`-leddene. Et kall via et importprefiks, som `http.get` etter `import 'package:http/http.dart' as http`, blir værende i grafen.

Mottakertypingen følger parametere, typede og initialiserte variabler, gettere og `for`-`in`-løkker over lister, mengder og itererbare objekter, og behandler `var` og `dynamic` som utledede typer. `extends`-, `implements`- og `with`-ledd følges når arvede medlemmer slås opp. Grafen registrerer også instansiering, typereferanser, lesinger og skrivinger og unntakskanter.

## Eksempler på prompter for agenter

- «Hvem kaller `CartRepository.addItem`, og fra hvilke widgets?» (`find_symbol`, deretter `dependency_search` incoming)
- «Hvilke klasser implementerer `PaymentGateway`?» (`dependency_search`)
- «Spor hvordan kasseknappen når betalings-API-et.» (`get_task_context`)

## Kjente begrensninger

- Rundt 200 navn fra Darts kjernebiblioteker filtreres bort fra relasjonene, blant annet samlingshjelpere som `map`, `where` og `forEach`, metoder på `Future` og `Stream` som `then` og `listen`, og `dart:`-bibliotekene. Bruk `text_pattern_search` for dem.
- Darts signaturnoder har kroppen som søskennode, så i `structural_search`-resultater kan en lokal funksjon eller lambda overlappe den kallbare enheten som inneholder den, og gettere og settere vises som metodesignaturer.

## Neste steg

Koble til et repositorium med [hurtigstarten](/nb/docs/quickstart), og se deretter støttematrisen på [kompatibilitetssiden](/nb/docs/compatibility). For andre mobile kodebaser bør du lese [veiledningen for Kotlin](/nb/languages/kotlin) og [veiledningen for Swift](/nb/languages/swift).

## Motordetaljer

- Dart-støtten dekker `.dart`. Klasser, mixins og extensions er typer, og konstruktører omfatter generative, `const`- og `factory`-former.
- Importer normaliserer `import`-, `part`- og `library`-direktiver, og kall via et importprefiks blir værende i grafen.
- Mottakertypingen følger parametere, variabler, gettere og `for`-`in`-løkker, og rundt 200 navn fra kjernebibliotekene filtreres bort fra relasjonene.

## Nyttige MCP-inngangspunkter

- `find_symbol`: Bruk det for en widget-, repository- eller tjenesteklasse når du trenger definisjonen og referansene.
- `dependency_search`: Bruk incoming-traversering på en repository-metode eller et grensesnitt for å se kallere og implementasjoner før en API-endring.
- `get_task_context`: Bruk det for prompter som «spor hvordan kasseknappen når betalings-API-et».
