PdfPerfStats.fromJson constructor
Rebuilds a snapshot from toJson output (missing/unknown names are tolerated so snapshots survive enum evolution across isolates).
Implementation
factory PdfPerfStats.fromJson(Map<String, Object?> json) {
final stats = PdfPerfStats.empty();
void read(String key, List<String> names, List<int> into,
[List<int>? callsInto]) {
final section = json[key];
if (section is! Map) return;
section.forEach((name, value) {
final index = names.indexOf(name as String);
if (index < 0) return;
if (value is int) {
into[index] = value;
} else if (value is Map) {
into[index] = (value['us'] as num?)?.toInt() ?? 0;
callsInto?[index] = (value['calls'] as num?)?.toInt() ?? 0;
}
});
}
read('phases', PdfPerfPhase.values.map((p) => p.name).toList(),
stats.phaseUs, stats.phaseCalls);
read('counts', PdfPerfCount.values.map((c) => c.name).toList(),
stats.counts);
read('events', PdfPerfEvent.values.map((e) => e.name).toList(),
stats.events);
return stats;
}