alligator2 0.0.1 copy "alligator2: ^0.0.1" to clipboard
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.

0
likes
150
points
23
downloads

Publisher

unverified uploader

Weekly Downloads

A simple dependency injection package for Dart/Flutter.

Homepage

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on alligator2