buildWidgetHeatMap function
List<WidgetHeatMapEntry>
buildWidgetHeatMap(
- List<
PerformanceIssue> issues, { - int maxEntries = 10,
Build a heat map from a list of issues, filtering out framework widgets
and returning the top maxEntries by total ranking score.
Implementation
List<WidgetHeatMapEntry> buildWidgetHeatMap(
List<PerformanceIssue> issues, {
int maxEntries = 10,
}) {
final byWidget = <String, _Accumulator>{};
for (final issue in issues) {
final name = issue.widgetName;
if (name == null || name.isEmpty) continue;
if (_frameworkPrefixes.contains(name)) continue;
final acc = byWidget.putIfAbsent(name, () => _Accumulator(name));
acc.issueCount++;
acc.totalScore += issue.rankingScore ?? 0;
if (issue.stableId != null && !acc.stableIds.contains(issue.stableId)) {
acc.stableIds.add(issue.stableId!);
}
if (issue.severity.index > acc.worstSeverityIndex) {
acc.worstSeverityIndex = issue.severity.index;
}
}
final entries = byWidget.values.map((a) => a.toEntry()).toList()..sort();
if (entries.length <= maxEntries) return entries;
return entries.sublist(0, maxEntries);
}