Orientação gerada a partir de informações públicas. Apenas para referência.
Koin é um framework de injeção de dependência (DI) leve e pragmático para projetos em Dart, projetado para simplificar a gestão de dependências em aplicações. Ele oferece uma sintaxe limpa e concisa para definir e injetar dependências, promovendo modularidade e testabilidade. O Koin suporta componentes funcionais e baseados em classes, permitindo que desenvolvedores gerenciem facilmente singleton, fábricas e instâncias com escopo. Com pouca quantidade de código repetitivo, integra-se perfeitamente ao Flutter e a outros aplicativos Dart, tornando-o ideal para bases de código escaláveis e sustentáveis.
Casos de uso
Gerenciando dependências em todo o aplicativo
Testando com dependências simuladas
Modularização de aplicações em grande escala
Simplificando a instanciação de serviço
Apoiar diferentes ambientes (dev, prod)
Habilitar a separação clara de preocupações
Principais recursos
Boilerplate mínimo
Definições funcionais e baseadas em classe
Vínculos singleton, factory e escopo
Testes fáceis com substituição de dependência
Suporte embutido para inicialização tardia
Tempo de execução leve e rápido
Indicado para
Desenvolvedores Flutter em busca de DI simples
Projetos que exigem arquitetura modular
Equipes priorizando testabilidade
Aplicações com gráficos de dependência complexos
Desenvolvedores que querem uma alternativa leve em vez de frameworks de DI maiores
Considerações
Documentação limitada em comparação com frameworks maduros
Tamanho menor da comunidade
Sem gerenciamento de estado embutido
Não adequado para aplicações empresariais muito grandes sem personalização
Requer compreensão dos conceitos de injeção de dependência para uso ideal
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
Koin.dart
An pragmatic and flexible lightweight dependency injection library. This is a port of Koin for Dart projects.
Written in pure Dart, using functional resolution only: no code generation, no reflection.
// Given some classes classBloc{
finalRepository service;
Bloc(this.service);
get state => "Hello";
}
classRepository{}
// just declare your providers(definitions)final myModule = Module()
// Declare a single provider(definition) for Bloc class
..single((s) => Bloc(s.get()))
// Declare a single provider(definition) for Repository class
..single((s) => Repository());
Starting Koin
Use the startKoin() function to start Koin in your application.