Cole o Dart à esquerda e clique em "Converter" — transformamos em XMLCole código Dart

O que esta ferramenta faz

Se você já teve que moldar um payload XML para bater com um modelo Dart — para um app Flutter conversando com um endpoint SOAP legado, uma config XML ao estilo Android, ou um leitor de feeds RSS — sabe o quanto é chato o boilerplate. Cole o Dart aqui e a ferramenta devolve XML bem formado numa única passada. Uma classe com campos final, um arquivo de modelos inteiro, ou uma instância já preenchida — o resultado é o mesmo: um documento XML completo com cada campo preservado.

Não é substituição ingênua de strings. O conversor lê Dart de verdade: parâmetros nomeados required viram elementos na ordem de declaração, campos final se comportam igualzinho aos não-final, valores DateTime saem como strings ISO-8601, Duration usa o formato ISO-8601 de duração, num, int e double preservam sua forma numérica, null (de tipos nullable como String?) vira um elemento vazio em vez de ser descartado, e List<T> vira um elemento contêiner com um filho por item — exatamente o que o XmlBuilder do pacote xml emitiria.

A estrutura das classes é preservada. Cada classe de topo vira um elemento raiz com o nome da classe, cada campo vira um elemento filho, classes aninhadas são expandidas inline, e Map<K, V> vira pares <entry><key/><value/></entry>. Anotações como @JsonKey(name: "x") do json_annotation são respeitadas como dicas de renomeação de elemento. Cole um modelo Flutter, uma classe de dados estilo freezed, ou um POJO Dart simples — o XML sai parecido com o que uma chamada XmlBuilder feita à mão produziria, só que sem a cerimônia.

Como usar

Três passos. O mesmo fluxo, seja colando um único modelo ou uma pasta <code>lib/models</code> inteira.

1

Cole seu Dart (ou experimente o exemplo)

Jogue o Dart no editor da esquerda como está. Uma classe normal, uma classe de dados com construtor nomeado, várias classes, ou uma instância preenchida — tudo funciona. Clique em Carregar exemplo para ver primeiro um caso realista de Order.

Não precisa remover imports, tirar diretivas part, nem apagar anotações. Mantenha o código do jeito que aparece no IDE. É só colar.

2

Aperte Converter

Clique no botão verde Converter. A ferramenta lê o Dart, preserva cada classe e campo, e monta o XML numa passada só. Aparece um pequeno indicador enquanto processa.

3

Copie o XML

O painel da direita se enche de XML indentado e bem formado, aceito por qualquer parser que siga o padrão. Jogue numa requisição SOAP, num arquivo de assets do Flutter, numa config ao estilo Android, ou numa fixture de teste unitário.

Quando isso realmente ajuda

Apps Flutter conversando com serviços SOAP

Seu app Flutter precisa chamar um endpoint SOAP legado e o corpo da requisição tem que bater com um modelo Dart. Cole o modelo, pegue o XML, mande para <code>http.post</code> ou para o pacote <a href="https://pub.dev/packages/xml" target="_blank" rel="noopener">xml</a>.

Geradores de feeds RSS e Atom

Construindo um app de podcast ou de notícias que publica RSS? Cole o modelo do episódio, pegue a forma XML que precisa e depois embrulhe com o envelope do feed — sem contar filhos <code>&lt;item&gt;</code> à mão.

Configs XML nativas de Android/iOS

Precisa gerar um XML de preferências ao estilo Android ou uma estrutura tipo plist do iOS a partir de um modelo Dart usado em platform channels? Cole a classe e receba um template pronto para ajustar.

Fixtures de teste para flutter_test

Transforme um modelo preenchido em um arquivo de fixture XML para <code>flutter_test</code>, golden tests de widgets, ou mock de respostas HTTP — bem mais rápido do que escrever strings de fixture à mão.

Perguntas frequentes

Posso colar várias classes de uma vez?

Sim — cole um models.dart inteiro ou uma pasta de modelos completa. Cada classe de topo sai com as classes aninhadas expandidas e os campos das classes pai incluídos. Mixins são tratados como contribuindo com seus campos. Nada é silenciosamente descartado.

Funciona com classes freezed ou json_serializable?

Sim. Classes imutáveis estilo freezed e modelos anotados com json_serializable são tratados como classes Dart normais — os campos saem, e @JsonKey(name: "x") é respeitado como dica de renomeação. Não precisa rodar build_runner nem colar o arquivo .g.dart gerado.

Como DateTime, Duration, null e num são tratados?

DateTime sai como string ISO-8601 (2026-04-21T10:15:00.000Z). Duration sai como duração ISO-8601 (PT2H30M) ou fallback HH:mm:ss. Tipos nullable com valor null viram elementos vazios (<field/>) em vez de serem omitidos, então a forma do XML se mantém consistente. num, int e double são todos serializados como texto decimal comum.

E com List, Map e classes aninhadas?

List<T> vira um elemento contêiner com um filho por item, nomeado pelo tipo — um List<OrderItem> items vira <items><OrderItem/><OrderItem/></items>. Map<K, V> vira pares <entry><key/><value/></entry>. Classes aninhadas são expandidas inline, do mesmo jeito que o XmlBuilder do pacote xml produz elementos aninhados.

Meu código fica guardado?

Seu Dart é enviado ao backend para a conversão e não é persistido — não logamos o payload. Como sempre com ferramentas online, se o código tiver literais realmente sensíveis (chaves de API, tokens), limpe ou mocke antes de colar.

E se a classe usar campos dynamic ou Object?

Campos tipados como dynamic ou Object? são serializados como texto, baseados no literal atribuído, já que a forma real só é conhecida em tempo de execução. Para uma saída XML mais forte, estreite o tipo (String, int, uma classe concreta) e o conversor vai pegar a estrutura automaticamente.

Outras ferramentas úteis

Dart para XML é só uma peça do quebra-cabeça. Estas combinam bem: