Orientação gerada a partir de informações públicas. Apenas para referência.
O Gate Generator é um gerador de código de injeção de dependência para aplicativos Flutter e Dart, utilizando anotações e build_runner para gerar automaticamente o código boilerplate. Ele simplifica a configuração da injeção de dependência analisando classes anotadas e gerando logicamente o registro e resolução necessários em tempo de compilação. Isso reduz o custo de execução e melhora a segurança de tipos. A ferramenta se integra perfeitamente em projetos existentes com mínima configuração, sendo ideal para arquiteturas de aplicativos escaláveis e sustentáveis.
Casos de uso
Automatizando a configuração de injeção de dependência
Reduzindo o código boilerplate manual DI
Melhorando a escalabilidade do aplicativo
Habilitar resolução de serviço segura por tipo
Apoiar o design de aplicativo modular
Principais recursos
Configuração baseada em anotações
Integração com o build runner
Geração de código em tempo de compilação
Sobrecarga mínima de tempo de execução
Resolução de dependência segura por tipo
Indicado para
Aplicações Flutter em grande escala
Equipes que priorizam a manutenibilidade
Projetos usando arquitetura limpa
Desenvolvedores em busca de configuração automática de injeção de dependência
Aplicações que exigem alta testabilidade
Considerações
Requer configuração do build_runner
Limitado à geração em tempo de compilação
Depende do uso correto de anotações
Pode aumentar levemente o tempo de compilação
Não adequado para cenários de DI dinâmicos
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
💎 Features
Provide Injectable as a singleton
Provide Injectable as a dynamic service
Inject an Injectable class into another
💡 Motivation
Providing Service should be independent from your pages or other code.
The DI pattern separates the responsibility of creating an object of the service class out of the client class.
Also using code generation we can get rid of the boilerplate part.
🚀 Getting started
install gate with build_runner in you pubspec.yaml
You can inject as many dependency as you want into your class as long as their are Injectable.
part 'coffee_page.gate_inject.g.part'; will be be added to your file
this file will be genererated on next step
don't forget to import "gate_provider.dart" that is generated next
3. Generate code
Using build runner you can run the command in your shell
flutter packages pub run build_runner build --delete-conflicting-outputs
Once build runner is done, you can run your flutter app and use all injected class.
If you change your factory or wants to inject other class... just rerun the build_runner 😀
📗 Properties
Annotation
Description
Injectable
mark a class as containing Singleton or Provide factories
Singleton
mark a factory as a Singleton Injectable
Provide
mark a factory as a Dymamic Injectable. Each time you inject will create a new instance of that class
Inject
mark a class to inject dependencies
Inject annotation
Property
Description
children
a list of InjectedChild
InjectedChild annotation
Property
Description
type
The type to inject
factoryName
The factory name to use
attrName
(optionnal) The attribute name to call it from your class
✅ Tests
Run tests
dart pub global activate coverage
dart test --coverage="coverage"
format_coverage --lcov --in=coverage --out=coverage.lcov --packages=.packages --report-on=lib
Mock an injected dependency for testing
To remplace your service by mocks, you have to set them, before testing.
Gate will generate all methods for you.
First, declare your mocked services with your preferred libraries.
Then use the appProvider to set mocks.
Finally, don't forget to reset mocks by setting them to null.