# Dart i Maguyva: kodegrafer til Flutter- og Dart-apps

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

## Øjebliksbillede af understøttelse

- Niveau: AST- og symbolunderstøttelse
- Programmering
- Filendelser: .dart
- Rigtig AST-parsing til syntaksbevidst søgning og strukturel kontekst.
- Navngivne symboler understøtter semantisk opslag og krydsreferencer. Grafnavigation er tilgængelig, når relationsudtræk er aktiveret.
- Dette sprog bidrager med symboler og relationer til grafbaseret søgning; de understøttede kanttyper varierer med sprogets egne konstruktioner.
- Både AST-parsing og symboludtræk er tilgængelige.

## Bedst egnet til

- Flutter-apps, hvor widgets, tilstandsklasser, repositories og services kalder hinanden på tværs af mange filer.
- Dart-pakker, der bruger mixins og extension-metoder til at tilføje adfærd til typer, som er defineret andetsteds.
- Dart på serveren og i kommandolinjen, som deler modeller med en Flutter-klient.

## Agent-arbejdsgange

- Finde alle kaldere af en repository- eller servicemetode, før dens API ændres.
- Liste hvilke klasser der implementerer et interface, før det får et nyt medlem.
- Spore hvordan et tryk i en widget når netværkslaget.

## Hvor Dart får overfladiske AI-værktøjer til at snuble

Dart spreder én type ud over flere konstruktioner. En klasse kan arve fra én basisklasse, implementere flere interfaces og blande adfærd ind fra mixins via `with`. Extension-metoder hæfter medlemmer på typer, der er defineret andetsteds, og navngivne konstruktører og `factory`-konstruktører skjuler, hvilken klasse der faktisk bygges. Tekstsøgning finder navnene, men ikke strukturen bag dem.

Maguyva giver agenten den struktur, så den kan følge en ændring fra en widget til den service, den afhænger af.

## Hvad Maguyva udtrækker i Dart

Maguyva dækker `.dart`-filer. Klasser, mixins og extensions udtrækkes som typer. Presettet `functions` i `structural_search` dækker funktioner, metoder, lokale funktioner, lambdaer samt generative, `const`- og `factory`-konstruktører. Signaturer registrerer valgfrie positionelle og navngivne parametergrupper og `static`-medlemmer, og definitionsnavne mister et afsluttende `?` eller `!`.

Imports normaliserer `import`-, `part`- og `library`-direktiver og fjerner deres `show`-, `hide`- og `as`-led. Et kald via et importpræfiks, som `http.get` efter `import 'package:http/http.dart' as http`, bliver i grafen.

Modtagertypningen følger parametre, typede og initialiserede variabler, gettere og `for`-`in`-løkker over lister, mængder og itererbare objekter og behandler `var` og `dynamic` som udledte typer. `extends`-, `implements`- og `with`-led følges, når nedarvede medlemmer slås op. Grafen registrerer også instansiering, typereferencer, læsninger og skrivninger samt undtagelseskanter.

## Eksempler på prompts til agenter

- "Hvem kalder `CartRepository.addItem`, og fra hvilke widgets?" (`find_symbol`, derefter `dependency_search` incoming)
- "Hvilke klasser implementerer `PaymentGateway`?" (`dependency_search`)
- "Spor hvordan betalingsknappen når betalings-API'et." (`get_task_context`)

## Kendte begrænsninger

- Omkring 200 navne fra Darts kernebiblioteker filtreres fra relationerne, bl.a. samlingshjælpere som `map`, `where` og `forEach`, metoder på `Future` og `Stream` som `then` og `listen` samt `dart:`-bibliotekerne. Brug `text_pattern_search` til dem.
- Darts signaturnoder har kroppen som søskendenode, så i `structural_search`-resultater kan en lokal funktion eller lambda overlappe den kaldbare enhed, der indeholder den, og gettere og settere vises som metodesignaturer.

## Næste skridt

Tilslut et repository med [hurtigstarten](/da/docs/quickstart), og se derefter understøttelsesmatricen på [kompatibilitetssiden](/da/docs/compatibility). For andre mobile kodebaser kan du læse [guiden til Kotlin](/da/languages/kotlin) og [guiden til Swift](/da/languages/swift).

## Motordetaljer

- Dart-understøttelsen dækker `.dart`. Klasser, mixins og extensions er typer, og konstruktører omfatter generative, `const`- og `factory`-former.
- Imports normaliserer `import`-, `part`- og `library`-direktiver, og kald via et importpræfiks bliver i grafen.
- Modtagertypningen følger parametre, variabler, gettere og `for`-`in`-løkker, og omkring 200 navne fra kernebibliotekerne filtreres fra relationerne.

## Nyttige MCP-indgange

- `find_symbol`: Brug det til en widget-, repository- eller serviceklasse, når du har brug for definitionen og referencerne.
- `dependency_search`: Brug incoming-traversering på en repository-metode eller et interface for at se kaldere og implementeringer før en API-ændring.
- `get_task_context`: Brug det til prompts som "spor hvordan betalingsknappen når betalings-API'et".
