Hopp til innhold
cd /languages
  • Plattformuavhengig UI
  • Programmering
  • AST- og symbolstøtte

Dart i Maguyva: kodegrafer for Flutter- og Dart-apper

Maguyva støtter Dart med AST, symboler og graf, slik at AI-agenter kan følge klasser, mixins, extensions og konstruktører i Flutter- og Dart-kode.

Der Dart får overfladiske AI-verktøy til å snuble

Dart sprer én type over flere konstruksjoner. En klasse kan arve fra én baseklasse, implementere flere grensesnitt og blande inn atferd fra mixins via with. Extension-metoder fester medlemmer til typer som er definert et annet sted, og navngitte konstruktører og factory-konstruktører skjuler hvilken klasse som faktisk bygges. Tekstsøk finner navnene, men ikke strukturen bak dem.

Maguyva gir agenten den strukturen, slik at den kan følge en endring fra en widget til tjenesten den er avhengig av.

Hva Maguyva henter ut i Dart

Maguyva dekker .dart-filer. Klasser, mixins og extensions hentes ut som typer. Presetet functions i structural_search dekker funksjoner, metoder, lokale funksjoner, lambdaer og generative, const- og factory-konstruktører. Signaturer registrerer valgfrie posisjonelle og navngitte parametergrupper og static-medlemmer, og definisjonsnavn mister en avsluttende ? eller !.

Importer normaliserer import-, part- og library-direktiver og fjerner show-, hide- og as-leddene. Et kall via et importprefiks, som http.get etter import 'package:http/http.dart' as http, blir værende i grafen.

Mottakertypingen følger parametere, typede og initialiserte variabler, gettere og for-in-løkker over lister, mengder og itererbare objekter, og behandler var og dynamic som utledede typer. extends-, implements- og with-ledd følges når arvede medlemmer slås opp. Grafen registrerer også instansiering, typereferanser, lesinger og skrivinger og unntakskanter.

Eksempler på prompter for agenter

  • «Hvem kaller CartRepository.addItem, og fra hvilke widgets?» (find_symbol, deretter dependency_search incoming)
  • «Hvilke klasser implementerer PaymentGateway?» (dependency_search)
  • «Spor hvordan kasseknappen når betalings-API-et.» (get_task_context)

Kjente begrensninger

  • Rundt 200 navn fra Darts kjernebiblioteker filtreres bort fra relasjonene, blant annet samlingshjelpere som map, where og forEach, metoder på Future og Stream som then og listen, og dart:-bibliotekene. Bruk text_pattern_search for dem.
  • Darts signaturnoder har kroppen som søskennode, så i structural_search-resultater kan en lokal funksjon eller lambda overlappe den kallbare enheten som inneholder den, og gettere og settere vises som metodesignaturer.

Neste steg

Koble til et repositorium med hurtigstarten, og se deretter støttematrisen på kompatibilitetssiden. For andre mobile kodebaser bør du lese veiledningen for Kotlin og veiledningen for Swift.

Best egnet

  • > Flutter-apper der widgets, tilstandsklasser, repositorier og tjenester kaller hverandre på tvers av mange filer.
  • > Dart-pakker som bruker mixins og extension-metoder til å legge atferd på typer som er definert et annet sted.
  • > Dart på serversiden og kommandolinjen som deler modeller med en Flutter-klient.

Agent-arbeidsflyter

  • > Finne alle kallere av en repository- eller tjenestemetode før API-et endres.
  • > Liste hvilke klasser som implementerer et grensesnitt før det får et nytt medlem.
  • > Spore hvordan et trykk i en widget når nettverkslaget.

Motordetaljer

  • > Dart-støtten dekker `.dart`. Klasser, mixins og extensions er typer, og konstruktører omfatter generative, `const`- og `factory`-former.
  • > Importer normaliserer `import`-, `part`- og `library`-direktiver, og kall via et importprefiks blir værende i grafen.
  • > Mottakertypingen følger parametere, variabler, gettere og `for`-`in`-løkker, og rundt 200 navn fra kjernebibliotekene filtreres bort fra relasjonene.

Nyttige MCP-inngangspunkter

  • find_symbol

    Bruk det for en widget-, repository- eller tjenesteklasse når du trenger definisjonen og referansene.

  • dependency_search

    Bruk incoming-traversering på en repository-metode eller et grensesnitt for å se kallere og implementasjoner før en API-endring.

  • get_task_context

    Bruk det for prompter som «spor hvordan kasseknappen når betalings-API-et».