generateStepBarPath method
Path
generateStepBarPath(
- Size viewSize,
- LineChartBarData barData,
- List<
AFlSpot> barSpots, - PaintHolder<
LineChartData> holder, { - Path? appendToPath,
generates a Step Line Chart
bar style path.
Implementation
@visibleForTesting
Path generateStepBarPath(
Size viewSize,
LineChartBarData barData,
List<AFlSpot> barSpots,
PaintHolder<LineChartData> holder, {
Path? appendToPath,
}) {
final path = appendToPath ?? Path();
final size = barSpots.length;
final x = getPixelX(barSpots[0].x, viewSize, holder);
final y = getPixelY(barSpots[0].y, viewSize, holder);
if (appendToPath == null) {
path.moveTo(x, y);
} else {
path.lineTo(x, y);
}
for (var i = 0; i < size; i++) {
/// CurrentSpot
final current = Offset(
getPixelX(barSpots[i].x, viewSize, holder),
getPixelY(barSpots[i].y, viewSize, holder),
);
/// next point
final next = Offset(
getPixelX(barSpots[i + 1 < size ? i + 1 : i].x, viewSize, holder),
getPixelY(barSpots[i + 1 < size ? i + 1 : i].y, viewSize, holder),
);
final stepDirection = barData.lineChartStepData.stepDirection;
// middle
if (current.dy == next.dy) {
path.lineTo(next.dx, next.dy);
} else {
final deltaX = next.dx - current.dx;
path
..lineTo(current.dx + deltaX - (deltaX * stepDirection), current.dy)
..lineTo(current.dx + deltaX - (deltaX * stepDirection), next.dy)
..lineTo(next.dx, next.dy);
}
}
return path;
}