instanceFieldsAndMethods property
Any instance fields that should be copied to the adapter.
Should terminate in ;
if required.
Implementation
@override
List<String> get instanceFieldsAndMethods {
final fieldsToColumns = unignoredFields.fold<List<String>>([], (acc, field) {
final offlineFirstAnnotation = offlineFirstFields.annotationForField(field);
final where =
offlineFirstAnnotation.where?.entries.fold<List<String>>(<String>[], (acc, entry) {
if (entry.value.contains("'")) {
acc.add("'${entry.key}': \"${entry.value}\"");
} else {
acc.add("'${entry.key}': '${entry.value}'");
}
return acc;
}).join(',');
if (where != null && where.isNotEmpty) {
final output = '''
'${field.name}': const RuntimeOfflineFirstDefinition(
where: <String, String>{$where},
)
''';
acc.add(output);
}
return acc;
});
return [
if (fieldsToColumns.isNotEmpty)
'@override\nfinal fieldsToOfflineFirstRuntimeDefinition = <String, RuntimeOfflineFirstDefinition>{${fieldsToColumns.join(',\n')}};',
...super.instanceFieldsAndMethods,
];
}