Přeskočit na obsah
cd /languages
  • Multiplatformní UI
  • Programování
  • Podpora AST a symbolů

Dart v Maguyva: grafy kódu pro aplikace Flutter a Dart

Maguyva podporuje Dart s AST, symboly a grafem, takže AI agenti sledují třídy, mixiny, rozšíření a konstruktory v kódu Flutter a Dart.

Kde Dart podráží povrchní AI nástroje

Dart rozkládá jeden typ do několika konstrukcí. Třída může dědit z jedné základní třídy, implementovat několik rozhraní a přes with přimíchat chování z mixinů. Rozšiřující metody připojují členy k typům definovaným jinde a pojmenované konstruktory i konstruktory factory skrývají, která třída se ve skutečnosti vytvoří. Textové vyhledávání najde jména, ale ne strukturu, která se za nimi skrývá.

Maguyva tuto strukturu agentovi předá, takže může sledovat změnu od widgetu až ke službě, na které závisí.

Co Maguyva v Dartu extrahuje

Maguyva pokrývá soubory .dart. Třídy, mixiny a rozšíření se extrahují jako typy. Preset functions v structural_search pokrývá funkce, metody, lokální funkce, lambdy a generativní konstruktory i konstruktory const a factory. Signatury zaznamenávají skupiny volitelných pozičních a pojmenovaných parametrů a členy static a z názvů definic se odstraňuje koncové ? nebo !.

Importy normalizují direktivy import, part a library a odstraňují jejich klauzule show, hide a as. Volání přes prefix importu, například http.get po import 'package:http/http.dart' as http, v grafu zůstává.

Typování příjemců sleduje parametry, typované a inicializované proměnné, gettery a smyčky for-in přes seznamy, množiny a iterovatelné objekty a var a dynamic považuje za odvozené typy. Při rozlišování zděděných členů se sledují klauzule extends, implements a with. Graf zaznamenává také vytváření instancí, odkazy na typy, čtení a zápisy a hrany výjimek.

Ukázkové prompty pro agenty

  • „Kdo volá CartRepository.addItem a z kterých widgetů?“ (find_symbol, pak dependency_search incoming)
  • „Které třídy implementují PaymentGateway?“ (dependency_search)
  • „Vysleduj, jak se tlačítko pokladny dostane k platebnímu API.“ (get_task_context)

Známá omezení

  • Asi 200 názvů ze základních knihoven Dartu se z relací odfiltruje, mimo jiné pomocné funkce pro kolekce jako map, where a forEach, metody Future a Stream jako then a listen a knihovny dart:. Pro ně použijte text_pattern_search.
  • Uzly signatur v Dartu drží tělo jako sourozenecký uzel, takže ve výsledcích structural_search se lokální funkce nebo lambda může překrývat s volatelným prvkem, který ji obsahuje, a gettery a settery se zobrazují jako signatury metod.

Další kroky

Připojte repozitář podle rychlého startu a pak si prohlédněte matici podpory na stránce kompatibility. U dalších mobilních kódových základen si přečtěte průvodce jazykem Kotlin a průvodce jazykem Swift.

Nejlépe se hodí pro

  • > Aplikace ve Flutteru, kde se widgety, stavové třídy, repozitáře a služby navzájem volají napříč mnoha soubory.
  • > Balíčky v Dartu, které pomocí mixinů a rozšiřujících metod přidávají chování typům definovaným jinde.
  • > Serverový a příkazový Dart, který sdílí modely s klientem ve Flutteru.

Workflow agentů

  • > Najít všechna volání metody repozitáře nebo služby před změnou jejího API.
  • > Vypsat třídy, které implementují rozhraní, než do něj přibude člen.
  • > Vysledovat, jak se klepnutí ve widgetu dostane do síťové vrstvy.

Podrobnosti enginu

  • > Podpora Dartu pokrývá `.dart`. Třídy, mixiny a rozšíření jsou typy a konstruktory zahrnují generativní formy i formy `const` a `factory`.
  • > Importy normalizují direktivy `import`, `part` a `library` a volání přes prefix importu v grafu zůstávají.
  • > Typování příjemců sleduje parametry, proměnné, gettery a smyčky `for`-`in` a asi 200 názvů ze základních knihoven se z relací odfiltruje.

Užitečné vstupní body MCP

  • find_symbol

    Použijte ho pro třídu widgetu, repozitáře nebo služby, když potřebujete definici a odkazy.

  • dependency_search

    Použijte incoming procházení na metodě repozitáře nebo rozhraní, abyste před změnou API viděli volající a implementace.

  • get_task_context

    Použijte ho pro prompty jako „vysleduj, jak se tlačítko pokladny dostane k platebnímu API“.