alligator2 0.0.1
alligator2: ^0.0.1 copied to clipboard
A simple dependency injection package for Dart/Flutter.
Alligator2 #
Alligator2 é um package simples e eficiente de Injeção de Dependências para projetos em Dart e Flutter. Ele permite que você registre e recupere dependências com facilidade, suportando tanto singletons quanto fábricas, e possibilita o reset de dependências durante o ciclo de vida da aplicação.
Recursos Principais #
- Registro de Dependências: Registre instâncias como singletons ou fábricas.
- Recuperação de Dependências: Obtenha dependências registradas de maneira simples e eficiente.
- Reset do Injetor: Resete todas as dependências registradas com um único método.
- Sobrecarga do Operador
call: Use o injetor como uma função para facilitar a recuperação de dependências.
Instalação #
Adicione o Alligator2 ao seu arquivo pubspec.yaml:
dependencies:
alligator2: ^1.0.0
Depois, execute o comando abaixo no terminal para instalar o package:
dart pub get
Como Usar #
Exemplo Básico #
Aqui está um exemplo básico de como usar o Alligator2 para registrar e recuperar dependências:
import 'package:alligator2/alligator2.dart';
// Definindo uma classe Logger de exemplo
class Logger {
void log(String message) => print('Log: $message');
}
void main() {
// Criando o injetor
final injector = Alligator2();
// Registrando a dependência Logger como singleton
injector.register<Logger>(() => Logger(), isSingleton: true);
// Recuperando e usando a instância do Logger
final logger = injector.get<Logger>();
logger.log('Alligator2 is working!');
// Também é possível usar o operador `call` para recuperar dependências
final loggerViaCall = injector<Logger>();
loggerViaCall.log('This is using the call operator!');
}
Uso de Singletons e Fábricas #
Você pode registrar uma dependência como singleton, que mantém a mesma instância em toda a aplicação, ou como fábrica, que cria uma nova instância sempre que solicitado.
Singleton
injector.register<Logger>(() => Logger(), isSingleton: true);
final logger1 = injector.get<Logger>();
final logger2 = injector.get<Logger>();
// logger1 e logger2 serão a mesma instância
assert(logger1 == logger2);
Fábrica
injector.register<Logger>(() => Logger(), isSingleton: false);
final logger1 = injector.get<Logger>();
final logger2 = injector.get<Logger>();
// logger1 e logger2 serão diferentes, pois uma nova instância é criada a cada vez
assert(logger1 != logger2);
Reset do Injetor #
Se você quiser resetar o injetor e remover todas as dependências registradas, use o método reset():
injector.reset();
// Tentar acessar uma dependência após o reset resultará em uma exceção
try {
injector.get<Logger>();
} catch (e) {
print(e); // '[Exception] Instance Logger not found'
}
Testes #
Você pode escrever testes para garantir que seu código que utiliza o Alligator2 está funcionando corretamente. Aqui está um exemplo de como testar a funcionalidade de registro e recuperação de dependências:
import 'package:flutter_test/flutter_test.dart';
import 'package:alligator2/alligator2.dart';
class Logger {
void log(String message) => print('Log: $message');
}
void main() {
test('Deve registrar e recuperar um singleton', () {
final injector = Alligator2();
injector.register<Logger>(() => Logger(), isSingleton: true);
final logger1 = injector.get<Logger>();
final logger2 = injector.get<Logger>();
expect(logger1, equals(logger2), reason: 'Singleton deve retornar a mesma instância');
});
test('Deve lançar exceção ao tentar recuperar uma dependência não registrada', () {
final injector = Alligator2();
expect(() => injector.get<Logger>(), throwsA(isA<Exception>()));
});
}
Licença #
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para mais detalhes.
Contribuição #
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests no repositório do projeto.
Alligator2 é uma solução eficiente para gerenciar dependências em projetos Flutter e Dart. Com sua simplicidade e flexibilidade, ele facilita o desenvolvimento de aplicações desacopladas e fáceis de manter.
### Seções Explicadas:
1. **Recursos Principais**: Destaca os recursos mais importantes do package, como registro de dependências, recuperação de singletons e fábricas, e o reset do injetor.
2. **Instalação**: Explica como adicionar o **Alligator2** ao projeto via `pubspec.yaml`.
3. **Como Usar**: Fornece exemplos de código simples para mostrar como registrar e recuperar dependências, além de explicar a diferença entre singletons e fábricas.
4. **Reset do Injetor**: Ensina como usar o método `reset()` para remover todas as dependências registradas.
5. **Testes**: Dá uma visão de como criar testes automatizados para garantir que o injetor de dependências funciona corretamente.
6. **Licença**: Inclui a licença MIT para o projeto, garantindo que os usuários saibam sob quais condições podem usar o package.
7. **Contribuição**: Incentiva outros desenvolvedores a contribuir com o projeto por meio de issues ou pull requests.