# Dart i Maguyva: kodgrafer för Flutter- och Dart-appar

Canonical source: https://maguyva.ai/sv/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öder Dart med AST, symboler och graf, så att AI-agenter kan följa klasser, mixins, extensions och konstruktorer i Flutter- och Dart-kod.

## Stödöversikt

- Nivå: Stöd för AST och symboler
- Programmering
- Filändelser: .dart
- Riktig AST-parsning för syntaxmedveten sökning och strukturell kontext.
- Namngivna symboler driver semantisk uppslagning och korsreferenser. Grafnavigering är tillgänglig när relationsextraktion är aktiverad.
- Det här språket bidrar med symboler och relationer till grafmedveten sökning; vilka kanttyper som stöds varierar med språkets inbyggda konstruktioner.
- Både AST-parsning och symbolextraktion är tillgängliga.

## Bäst lämpad för

- Flutter-appar där widgets, tillståndsklasser, repositories och tjänster anropar varandra över många filer.
- Dart-paket som använder mixins och extension-metoder för att lägga till beteende på typer som definieras någon annanstans.
- Dart på serversidan och kommandoraden som delar modeller med en Flutter-klient.

## Agentarbetsflöden

- Hitta alla anropare av en repository- eller tjänstemetod innan dess API ändras.
- Lista vilka klasser som implementerar ett gränssnitt innan en medlem läggs till.
- Spåra hur ett tryck i en widget når nätverkslagret.

## Där Dart får ytliga AI-verktyg att snubbla

Dart sprider en typ över flera konstruktioner. En klass kan ärva från en basklass, implementera flera gränssnitt och blanda in beteende från mixins via `with`. Extension-metoder hänger på medlemmar på typer som definieras någon annanstans, och namngivna konstruktorer och `factory`-konstruktorer döljer vilken klass som faktiskt byggs. Textsökning hittar namnen, men inte strukturen bakom dem.

Maguyva ger agenten den strukturen, så att den kan följa en ändring från en widget till tjänsten den är beroende av.

## Vad Maguyva extraherar i Dart

Maguyva täcker `.dart`-filer. Klasser, mixins och extensions extraheras som typer. Presetet `functions` i `structural_search` omfattar funktioner, metoder, lokala funktioner, lambdor samt generativa, `const`- och `factory`-konstruktorer. Signaturer registrerar valfria positionella och namngivna parametergrupper och `static`-medlemmar, och definitionsnamn tappar ett avslutande `?` eller `!`.

Importer normaliserar `import`-, `part`- och `library`-direktiv och tar bort deras `show`-, `hide`- och `as`-satser. Ett anrop via ett importprefix, som `http.get` efter `import 'package:http/http.dart' as http`, ligger kvar i grafen.

Mottagartypningen följer parametrar, typade och initierade variabler, getters och `for`-`in`-loopar över listor, mängder och itererbara objekt, och behandlar `var` och `dynamic` som härledda typer. `extends`-, `implements`- och `with`-satser följs när ärvda medlemmar slås upp. Grafen registrerar också instansiering, typreferenser, läsningar och skrivningar samt undantagskanter.

## Exempel på prompter för agenter

- "Vem anropar `CartRepository.addItem`, och från vilka widgets?" (`find_symbol`, sedan `dependency_search` incoming)
- "Vilka klasser implementerar `PaymentGateway`?" (`dependency_search`)
- "Spåra hur kassaknappen når betalnings-API:et." (`get_task_context`)

## Kända begränsningar

- Omkring 200 namn från Darts kärnbibliotek filtreras bort från relationerna, bland annat samlingshjälpare som `map`, `where` och `forEach`, metoder på `Future` och `Stream` som `then` och `listen` samt `dart:`-biblioteken. Använd `text_pattern_search` för dem.
- Darts signaturnoder har kroppen som syskonnod, så i `structural_search`-resultat kan en lokal funktion eller lambda överlappa den anropbara enhet som innehåller den, och getters och setters visas som metodsignaturer.

## Nästa steg

Anslut ett repo med [snabbstarten](/sv/docs/quickstart) och kontrollera sedan stödmatrisen på [kompatibilitetssidan](/sv/docs/compatibility). För andra mobila kodbaser, läs [guiden för Kotlin](/sv/languages/kotlin) och [guiden för Swift](/sv/languages/swift).

## Motordetaljer

- Dart-stödet omfattar `.dart`. Klasser, mixins och extensions är typer, och konstruktorer omfattar generativa, `const`- och `factory`-former.
- Importer normaliserar `import`-, `part`- och `library`-direktiv, och anrop via ett importprefix ligger kvar i grafen.
- Mottagartypningen följer parametrar, variabler, getters och `for`-`in`-loopar, och omkring 200 namn från kärnbiblioteken filtreras bort från relationerna.

## Användbara MCP-ingångar

- `find_symbol`: Använd det för en widget-, repository- eller tjänsteklass när du behöver definitionen och referenserna.
- `dependency_search`: Använd incoming-traversering på en repository-metod eller ett gränssnitt för att se anropare och implementationer inför en API-ändring.
- `get_task_context`: Använd det för prompter som "spåra hur kassaknappen når betalnings-API:et".
