calculateDataSetsPosition method
List<RadarDataSetsPosition>
calculateDataSetsPosition(
- Size viewSize,
- PaintHolder<
RadarChartData> holder
Implementation
@visibleForTesting
List<RadarDataSetsPosition> calculateDataSetsPosition(
Size viewSize,
PaintHolder<RadarChartData> holder,
) {
final data = holder.data;
final centerX = radarCenterX(viewSize);
final centerY = radarCenterY(viewSize);
final radius = radarRadius(viewSize);
final maxValue = data.maxEntry.value;
final scale = maxValue == 0 ? 0 : radius / maxValue;
final angle = (2 * pi) / data.titleCount;
final dataSetsPosition = List<RadarDataSetsPosition>.filled(
data.dataSets.length,
const RadarDataSetsPosition([]),
);
for (var i = 0; i < data.dataSets.length; i++) {
final dataSet = data.dataSets[i];
final entriesOffset =
List<Offset>.filled(dataSet.dataEntries.length, Offset.zero);
for (var j = 0; j < dataSet.dataEntries.length; j++) {
final point = dataSet.dataEntries[j];
final xAngle = cos(angle * j - pi / 2);
final yAngle = sin(angle * j - pi / 2);
final scaledPoint = scale * point.value;
final entryOffset = Offset(
centerX + scaledPoint * xAngle,
centerY + scaledPoint * yAngle,
);
entriesOffset[j] = entryOffset;
}
dataSetsPosition[i] = RadarDataSetsPosition(entriesOffset);
}
return dataSetsPosition;
}