From 56b8cdd47862d68a532f034db160ace8da3592bb Mon Sep 17 00:00:00 2001 From: Chris Elliot Date: Wed, 17 Jul 2024 16:29:28 +0100 Subject: [PATCH] add startMin param --- lib/src/chart/base/axis_chart/axis_chart_data.dart | 8 ++++++++ lib/src/chart/base/axis_chart/axis_chart_helper.dart | 11 +++++++++-- lib/src/chart/base/axis_chart/axis_chart_painter.dart | 3 +++ .../axis_chart/side_titles/side_titles_widget.dart | 1 + 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/src/chart/base/axis_chart/axis_chart_data.dart b/lib/src/chart/base/axis_chart/axis_chart_data.dart index 78ca3007d..e39db1c74 100644 --- a/lib/src/chart/base/axis_chart/axis_chart_data.dart +++ b/lib/src/chart/base/axis_chart/axis_chart_data.dart @@ -161,6 +161,7 @@ class SideTitles with EquatableMixin { this.getTitlesWidget = defaultGetTitle, this.reservedSize = 22, this.interval, + this.startMin = false, }) : assert(interval != 0, "SideTitles.interval couldn't be zero"); /// Determines showing or hiding this side titles @@ -178,6 +179,9 @@ class SideTitles with EquatableMixin { /// we try to find a suitable value to set as [interval] under the hood. final double? interval; + /// If [startMin] is true, then the interval will start from the min value. + final bool startMin; + /// Lerps a [SideTitles] based on [t] value, check [Tween.lerp]. static SideTitles lerp(SideTitles a, SideTitles b, double t) { return SideTitles( @@ -548,6 +552,7 @@ class FlGridData with EquatableMixin { this.verticalInterval, this.getDrawingVerticalLine = defaultGridLine, this.checkToShowVerticalLine = showAllGrids, + this.startMin = false, }) : assert( horizontalInterval != 0, "FlGridData.horizontalInterval couldn't be zero", @@ -584,6 +589,9 @@ class FlGridData with EquatableMixin { /// Gives you a x value, and gets a boolean that determines showing or hiding specified line. final CheckToShowGrid checkToShowVerticalLine; + /// If true then the horizontal interval will start from the min value. + final bool startMin; + /// Lerps a [FlGridData] based on [t] value, check [Tween.lerp]. static FlGridData lerp(FlGridData a, FlGridData b, double t) { return FlGridData( diff --git a/lib/src/chart/base/axis_chart/axis_chart_helper.dart b/lib/src/chart/base/axis_chart/axis_chart_helper.dart index 4d16a411b..343c61b44 100644 --- a/lib/src/chart/base/axis_chart/axis_chart_helper.dart +++ b/lib/src/chart/base/axis_chart/axis_chart_helper.dart @@ -26,9 +26,16 @@ class AxisChartHelper { bool maxIncluded = true, required double baseLine, required double interval, + bool startMin = false, }) sync* { - final initialValue = Utils() - .getBestInitialIntervalValue(min, max, interval, baseline: baseLine); + final initialValue = startMin + ? min + : Utils().getBestInitialIntervalValue( + min, + max, + interval, + baseline: baseLine, + ); var axisSeek = initialValue; final firstPositionOverlapsWithMin = axisSeek == min; if (!minIncluded && firstPositionOverlapsWithMin) { diff --git a/lib/src/chart/base/axis_chart/axis_chart_painter.dart b/lib/src/chart/base/axis_chart/axis_chart_painter.dart index 3b0ff7f03..4fa23fd32 100644 --- a/lib/src/chart/base/axis_chart/axis_chart_painter.dart +++ b/lib/src/chart/base/axis_chart/axis_chart_painter.dart @@ -68,6 +68,7 @@ abstract class AxisChartPainter maxIncluded: false, baseLine: data.baselineX, interval: verticalInterval, + startMin: data.gridData.startMin, ); for (final axisValue in axisValues) { if (!data.gridData.checkToShowVerticalLine(axisValue)) { @@ -113,6 +114,7 @@ abstract class AxisChartPainter maxIncluded: false, baseLine: data.baselineY, interval: horizontalInterval, + startMin: data.gridData.startMin, ); for (final axisValue in axisValues) { if (!data.gridData.checkToShowHorizontalLine(axisValue)) { @@ -121,6 +123,7 @@ abstract class AxisChartPainter final flLine = data.gridData.getDrawingHorizontalLine(axisValue); final bothY = getPixelY(axisValue, viewSize, holder); + const x1 = 0.0; final y1 = bothY; final x2 = viewSize.width; diff --git a/lib/src/chart/base/axis_chart/side_titles/side_titles_widget.dart b/lib/src/chart/base/axis_chart/side_titles/side_titles_widget.dart index aa3f58ea5..9feaebda1 100644 --- a/lib/src/chart/base/axis_chart/side_titles/side_titles_widget.dart +++ b/lib/src/chart/base/axis_chart/side_titles/side_titles_widget.dart @@ -135,6 +135,7 @@ class SideTitlesWidget extends StatelessWidget { max: axisMax, baseLine: axisBaseLine, interval: interval, + startMin: sideTitles.startMin, ); axisPositions = axisValues.map((axisValue) { final axisDiff = axisMax - axisMin;