Skip to content

jacob314/di.dart

This branch is 1 commit ahead of, 10 commits behind dart-archive/di.dart:master.

Folders and files

NameName
Last commit message
Last commit date
Jul 23, 2014
Dec 1, 2013
Jul 23, 2014
Mar 24, 2015
Jul 23, 2014
Mar 17, 2015
Sep 11, 2014
Jul 23, 2014
Feb 5, 2014
Mar 13, 2015
Apr 9, 2013
Jul 23, 2014
Mar 17, 2015
Dec 20, 2013
Apr 16, 2014
Mar 24, 2015
Oct 30, 2014
Aug 8, 2014
Jul 23, 2014

Repository files navigation

Build Status

Dependency Injection (DI) framework

Installation

Add dependency to your pubspec.yaml.

dependencies:
  di: ">=3.3.4 <4.0.0"

Then, run pub install.

Import di.

import 'package:di/di.dart';

Example

import 'package:di/di.dart';

abstract class Engine {
  go();
}

class Fuel {}

class V8Engine implements Engine {
  Fuel fuel;
  V8Engine(this.fuel);

  go() {
    print('Vroom...');
  }
}

class ElectricEngine implements Engine {
  go() {
    print('Hum...');
  }
}

// Annotation
class Electric {
  const Electric();
}

class GenericCar {
  Engine engine;

  GenericCar(this.engine);

  drive() {
    engine.go();
  }
}

class ElectricCar {
  Engine engine;

  ElectricCar(@Electric() this.engine);

  drive() {
    engine.go();
  }
}

void main() {
  var injector = new ModuleInjector([new Module()
      ..bind(Fuel)
      ..bind(GenericCar)
      ..bind(ElectricCar)
      ..bind(Engine, toFactory: (fuel) => new V8Engine(fuel), inject: [Fuel])
      ..bind(Engine, toImplementation: ElectricEngine, withAnnotation: const Electric())
  ]);
  injector.get(GenericCar).drive(); // Vroom...
  injector.get(ElectricCar).drive(); // Hum...
}

Contributing

Refer to the guidelines for contributing to AngularDart.

About

Dependency Injection framework for Dart.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Dart 89.0%
  • JavaScript 8.1%
  • Shell 2.5%
  • Other 0.4%