0 purchases
dependencies
This is a simple and flexible dependency injection container for dart.
If you are using Flutter consider the dependencies_flutter package.
Features #
Immutability: The injector is created via a builder so it won't be modified after being created.
Modules: Separate dependencies into logical pars. Useful to separate by environments.
Singletons: Bind singletons and lazy singletons.
Factories: Bind factories.
Named dependencies: Give your dependencies custom names.
Extra arguments: Pass arguments to your factory methods.
Works with Flutter: Since it doesn't use reflexion it works with Flutter.
Usage #
Set up #
Optionally create a module.
class PlayerModule extends Module {
@override
void configure(Binder binder) {
binder
..bindSingleton("playerkey", name: "api_key")
..bindFactory((injector, params) => Player(params["playerId"]))
..bindLazySingleton((injector, params) => Rest(injector));
}
}
copied to clipboard
Create a builder and use it to instantiate an injector.
final builder = Injector.builder()
..bind(instance: "abc123", isSingleton: true, name: "api_key")
..bindSingleton("abc123", name: "api_key_2")
..bindFactory((injector, params) => User(params["userId"]))
..bindLazySingleton((injector, params) => RestController(params["path"]))
..install(PlayerModule());
final injector = builder.build();
copied to clipboard
Usage #
Get instances from the container.
final Player player = injector.get(params: {"playerId":1});
final Rest rest = injector.get();
final String apiKey = injector.get(name: "api_key");
copied to clipboard
Optionally you can manage injectors with the registry. Feel free to create your own or use the singleton.
InjectorRegistry.instance.register(injector);
copied to clipboard
Injectors can be fetched from the registry.
final injector = InjectorRegistry.instance.get();
final namedInjector = InjectorRegistry.instance.get(name: "named_injector");
copied to clipboard
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.