toMap method
Serializes in the format-2 entry shape. encoder converts an element
to a JSON-encodable value; by default the element itself is stored
(correct for JSON primitives — matching what fromMap's decoder
expects back).
Implementation
@override
Map<String, dynamic> toMap({Object? Function(T element)? encoder}) {
Object? encode(T element) => encoder != null ? encoder(element) : element;
List<Map<String, dynamic>> entries(Map<T, Set<String>> source) => [
for (final MapEntry(:key, :value) in source.entries) {'e': encode(key), 't': value.toList()},
];
return {
'format': 2,
'add': entries(_addSet),
'remove': entries(_removeSet),
};
}