compareMessages function
Implementation
List<Difference> compareMessages(
GeneratedMessage message1, GeneratedMessage message2) {
final differences = <Difference>[];
final descriptor1 = message1.info_;
for (var field in descriptor1.byName.values) {
final fieldName = field.name;
final fieldValue1 = message1.getField(field.tagNumber);
final fieldValue2 = message2.getField(field.tagNumber);
if (fieldValue1 != null && fieldValue2 != null) {
if (fieldValue1 is GeneratedMessage && fieldValue2 is GeneratedMessage) {
// Recursively compare nested objects
final nestedDifferences = compareMessages(fieldValue1, fieldValue2);
differences.addAll(nestedDifferences);
} else if (fieldValue1 != fieldValue2) {
differences.add(Difference(fieldName, fieldValue1, fieldValue2));
}
}
}
return differences;
}