Spring til indhold
cd /languages
  • Platformsuafhængig UI
  • Programmering
  • AST- og symbolunderstøttelse

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

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.

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, og se derefter understøttelsesmatricen på kompatibilitetssiden. For andre mobile kodebaser kan du læse guiden til Kotlin og guiden til Swift.

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.

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".