writeClassDecode method
void
writeClassDecode(
- KotlinOptions generatorOptions,
- Root root,
- Indent indent,
- Class classDefinition, {
- required String dartPackageName,
override
Writes a single class decode method to indent
.
Implementation
@override
void writeClassDecode(
KotlinOptions generatorOptions,
Root root,
Indent indent,
Class classDefinition, {
required String dartPackageName,
}) {
final String className = classDefinition.name;
indent.write('companion object ');
indent.addScoped('{', '}', () {
indent
.write('fun fromList(${varNamePrefix}list: List<Any?>): $className ');
indent.addScoped('{', '}', () {
enumerate(getFieldsInSerializationOrder(classDefinition),
(int index, final NamedType field) {
final String listValue = '${varNamePrefix}list[$index]';
indent.writeln(
'val ${field.name} = ${_cast(indent, listValue, type: field.type)}');
});
indent.write('return $className(');
for (final NamedType field
in getFieldsInSerializationOrder(classDefinition)) {
final String comma =
getFieldsInSerializationOrder(classDefinition).last == field
? ''
: ', ';
indent.add('${field.name}$comma');
}
indent.addln(')');
});
});
}