# Dart no Maguyva: grafos de código para apps Flutter e Dart

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

O Maguyva oferece suporte a Dart com AST, símbolos e grafo, para que agentes de IA sigam classes, mixins, extensões e construtores em código Flutter e Dart.

## Panorama de suporte

- Nível: Suporte a AST e símbolos
- Programação
- Extensões: .dart
- Parsing real de AST para busca com consciência de sintaxe e contexto estrutural.
- Símbolos nomeados alimentam a busca semântica e as referências cruzadas. A navegação por grafo fica disponível quando a extração de relações está habilitada.
- Esta linguagem fornece símbolos e relações para a busca orientada por grafo; os tipos de aresta compatíveis variam de acordo com seus construtos nativos.
- A análise de AST e a extração de símbolos estão disponíveis.

## Uso ideal

- Apps Flutter em que widgets, classes de estado, repositórios e serviços chamam uns aos outros em muitos arquivos.
- Pacotes Dart que usam mixins e métodos de extensão para adicionar comportamento a tipos definidos em outro lugar.
- Dart no servidor e na linha de comando que compartilha modelos com um cliente Flutter.

## Fluxos de trabalho de agente

- Encontrar todos os chamadores de um método de repositório ou serviço antes de mudar sua API.
- Listar quais classes implementam uma interface antes de adicionar um membro a ela.
- Rastrear como um toque em um widget chega à camada de rede.

## Onde Dart derruba ferramentas de IA superficiais

Dart espalha um mesmo tipo por várias construções. Uma classe pode herdar de uma classe base, implementar várias interfaces e incorporar comportamento de mixins com `with`. Métodos de extensão anexam membros a tipos definidos em outro lugar, e construtores nomeados e `factory` escondem qual classe é realmente construída. Uma busca de texto encontra os nomes, mas não a estrutura por trás deles.

O Maguyva entrega essa estrutura ao agente, para que ele possa seguir uma mudança de um widget até o serviço do qual ele depende.

## O que o Maguyva extrai em Dart

O Maguyva cobre arquivos `.dart`. Classes, mixins e extensões são extraídos como tipos. O preset `functions` do `structural_search` cobre funções, métodos, funções locais, lambdas e construtores generativos, `const` e `factory`. As assinaturas registram grupos de parâmetros posicionais e nomeados opcionais e membros `static`, e os nomes de definição perdem o `?` ou `!` final.

Os imports normalizam as diretivas `import`, `part` e `library` e removem suas cláusulas `show`, `hide` e `as`. Uma chamada por meio de um prefixo de import, como `http.get` depois de `import 'package:http/http.dart' as http`, permanece no grafo.

A tipagem de receivers segue parâmetros, variáveis tipadas e inicializadas, getters e loops `for`-`in` sobre listas, conjuntos e iteráveis, e trata `var` e `dynamic` como tipos inferidos. As cláusulas `extends`, `implements` e `with` são seguidas ao resolver membros herdados. O grafo também registra instanciação, referências de tipo, leituras e escritas e arestas de exceção.

## Exemplos de prompts para agentes

- "Quem chama `CartRepository.addItem`, e de quais widgets?" (`find_symbol`, depois `dependency_search` incoming)
- "Quais classes implementam `PaymentGateway`?" (`dependency_search`)
- "Rastreie como o botão de checkout chega à API de pagamentos." (`get_task_context`)

## Limitações conhecidas

- Cerca de 200 nomes das bibliotecas principais do Dart são filtrados das relações, incluindo helpers de coleção como `map`, `where` e `forEach`, métodos de `Future` e `Stream` como `then` e `listen`, e as bibliotecas `dart:`. Use `text_pattern_search` para encontrá-los.
- Os nós de assinatura do Dart guardam o corpo como nó irmão, então nos resultados do `structural_search` uma função local ou lambda pode se sobrepor ao invocável que a contém, e getters e setters aparecem como assinaturas de método.

## Próximos passos

Conecte um repositório pelo [início rápido](/pt-br/docs/quickstart) e depois confira a matriz de suporte na [página de compatibilidade](/pt-br/docs/compatibility). Para outras bases de código mobile, leia o [guia de Kotlin](/pt-br/languages/kotlin) e o [guia de Swift](/pt-br/languages/swift).

## Detalhes do motor

- O suporte a Dart cobre `.dart`. Classes, mixins e extensões são tipos, e os construtores incluem as formas generativas, `const` e `factory`.
- Os imports normalizam as diretivas `import`, `part` e `library`, e chamadas por meio de um prefixo de import ficam no grafo.
- A tipagem de receivers segue parâmetros, variáveis, getters e loops `for`-`in`, e cerca de 200 nomes das bibliotecas principais são filtrados das relações.

## Pontos de entrada MCP úteis

- `find_symbol`: Use para uma classe de widget, repositório ou serviço quando precisar da definição e das referências.
- `dependency_search`: Use a travessia incoming em um método de repositório ou interface para ver chamadores e implementações antes de mudar uma API.
- `get_task_context`: Use para prompts como "rastreie como o botão de checkout chega à API de pagamentos".
