genInject method

Method genInject(
  1. List<ServiceInfo> services,
  2. Element element,
  3. ConstantReader annotation,
  4. BuildStep buildStep,
  5. List<Directive> imports,
)
inherited

统一的注入方法

Implementation

Method genInject(
  List<T> services,
  Element element,
  ConstantReader annotation,
  BuildStep buildStep,
  List<Directive> imports,
) {
  final servicesWithInjection = services
      .where((s) => s.injectableFields.isNotEmpty)
      .toList();

  return Method(
    (b) => b
      ..static = false
      ..annotations.add(CodeExpression(Code('override\n')))
      ..returns = refer('Future<void>')
      ..modifier = MethodModifier.async
      ..name = 'inject'
      ..docs.add('/// 为所有服务注入依赖')
      ..body = Code(
        genInjectBody(
          servicesWithInjection,
          element,
          annotation,
          buildStep,
          imports,
        ),
      ),
  );
}