Pular para o conteúdo
cd /languages
  • UI multiplataforma
  • Programação
  • Suporte a AST e símbolos

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

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.

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 e depois confira a matriz de suporte na página de compatibilidade. Para outras bases de código mobile, leia o guia de Kotlin e o guia de Swift.

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.

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