dice 1.1.3 dice: ^1.1.3 copied to clipboard
Lightweight dependency injection framework for Dart.
Dice #
Lightweight dependency injection framework for Dart.
Injection Types #
Dice supports the following injection forms
- Fields starting with $ and _$ are injected
- Setters starting $ are injected
- Variables starting with $ and _$ are injected
Injection of parameters is unsupported as Dart's mirror system cannot handle these yet.
Quick Guide #
1. Add the folowing to your pubspec.yaml and run pub install
dependencies:
dice: any
2. Create some classes and interfaces to inject
class BillingServiceImpl implements BillingService {
// fields starting with $ and _$ gets injected
CreditProcessor _$processor;
Receipt chargeOrder(Order order, CreditCard creditCard) {
if(!_$processor.validate(creditCard)) {
throw new ArgumentError("payment method not accepted");
}
// :
}
}
3. Register the type/class bindings in a module
class ExampleModule extends Module {
configure() {
// bind CreditProcessor to a singleton
bind(CreditProcessor).toInstance(new CreditProcessorImpl());
// bind BillingService to a prototype
bind(BillingService).toType(new BillingServiceImpl());
}
}
4. Run it
import "package:dice/dice.dart";
main() {
var injector = new Injector(new ExampleModule());
injector.getInstance(BillingService).then((BillingService billing) {
var creditCard = new CreditCard("VISA");
var order = new Order("Dart: Up and Running");
billing.chargeOrder(order, creditCard);
});
}
for more information see the example application here.