Pular para o conteúdo principal

Correções orientadas a dados

Ative o dart fix para migrar código em mudanças incompatíveis de pacotes do pub.

Como mantenedor de um pacote, modificar ou descontinuar APIs públicas pode quebrar o código existente dos seus usuários. Para ajudar seus usuários a atualizar sem problemas, você pode fornecer correções orientadas a dados (data-driven fixes).

Correções orientadas a dados são regras de migração declarativas armazenadas diretamente dentro do seu pacote. Depois que os usuários atualizam para uma versão mais nova do seu pacote, eles podem aplicar essas migrações com o dart fix ou com as correções rápidas da IDE.

Ativar correções orientadas a dados no seu pacote

#

Para fornecer migrações automatizadas para o seu pacote, siga estes passos.

1. Adicione um arquivo de dados de correção

#

Adicione um arquivo chamado fix_data.yaml no diretório lib/ do seu pacote:

  • my_package/
    • lib/
      • fix_data.yaml
      • my_package.dart
    • pubspec.yaml

Se você tiver muitas correções, pode dividi-las em vários arquivos dentro do diretório lib/fix_data/.

2. Defina transformações de API

#

No fix_data.yaml, especifique a versão do formato (version: 1) e uma lista transforms. Cada transformação descreve o elemento da API que mudou e as alterações a serem aplicadas.

Por exemplo, se você renomear oldMethod() para newMethod() na classe MyClass:

lib/fix_data.yaml
yaml
version: 1
transforms:
  - title: 'Rename oldMethod to newMethod'
    date: 2026-09-18
    element:
      uris: ['my_package.dart']
      method: 'oldMethod'
      inClass: 'MyClass'
    changes:
      - kind: 'rename'
        newName: 'newMethod'
  • date: uma data no formato YYYY-MM-DD indicando quando a mudança foi introduzida.
  • uris: uma lista de URIs de bibliotecas que exportam a API, relativas ao diretório lib/, como 'my_package.dart'.

Testar suas correções

#

Para garantir que suas regras de migração funcionem como esperado, configure pares de arquivos de teste e arquivos golden que contenham o código esperado depois de aplicar as migrações.

1. Configure um diretório test_fixes

#

Crie um diretório test_fixes/ na raiz do seu pacote:

  • my_package/
    • lib/
      • fix_data.yaml
    • test_fixes/
      • my_api.dart
      • my_api.dart.expect
    • pubspec.yaml
  • my_api.dart: código escrito para a API antiga.
  • my_api.dart.expect: o código esperado depois de aplicar o dart fix.

Por exemplo, emparelhe seus arquivos de teste da seguinte forma:

test_fixes/my_api.dart
dart
import 'package:my_package/my_package.dart';
​
void main() {
  MyClass().oldMethod();
}
test_fixes/my_api.dart.expect
dart
import 'package:my_package/my_package.dart';
​
void main() {
  MyClass().newMethod();
}

2. Execute os testes

#

Na raiz do seu pacote, execute o dart fix com --compare-to-golden:

dart fix test_fixes --compare-to-golden

Se a saída corresponder ao seu arquivo .expect, o comando termina com o código 0. Se houver diferença, ele exibe um diff e termina com um código diferente de zero, o que o torna ideal para suítes de testes de CI.

Saiba mais

#

Para saber mais sobre todos os tipos de mudança suportados (como modificações de parâmetros e declarações substituídas), condições e templates de código, veja a especificação de Data-driven Fixes.

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.