generateSnapshotClass function
String
generateSnapshotClass(
- ClassElement c
)
Implementation
String generateSnapshotClass(ClassElement c) {
final fields = c.publicFields;
final initializers = fields.map((f) {
return '${f.displayName} = \$mut.${f.displayName}';
}).toList();
final initializerList = [
if (initializers.isNotEmpty) ...[
': ',
initializers.join(', '),
],
].join('');
final fieldsDefinition = fields.map((f) {
return 'final $f;';
}).join(' ');
final description = fields.map((f) {
final name = f.displayName;
return '$name = \$$name';
}).join(', ');
final params = c.defaultConstructor.parameters;
return '''
class ${c.snapshotName}
with SaveEquitable {
${c.snapshotConstructor}(
${c.displayName} \$mut,
${params.isEmpty ? '' : 'this.params,'}
) $initializerList;
$fieldsDefinition
${params.isEmpty ? '' : 'final ${c.parameterClassName} params;'}
@override
List<Object?> get \$keys => [
${fields.map((f) => f.displayName).join(',')}
];
@override
String toString() =>
'${c.displayName} { $description }';
}
''';
}