Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev5.1.0

scope

Uma biblioteca de injeção de dependência (inversão de controle). Suporta escopos aninhados e múltiplos valores do mesmo tipo.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
254 mil
Curtidas
14
Pontos Pub
150

Instalar pacote

flutter pub add scope

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

Scope é uma biblioteca de injeção de dependência (inversão de controle) para Flutter e Dart que permite gerenciamento estruturado e hierárquico de dependências. Suporta escopos aninhados para isolar dependências e permite múltiplas instâncias do mesmo tipo, tornando-o ideal para aplicações modulares. Com uma arquitetura de API limpa e pouco boilerplate, o Scope simplifica a gestão de estado e a instanciação de serviços em diferentes partes do aplicativo. Funciona perfeitamente em todas as principais plataformas, incluindo Android, iOS, Web, macOS, Windows e Linux.

Casos de uso

  • arquitetura de aplicativo modular
  • Testes com dependências isoladas
  • Gerenciamento de serviços compartilhados e com escopo
  • Gerenciamento de serviço multiinstância
  • Desenvolvimento de aplicativos multiplataforma

Principais recursos

  • Suporte a escopos aninhados
  • Vários valores do mesmo tipo
  • Boilerplate mínimo
  • Platform-agnostic
  • Design de API limpo
  • Integração fácil com código existente

Indicado para

  • Aplicativos Flutter em grande escala
  • Arquiteturas testáveis
  • módulos de aplicativo semelhantes a microsserviços
  • Equipes que precisam de isolamento de dependência
  • Desenvolvedores evitando frameworks de injeção de dependência complexos

Considerações

  • Curva de aprendizado para novos usuários
  • Documentação limitada em comparação com alternativas maduras
  • Mais adequado para aplicativos com árvores de dependência complexas

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

Scope

Scope provides Inversion of Control using the dependency injection (DI) pattern for Dart applications.

Scope allows you to inject values into a scope and then 'use' those dependencies from any method (or constructor) called within that scope.

Scope is incredibly easy to use with no additional plumbing required.

Scope is not a replacement for the likes of Provider. Provider does dependency injection for your BuildContext whilst Scope provides DI for your call stack.

For Java developers Scope provides similar functionality to thread local variables.

Scope supports nested scopes; overload or add additional values at each level.

Supporters

Scope is supported by OnePub the private Dart package repository.

https://onepub.dev

The best way to understand Scope is with an example:

import 'package:scope/scope.dart';
import 'package:money2/money2.dart';

const ageKey = ScopeKey<int>();
const heightKey = ScopeKey<int>();
const incomeKey = ScopeKey<Money>();
const countKey = ScopeKey<int>();

void main() async {
    /// create a Scope
    final scope = Scope()
    
    /// inject values
    ..value<int>(ageKey, 18)
    ..value<int>(heightKey, 182) // centimetres
    /// single value from factory method
    ..single<Money>(incomeKey, () => calcIncome)
    /// sequence of values from factory method.
    ..sequence<int>(countKey, () => tracker);
    
    /// run some code within the Scope
    await scope.run(() async => a();
}
void a() {
    print('Your height is ${use(heightKey)}');
    printRealWorth();
}

/// `use` the injected values
void printRealWorth() {
    print('You are the ${use(countKey)} person to ask');
    print('You are ${use(ageKey)} years old');
    print('You earn ${use(incomeKey} per hour.');
}

Money calcIncome() {
    final age = use(ageKey);
    if (age < 18) return Money.parse(r'$10.00');

    return Money.parse(r'$20.00');
}

var count = 0;
int tracker()
{
    return count++;
}

See the Scope documentation at:

https://scope.onepub.dev

The best practice guide is worth a read:

https://scope.onepub.dev/guides/best-practice

Authors: 
Philipp Schiffmann <philippschiffmann93@gmail.com>
S. Brett Sutton

Scope is a reimagining of Philipp's zone_id package. All credit goes to Phillipp's original implementation without which Scope wouldn't exist.

Categorias

Dependências

Lista de dependências 1 itens

Repositório-fonte

Projetos que usam este pacote