InjectGenerator class
CherryPick DI field injector generator for codegen.
Analyzes all Dart classes marked with @injectable() and generates a mixin (for example, _$ProfileScreen)
which contains the _inject method. This method will assign all fields annotated with @inject()
using the CherryPick DI container. Extra annotation qualifiers such as @named and @scope are respected
for each field. Nullable fields and Future/injectable async dependencies are also supported automatically.
Example usage in a project:
import 'package:cherrypick_annotations/cherrypick_annotations.dart';
@injectable()
class MyScreen with _$MyScreen {
  @inject()
  late final Logger logger;
  @inject()
  @named('test')
  late final HttpClient client;
  @inject()
  Future<Analytics>? analytics;
}
After running build_runner, this mixin will be auto-generated:
mixin _$MyScreen {
  void _inject(MyScreen instance) {
    instance.logger = CherryPick.openRootScope().resolve<Logger>();
    instance.client = CherryPick.openRootScope().resolve<HttpClient>(named: 'test');
    instance.analytics = CherryPick.openRootScope().tryResolveAsync<Analytics>(); // nullable async inject
  }
}
You may use the mixin (e.g., myScreen._inject(myScreen)) or expose your own public helper for instance field injection.
Supported scenarios:
- Ordinary injectable fields: resolve<T>().
- Named qualifiers: resolve<T>(named: ...).
- Scoping: CherryPick.openScope(scopeName: ...).resolve<T>().
- Nullable/incomplete fields: tryResolve/tryResolveAsync.
- Async dependencies: Future<T>/resolveAsync<T>().
See also:
- @inject
- @injectable
Constructors
- InjectGenerator()
- 
          
            const
Properties
- hashCode → int
- 
  The hash code for this object.
  no setterinherited
- runtimeType → Type
- 
  A representation of the runtime type of the object.
  no setterinherited
- throwOnUnresolved → bool
- 
  
  finalinherited
- typeChecker → TypeChecker
- 
  
  no setterinherited
Methods
- 
  generate(LibraryReader library, BuildStep buildStep) → FutureOr< String> 
- 
  Generates Dart code for an input Dart library.
  inherited
- 
  generateForAnnotatedElement(Element element, ConstantReader annotation, BuildStep buildStep) → FutureOr< String> 
- Main entry point for CherryPick field injection code generation.
- 
  noSuchMethod(Invocation invocation) → dynamic 
- 
  Invoked when a nonexistent method or property is accessed.
  inherited
- 
  toString() → String 
- 
  A string representation of this object.
  inherited
Operators
- 
  operator ==(Object other) → bool 
- 
  The equality operator.
  inherited