# Dart in Maguyva: codegrafen voor Flutter- en Dart-apps

Canonical source: https://maguyva.ai/nl/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 ondersteunt Dart met AST, symbolen en graaf, zodat AI-agents klassen, mixins, extensions en constructors volgen in Flutter- en Dart-code.

## Ondersteuningsoverzicht

- Tier: AST- en symboolondersteuning
- Programmeren
- Extensies: .dart
- Echte AST-parsing voor syntaxbewust zoeken en structurele context.
- Benoemde symbolen voeden semantische lookup en kruisverwijzingen. Graafnavigatie is beschikbaar wanneer relatie-extractie is ingeschakeld.
- Deze taal draagt symbolen en relaties bij aan graafbewust zoeken; ondersteunde kanttypen variëren met de eigen constructies van de taal.
- Zowel AST-parsing als symboolextractie zijn beschikbaar.

## Beste toepassing

- Flutter-apps waarin widgets, stateklassen, repositories en services elkaar over veel bestanden heen aanroepen.
- Dart-packages die mixins en extension-methoden gebruiken om gedrag toe te voegen aan types die elders zijn gedefinieerd.
- Server-side en command-line Dart die modellen deelt met een Flutter-client.

## Agentworkflows

- Alle aanroepers van een repository- of servicemethode vinden voordat de API verandert.
- Opsommen welke klassen een interface implementeren voordat er een member bij komt.
- Volgen hoe een tik in een widget de netwerklaag bereikt.

## Waar Dart oppervlakkige AI-tools laat struikelen

Dart verdeelt één type over meerdere constructies. Een klasse kan erven van één basisklasse, meerdere interfaces implementeren en via `with` gedrag uit mixins opnemen. Extension-methoden hangen members aan types die elders zijn gedefinieerd, en benoemde en `factory`-constructors verbergen welke klasse er echt wordt gebouwd. Tekstzoeken vindt de namen, maar niet de structuur erachter.

Maguyva geeft een agent die structuur, zodat hij een wijziging kan volgen van een widget tot aan de service waarvan die afhangt.

## Wat Maguyva in Dart extraheert

Maguyva dekt `.dart`-bestanden. Klassen, mixins en extensions worden als types geëxtraheerd. De preset `functions` in `structural_search` omvat functies, methoden, lokale functies, lambda's en generatieve, `const`- en `factory`-constructors. Signaturen leggen optionele positionele en benoemde parametergroepen en `static`-members vast, en definitienamen verliezen een afsluitend `?` of `!`.

Imports normaliseren `import`-, `part`- en `library`-directives en verwijderen hun `show`-, `hide`- en `as`-clausules. Een aanroep via een importprefix, zoals `http.get` na `import 'package:http/http.dart' as http`, blijft in de graaf.

Receiver-typering volgt parameters, getypeerde en geïnitialiseerde variabelen, getters en `for`-`in`-lussen over lijsten, sets en iterables, en behandelt `var` en `dynamic` als afgeleide types. Bij het oplossen van overgeërfde members worden `extends`-, `implements`- en `with`-clausules gevolgd. De graaf legt ook instantiatie, typereferenties, lees- en schrijfacties en exception-edges vast.

## Voorbeeldprompts voor agents

- "Wie roept `CartRepository.addItem` aan, en vanuit welke widgets?" (`find_symbol`, daarna `dependency_search` incoming)
- "Welke klassen implementeren `PaymentGateway`?" (`dependency_search`)
- "Volg hoe de checkout-knop de betalings-API bereikt." (`get_task_context`)

## Bekende beperkingen

- Ongeveer 200 namen uit de Dart-corebibliotheken worden uit de relaties gefilterd, waaronder collectiehelpers zoals `map`, `where` en `forEach`, methoden van `Future` en `Stream` zoals `then` en `listen`, en de `dart:`-bibliotheken. Gebruik daarvoor `text_pattern_search`.
- Dart-signatuurknopen houden de body als zusterknoop, dus in `structural_search`-resultaten kan een lokale functie of lambda overlappen met de callable die haar bevat, en getters en setters verschijnen als methodesignaturen.

## Volgende stappen

Koppel een repository via de [snelstart](/nl/docs/quickstart) en bekijk daarna de ondersteuningsmatrix op de [compatibiliteitspagina](/nl/docs/compatibility). Lees voor andere mobiele codebases de [Kotlin-gids](/nl/languages/kotlin) en de [Swift-gids](/nl/languages/swift).

## Enginedetails

- Dart-ondersteuning omvat `.dart`. Klassen, mixins en extensions zijn types, en constructors omvatten generatieve, `const`- en `factory`-vormen.
- Imports normaliseren `import`-, `part`- en `library`-directives, en aanroepen via een importprefix blijven in de graaf.
- Receiver-typering volgt parameters, variabelen, getters en `for`-`in`-lussen, en ongeveer 200 namen uit de corebibliotheken worden uit de relaties gefilterd.

## Nuttige MCP-instappunten

- `find_symbol`: Gebruik het voor een widget-, repository- of serviceklasse wanneer je de definitie en referenties nodig hebt.
- `dependency_search`: Gebruik incoming-traversal op een repositorymethode of interface om aanroepers en implementaties te zien voor een API-wijziging.
- `get_task_context`: Gebruik het voor prompts als "volg hoe de checkout-knop de betalings-API bereikt."
