Pakete, Repositories und App-Kategorien suchen

Paketdetailsv5.1.0

scope

Eine Abhängigkeitsinjektions-(Inversion-of-Control-)Bibliothek. Unterstützt verschachtelte Bereiche und mehrere Werte desselben Typs.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
254.000
Likes
14
Pub-Punkte
150

Paket installieren

flutter pub add scope

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Scope ist eine Dependency-Injection-(Inversion-of-Control-)Bibliothek für Flutter und Dart, die strukturierte, hierarchische Abhängigkeitsverwaltung ermöglicht. Sie unterstützt verschachtelte Bereiche zur Isolierung von Abhängigkeiten und erlaubt mehrere Instanzen desselben Typs, was sie ideal für modulare Anwendungen macht. Mit sauberer API-Design und minimalem Boilerplate vereinfacht Scope die Zustandsverwaltung und Dienstinstanziierung über verschiedene Teile einer App hinweg. Es funktioniert nahtlos auf allen wichtigen Plattformen wie Android, iOS, Web, macOS, Windows und Linux.

Anwendungsfälle

  • modulare Anwendungsarchitektur
  • Testen mit isolierten Abhängigkeiten
  • Verwaltung gemeinsamer und scoped Dienste
  • Behandlung mehrerer Instanzen von Diensten
  • Plattformübergreifende App-Entwicklung

Hauptmerkmale

  • Unterstützung für verschachtelte Bereiche
  • Mehrere Werte desselben Typs
  • Minimales Boilerplate
  • Platform-agnostic
  • Sauberer API-Entwurf
  • Einfache Integration in bestehenden Code

Geeignet für

  • Groß angelegte Flutter-Apps
  • Testbare Architekturen
  • microservices-ähnliche Anwendungsmodul
  • Teams, die Abhängigkeitsisolierung benötigen
  • Entwickler, die komplexe DI-Frameworks vermeiden

Hinweise

  • Lernkurve für neue Benutzer
  • Eingeschränkte Dokumentation im Vergleich zu etablierten Alternativen
  • Am besten geeignet für Apps mit komplexen Abhängigkeitsbäumen

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

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.

Kategorien

Abhängigkeiten

Abhängigkeiten 1 Einträge

Quell-Repository

Projekte, die dieses Paket verwenden