paint method
Paints the current bar data on the canvas.
Implementation
@override
void paint(ChartCanvas canvas, double animationPercent) {
// Clean up the bars that no longer exist.
if (animationPercent == 1.0) {
final keysToRemove = HashSet<String>();
_barStackMap.forEach((key, barStackList) {
barStackList.retainWhere(
(bar) => !bar.animatingOut && !bar.targetBar!.measureIsNull!,
);
if (barStackList.isEmpty) {
keysToRemove.add(key);
}
});
// When cleaning up the animation, also clean up the keys used to lookup
// if a bar is selected.
for (final key in keysToRemove) {
_barStackMap.remove(key);
_currentKeys.remove(key);
}
_currentGroupsStackKeys.forEach((domain, keys) {
keys.removeWhere(keysToRemove.contains);
});
}
_barStackMap.forEach((stackKey, barStack) {
// Turn this into a list so that the getCurrentBar isn't called more than
// once for each animationPercent if the barElements are iterated more
// than once.
final barElements = barStack
.map((animatingBar) => animatingBar.getCurrentBar(animationPercent))
.toList();
if (barElements.isNotEmpty) {
paintBar(canvas, animationPercent, barElements);
}
});
}