# Dart in Maguyva: Code-Graphen für Flutter- und Dart-Apps

Canonical source: https://maguyva.ai/de/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 unterstützt Dart mit AST, Symbolen und Graph, damit KI-Agenten Klassen, Mixins, Extensions und Konstruktoren über Flutter- und Dart-Code hinweg verfolgen.

## Unterstützungsüberblick

- Stufe: AST- und Symbol-Support
- Programmierung
- Dateiendungen: .dart
- Echtes AST-Parsing für syntaxbewusste Suche und strukturellen Kontext.
- Benannte Symbole speisen semantisches Lookup und Cross-Referenzierung. Graph-Navigation ist verfügbar, wenn die Beziehungsextraktion aktiviert ist.
- Diese Sprache liefert Symbole und Beziehungen für die graphgestützte Suche; die unterstützten Kantentypen variieren je nach nativen Konstrukten der Sprache.
- AST-Parsing und Symbolextraktion sind beide verfügbar.

## Am besten geeignet

- Flutter-Apps, in denen Widgets, State-Klassen, Repositories und Services sich über viele Dateien hinweg aufrufen.
- Dart-Pakete, die mit Mixins und Extension-Methoden Typen erweitern, die an anderer Stelle definiert sind.
- Serverseitiges und Kommandozeilen-Dart, das Modelle mit einem Flutter-Client teilt.

## Agentenabläufe

- Alle Aufrufer einer Repository- oder Service-Methode finden, bevor sich ihre API ändert.
- Auflisten, welche Klassen ein Interface implementieren, bevor ihm ein Member hinzugefügt wird.
- Verfolgen, wie ein Tippen in einem Widget die Netzwerkschicht erreicht.

## Wo Dart oberflächliche KI-Tools ins Stolpern bringt

Dart verteilt einen Typ auf mehrere Konstrukte. Eine Klasse kann von einer Basisklasse erben, mehrere Interfaces implementieren und über `with` Verhalten aus Mixins einbinden. Extension-Methoden hängen Member an Typen, die an anderer Stelle definiert sind, und benannte sowie `factory`-Konstruktoren verbergen, welche Klasse tatsächlich gebaut wird. Eine Textsuche findet die Namen, aber nicht die Struktur dahinter.

Maguyva gibt einem Agenten diese Struktur, damit er eine Änderung vom Widget bis zum Service verfolgen kann, von dem es abhängt.

## Was Maguyva in Dart extrahiert

Maguyva deckt `.dart`-Dateien ab. Klassen, Mixins und Extensions werden als Typen extrahiert. Das Preset `functions` in `structural_search` umfasst Funktionen, Methoden, lokale Funktionen, Lambdas sowie generative, `const`- und `factory`-Konstruktoren. Signaturen erfassen optionale positionale und benannte Parametergruppen sowie `static`-Member, und Definitionsnamen verlieren ein abschließendes `?` oder `!`.

Importe normalisieren `import`-, `part`- und `library`-Direktiven und entfernen ihre `show`-, `hide`- und `as`-Klauseln. Ein Aufruf über ein Import-Präfix, etwa `http.get` nach `import 'package:http/http.dart' as http`, bleibt im Graphen.

Die Receiver-Typisierung folgt Parametern, typisierten und initialisierten Variablen, Gettern sowie `for`-`in`-Schleifen über Listen, Sets und Iterables und behandelt `var` und `dynamic` als abgeleitete Typen. Beim Auflösen geerbter Member werden `extends`-, `implements`- und `with`-Klauseln verfolgt. Der Graph erfasst außerdem Instanziierung, Typreferenzen, Lese- und Schreibzugriffe sowie Exception-Kanten.

## Beispiel-Prompts für Agenten

- „Wer ruft `CartRepository.addItem` auf, und aus welchen Widgets?“ (`find_symbol`, dann `dependency_search` incoming)
- „Welche Klassen implementieren `PaymentGateway`?“ (`dependency_search`)
- „Verfolge, wie der Checkout-Button die Payments-API erreicht.“ (`get_task_context`)

## Bekannte Grenzen

- Etwa 200 Namen der Dart-Core-Bibliotheken werden aus den Beziehungen gefiltert, darunter Collection-Helfer wie `map`, `where` und `forEach`, `Future`- und `Stream`-Methoden wie `then` und `listen` sowie die `dart:`-Bibliotheken. Verwende dafür `text_pattern_search`.
- Dart-Signaturknoten führen den Rumpf als Geschwisterknoten. Deshalb kann sich in `structural_search`-Ergebnissen eine lokale Funktion oder ein Lambda mit dem umgebenden Callable überschneiden, und Getter und Setter erscheinen als Methodensignaturen.

## Nächste Schritte

Verbinde ein Repository über den [Schnellstart](/de/docs/quickstart) und prüfe dann die Unterstützungsmatrix auf der [Kompatibilitätsseite](/de/docs/compatibility). Für andere mobile Codebasen lies den [Kotlin-Leitfaden](/de/languages/kotlin) und den [Swift-Leitfaden](/de/languages/swift).

## Engine-Einordnung

- Die Dart-Unterstützung umfasst `.dart`. Klassen, Mixins und Extensions sind Typen, und Konstruktoren umfassen generative, `const`- und `factory`-Formen.
- Importe normalisieren `import`-, `part`- und `library`-Direktiven, und Aufrufe über ein Import-Präfix bleiben im Graphen.
- Die Receiver-Typisierung folgt Parametern, Variablen, Gettern und `for`-`in`-Schleifen, und etwa 200 Namen der Core-Bibliotheken werden aus den Beziehungen gefiltert.

## Nützliche MCP-Einstiegspunkte

- `find_symbol`: Nutz es für eine Widget-, Repository- oder Service-Klasse, wenn du Definition und Referenzen brauchst.
- `dependency_search`: Nutz die eingehende Traversierung auf einer Repository-Methode oder einem Interface, um vor einer API-Änderung Aufrufer und Implementierungen zu sehen.
- `get_task_context`: Nutz es für Prompts wie „verfolge, wie der Checkout-Button die Payments-API erreicht“.
