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

Canonical source: https://maguyva.ai/cs/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 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.

## Přehled podpory

- Úroveň: Podpora AST a symbolů
- Programování
- Přípony: .dart
- Skutečné parsování AST pro vyhledávání citlivé na syntaxi a strukturální kontext.
- Pojmenované symboly napájejí sémantické vyhledávání a křížové odkazy. Navigace v grafu je k dispozici, když je povolena extrakce vztahů.
- Tento jazyk přispívá symboly a vztahy do vyhledávání využívajícího graf; podporované typy hran se liší podle jeho nativních konstrukcí.
- K dispozici je parsování AST i extrakce symbolů.

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

## 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](/cs/docs/quickstart) a pak si prohlédněte matici podpory na [stránce kompatibility](/cs/docs/compatibility). U dalších mobilních kódových základen si přečtěte [průvodce jazykem Kotlin](/cs/languages/kotlin) a [průvodce jazykem Swift](/cs/languages/swift).

## 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“.
