# Dart dans Maguyva : des graphes de code pour les apps Flutter et Dart

Canonical source: https://maguyva.ai/fr/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 prend en charge Dart avec AST, symboles et graphe, pour que les agents IA suivent classes, mixins, extensions et constructeurs dans le code Flutter et Dart.

## Aperçu du support

- Palier: Prise en charge de l’AST et des symboles
- Programmation
- Extensions: .dart
- Analyse AST réelle pour une recherche consciente de la syntaxe et un contexte structurel.
- Les symboles nommés alimentent la recherche sémantique et le référencement croisé. La navigation par graphe est disponible lorsque l’extraction de relations est activée.
- Ce langage fournit des symboles et des relations à la recherche tenant compte du graphe ; les types d’arêtes pris en charge varient selon ses constructions natives.
- L’analyse AST et l’extraction de symboles sont toutes deux disponibles.

## Idéal pour

- Les apps Flutter où widgets, classes d'état, repositories et services s'appellent les uns les autres à travers de nombreux fichiers.
- Les packages Dart qui utilisent des mixins et des méthodes d'extension pour ajouter du comportement à des types définis ailleurs.
- Le Dart côté serveur et en ligne de commande qui partage ses modèles avec un client Flutter.

## Workflows d'agent

- Trouver tous les appelants d'une méthode de repository ou de service avant de modifier son API.
- Lister les classes qui implémentent une interface avant de lui ajouter un membre.
- Retracer comment un tap dans un widget atteint la couche réseau.

## Là où Dart fait trébucher les outils d'IA superficiels

Dart répartit un même type sur plusieurs constructions. Une classe peut hériter d'une classe de base, implémenter plusieurs interfaces et intégrer du comportement de mixins via `with`. Les méthodes d'extension attachent des membres à des types définis ailleurs, et les constructeurs nommés et `factory` masquent la classe réellement construite. Une recherche textuelle trouve les noms, mais pas la structure qui se cache derrière.

Maguyva fournit cette structure à l'agent, qui peut alors suivre un changement depuis un widget jusqu'au service dont il dépend.

## Ce que Maguyva extrait en Dart

Maguyva couvre les fichiers `.dart`. Les classes, mixins et extensions sont extraits comme types. Le preset `functions` de `structural_search` couvre les fonctions, méthodes, fonctions locales, lambdas, ainsi que les constructeurs génératifs, `const` et `factory`. Les signatures enregistrent les groupes de paramètres positionnels et nommés optionnels ainsi que les membres `static`, et les noms de définition perdent leur `?` ou `!` final.

Les imports normalisent les directives `import`, `part` et `library` et suppriment leurs clauses `show`, `hide` et `as`. Un appel via un préfixe d'import, comme `http.get` après `import 'package:http/http.dart' as http`, reste dans le graphe.

Le typage des receveurs suit les paramètres, les variables typées et initialisées, les getters et les boucles `for`-`in` sur des listes, des ensembles et des itérables, et traite `var` et `dynamic` comme des types inférés. Les clauses `extends`, `implements` et `with` sont suivies pour résoudre les membres hérités. Le graphe enregistre aussi l'instanciation, les références de type, les lectures et écritures et les arêtes d'exception.

## Exemples de prompts pour agents

- « Qui appelle `CartRepository.addItem`, et depuis quels widgets ? » (`find_symbol`, puis `dependency_search` en incoming)
- « Quelles classes implémentent `PaymentGateway` ? » (`dependency_search`)
- « Retrace comment le bouton de paiement atteint l'API de paiement. » (`get_task_context`)

## Limites connues

- Environ 200 noms des bibliothèques de base de Dart sont filtrés des relations, dont des helpers de collection comme `map`, `where` et `forEach`, des méthodes de `Future` et `Stream` comme `then` et `listen`, et les bibliothèques `dart:`. Utilisez `text_pattern_search` pour les retrouver.
- Les nœuds de signature Dart gardent le corps comme nœud frère : dans les résultats de `structural_search`, une fonction locale ou une lambda peut donc chevaucher l'appelable qui la contient, et les getters et setters apparaissent comme des signatures de méthode.

## Étapes suivantes

Connectez un dépôt avec le [démarrage rapide](/fr/docs/quickstart), puis consultez la matrice de prise en charge sur la [page de compatibilité](/fr/docs/compatibility). Pour d'autres bases de code mobiles, lisez le [guide Kotlin](/fr/languages/kotlin) et le [guide Swift](/fr/languages/swift).

## Détails du moteur

- La prise en charge de Dart couvre `.dart`. Classes, mixins et extensions sont des types, et les constructeurs incluent les formes génératives, `const` et `factory`.
- Les imports normalisent les directives `import`, `part` et `library`, et les appels via un préfixe d'import restent dans le graphe.
- Le typage des receveurs suit les paramètres, les variables, les getters et les boucles `for`-`in`, et environ 200 noms des bibliothèques de base sont filtrés des relations.

## Points d'entrée MCP utiles

- `find_symbol`: Utilisez-le pour une classe de widget, de repository ou de service quand vous avez besoin de la définition et des références.
- `dependency_search`: Utilisez la traversée incoming sur une méthode de repository ou une interface pour voir appelants et implémentations avant de changer une API.
- `get_task_context`: Utilisez-le pour des prompts comme « retrace comment le bouton de paiement atteint l'API de paiement ».
