generate method
Implementation
void generate(IndentingWriter out) {
if (!_resolved) throw StateError('resolve not called');
var name = _extensionName;
final conditionalName = configurationDependent(
'protobuf.omit_field_names', quoted(_extensionName));
var type = _field.baseType;
var dartType = type.getDartType(fileGen!);
final conditionalExtendedName = configurationDependent(
'protobuf.omit_message_names', quoted(_extendedFullName));
String invocation;
var positionals = <String>[];
positionals.add(conditionalExtendedName);
positionals.add(conditionalName);
positionals.add('${_field.number}');
positionals.add(_field.typeConstant);
var named = <String, String?>{};
named['protoName'] = _field.quotedProtoName;
if (_field.isRepeated) {
invocation = '$protobufImportPrefix.Extension<$dartType>.repeated';
named['check'] =
'$protobufImportPrefix.getCheckFunction(${_field.typeConstant})';
if (type.isMessage || type.isGroup) {
named['subBuilder'] = '$dartType.create';
} else if (type.isEnum) {
named['valueOf'] = '$dartType.valueOf';
named['enumValues'] = '$dartType.values';
}
} else {
invocation = '$protobufImportPrefix.Extension<$dartType>';
named['defaultOrMaker'] = _field.generateDefaultFunction();
if (type.isMessage || type.isGroup) {
named['subBuilder'] = '$dartType.create';
} else if (type.isEnum) {
var dartEnum = type.getDartType(fileGen!);
named['valueOf'] = '$dartEnum.valueOf';
named['enumValues'] = '$dartEnum.values';
}
}
var fieldDefinition = 'static final ';
out.printAnnotated(
'$fieldDefinition$name = '
'$invocation(${ProtobufField._formatArguments(positionals, named)});\n',
[
NamedLocation(
name: name,
fieldPathSegment: List.from(fieldPath),
start: fieldDefinition.length)
]);
}