buildEqualitySnippet function
Builds equality operator snippet.
Implementation
String buildEqualitySnippet(
String className,
List<
({
String name,
String type,
bool isNamed,
bool isNullable,
bool isCollection,
})
>
fields, {
required DartFileEditBuilder builder,
}) {
if (fields.any((f) => f.isCollection)) {
builder.importLibrary(Uri.parse('package:collection/collection.dart'));
}
final equalityFields = fields
.map((f) {
if (f.isCollection) {
return 'const DeepCollectionEquality().equals(${f.name}, other.${f.name})';
}
return '${f.name} == other.${f.name}';
})
.join(' && ');
final equalityCheck = fields.isNotEmpty ? ' && $equalityFields' : '';
return '''
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is $className$equalityCheck;''';
}