Infusion - Dependency Injection

A light weight dependency injector that can be used with any dart project.

Features

  • Transient & singleton services
  • Named services
  • Support for service providers/factories

Getting started

Add dependency to pubspec.yaml then run dart pub get

dependencies:
    infusion: ^0.1.0

Usage

import 'package:infusion/infusion.dart';

class Implementation implements Interface {
    ...
}

class ImplementationB implements Interface {
    ...
}

class Service {
    final Interface impl;
    final Interface implB;

    Service(this.impl, @Named("another") this.implB)
}

void main() {
    final container = Container();

    // Add service 'Implementation' that implements 'Interface' to container
    container.addService<Interface, Implementation>();

    // Add service 'Implementation' named 'another' that implements 'Interface' to container
    container.addService<Interface, ImplementationB>(identifier: "another");

    container.getService<Interface>(); // Returns Implementation;
    container.getService<Interface>(identifier: "another"); // Returns ImplementationB;
}

Additional information

A larger example can be found in example/infusion_example.dart

Libraries

infusion