calculateMaxAxisValues static method
Implementation
static LineChartMinMaxAxisValues calculateMaxAxisValues(
List<LineChartBarData> lineBarsData,
) {
if (lineBarsData.isEmpty) {
return LineChartMinMaxAxisValues(0, 0, 0, 0);
}
final listWrapper = lineBarsData.toWrapperClass();
if (_cachedResults.containsKey(listWrapper)) {
return _cachedResults[listWrapper]!.copyWith(readFromCache: true);
}
final LineChartBarData lineBarData;
try {
lineBarData =
lineBarsData.firstWhere((element) => element.spots.isNotEmpty);
} catch (e) {
// There is no lineBarData with at least one spot
return LineChartMinMaxAxisValues(0, 0, 0, 0);
}
final AFlSpot firstValidSpot;
try {
firstValidSpot = lineBarData.spots
.firstWhere((element) => element != AFlSpot.nullSpot);
} catch (e) {
// There is no valid spot
return LineChartMinMaxAxisValues(0, 0, 0, 0);
}
var minX = firstValidSpot.x;
var maxX = firstValidSpot.x;
var minY = firstValidSpot.y;
var maxY = firstValidSpot.y;
for (final barData in lineBarsData) {
if (barData.spots.isEmpty) {
continue;
}
if (barData.mostRightSpot.x > maxX) {
maxX = barData.mostRightSpot.x;
}
if (barData.mostLeftSpot.x < minX) {
minX = barData.mostLeftSpot.x;
}
if (barData.mostTopSpot.y > maxY) {
maxY = barData.mostTopSpot.y;
}
if (barData.mostBottomSpot.y < minY) {
minY = barData.mostBottomSpot.y;
}
}
final result = LineChartMinMaxAxisValues(minX, maxX, minY, maxY);
_cachedResults[listWrapper] = result;
return result;
}