transformValues method
Transforms the x and y values to screen coordinates.
Implementation
@override
void transformValues() {
fillPath.reset();
double startAngle;
double endAngle;
double degree;
double outerRadius;
if (_priorEndAngle.isNaN) {
final int seriesStartAngle = series.startAngle - 90;
degree = _degree * animationFactor;
outerRadius = _outerRadius * animationFactor;
startAngle = lerpDouble(seriesStartAngle, _startAngle, animationFactor)!;
endAngle = startAngle + degree;
} else {
startAngle = lerpDouble(_priorStartAngle, _startAngle, animationFactor)!;
endAngle = lerpDouble(_priorEndAngle, _endAngle, animationFactor)!;
degree = endAngle - startAngle;
outerRadius = _outerRadius;
}
// If the startAngle and endAngle value is same, then degree will be 0.
// Hence no need to render segments.
if (!isVisible && degree == 0) {
return;
}
if (series.explode && _isExploded) {
final double midAngle = (_startAngle + _endAngle) / 2;
_center = calculateExplodingCenter(
midAngle, _outerRadius, series.center, series.explodeOffset);
} else {
_center = series.center;
}
fillPath = calculateArcPath(
_innerRadius, outerRadius, _center, startAngle, endAngle, degree,
isAnimate: true);
}