generateType method

FutureOr<GenerateComponentResult> generateType(
  1. Element2 element,
  2. ConstantReader annotation,
  3. BuildStep buildStep
)

Implementation

FutureOr<GenerateComponentResult> generateType(
  Element2 element,
  ConstantReader annotation,
  BuildStep buildStep,
) {
  final prefix =
      annotation.peek(GenerateNameBase.$prefix)?.stringValue ??
      const GenerateLib().prefix;

  final varName = '$prefix${element.displayName.camelCase}';
  final uri = element.library2?.uri;
  if (uri == null) throw Exception('cannot parse uri of $element');

  final expression =
      '${TypeIdentifier.$type.name}('
      "  ${TypeIdentifier.$name}: '${element.name3 ?? ''}', "
      '  ${TypeIdentifier.$lib}: Uri('
      "    scheme: '${uri.scheme}', "
      "    path: '${uri.path}', "
      '  ), '
      ')';
  return GenerateComponentResult(content: 'final $varName = $expression;');
}