Get It Injector
Annotation package for automated dependency injection with get_it
This package provides the core annotations used by get_it_injector_gen to automatically generate dependency injection code for your Dart and Flutter projects.
Installation
dependencies:
get_it_injector: ^0.6.0
dev_dependencies:
get_it_injector_gen: ^0.6.0
build_runner: ^2.4.0
Available Annotations
Registration Types
| Annotation | Description | Usage |
|---|---|---|
@singleton |
Single instance shared across the app | @singleton class ApiService {} |
@factory |
New instance created each time | @factory class UserModel {} |
@lazySingleton |
Singleton created on first access | @lazySingleton class DatabaseService {} |
Control Annotations
| Annotation | Description | Usage |
|---|---|---|
@setup |
Marks the dependency setup function | @setup Future<void> configure() => getIt.init(); |
@ignore |
Excludes class from registration | @ignore class TestHelper {} |
@use |
Specifies which constructor to use | @use MyClass.named() |
Priority & Grouping
| Annotation | Description | Usage |
|---|---|---|
@Priority(value) |
Controls registration order | @Priority(100) @singleton class CoreService {} |
@Group('name') |
Groups related dependencies | @Group('database') @singleton class UserRepo {} |
Pre-defined Priorities
@lowPriority // Priority(0) - registered last
@mediumPriority // Priority(50) - registered middle
@highPriority // Priority(100) - registered first
Quick Examples
Basic Registration
import 'package:get_it_injector/get_it_injector.dart';
@singleton
class ApiService {
void fetchData() => print('Fetching...');
}
@factory
class UserRepository {
final ApiService _api;
UserRepository(this._api);
}
Interface Implementation
abstract class Logger {
void log(String message);
}
@singleton
class ConsoleLogger implements Logger {
@override
void log(String message) => print(message);
}
// Usage: getIt<Logger>() returns ConsoleLogger instance
Priority Control
@highPriority
@singleton
class CoreService {} // Registered first
@mediumPriority
@singleton
class FeatureService {} // Registered second
@lowPriority
@singleton
class OptionalService {} // Registered last
Grouping
@Group('database')
@singleton
class UserRepository {}
@Group('database')
@singleton
class ProductRepository {}
@Group('services')
@singleton
class NotificationService {}
Setup Function
import 'package:get_it/get_it.dart';
import 'package:get_it_injector/get_it_injector.dart';
import 'injection.config.dart'; // Generated file
final getIt = GetIt.instance;
@setup
Future<void> configureDependencies() => getIt.init();
Code Generation
This package only provides annotations. To generate the actual registration code, you need:
- Add
get_it_injector_gento yourdev_dependencies - Run the build runner:
dart run build_runner build - Import and call your setup function
For detailed configuration options and advanced usage, see the get_it_injector_gen documentation.
License
This software is released under the Apache 2.0 license. www.apache.org/licenses/LICENSE-2.0
Libraries
- get_it_injector
- Copyright 2026 CouchSurfing International Inc.