Fabric is a dependency injection library. Using a generator, it can automate the task of wiring dependencies for you.
- A central registry for registering dependencies
- A generator to automatically generate wiring code
Add the Fabric libraries to pubspec.yaml:
dependencies:
fabric_metadata: 0.0.1
fabric_manager: 0.0.1
dev_dependencies:
build_runner: ^2.1.10
fabric_generator: 0.0.1
Add the @managed
annotation to the classes you want to manage dependencies for:
@managed
class FooService {
final FooRepository repository;
FooService(this.repository);
}
@managed
class PostgresqlFooRepository implements FooRepository {
}
Generate wiring code:
dart pub get
dart run build_runner build
Import the generated code and get the stuff you need:
import 'fabric.g.dart';
main() {
var fabric = createFabric();
var service = fabric.getInstance<FooService>();
}