writeClassDecode method
void
writeClassDecode(
- SwiftOptions generatorOptions,
- Root root,
- Indent indent,
- Class classDefinition, {
- required String dartPackageName,
override
Writes a single class decode method to indent
.
Implementation
@override
void writeClassDecode(
SwiftOptions generatorOptions,
Root root,
Indent indent,
Class classDefinition, {
required String dartPackageName,
}) {
final String className = classDefinition.name;
indent.writeln('// swift-format-ignore: AlwaysUseLowerCamelCase');
indent.write(
'static func fromList(_ ${varNamePrefix}list: [Any?]) -> $className? ');
indent.addScoped('{', '}', () {
enumerate(getFieldsInSerializationOrder(classDefinition),
(int index, final NamedType field) {
final String listValue = '${varNamePrefix}list[$index]';
_writeDecodeCasting(
indent: indent,
value: listValue,
variableName: field.name,
type: field.type,
);
});
indent.newln();
indent.write('return ');
indent.addScoped('$className(', ')', () {
for (final NamedType field
in getFieldsInSerializationOrder(classDefinition)) {
final String comma =
getFieldsInSerializationOrder(classDefinition).last == field
? ''
: ',';
indent.writeln('${field.name}: ${field.name}$comma');
}
});
});
}