diff --git a/lib/src/chart/bar_chart/bar_chart_data.dart b/lib/src/chart/bar_chart/bar_chart_data.dart index 3ef020e1d..63b1fe311 100644 --- a/lib/src/chart/bar_chart/bar_chart_data.dart +++ b/lib/src/chart/bar_chart/bar_chart_data.dart @@ -681,7 +681,7 @@ class BarTouchTooltipData with EquatableMixin { /// You can override [BarTouchTooltipData.getTooltipItem], it gives you /// [group], [groupIndex], [rod], and [rodIndex] that touch happened on, /// then you should and pass your custom [BarTooltipItem] to show inside the tooltip popup. -typedef GetBarTooltipItem = BarTooltipItem Function( +typedef GetBarTooltipItem = BarTooltipItem? Function( BarChartGroupData group, int groupIndex, BarChartRodData rod, @@ -689,7 +689,7 @@ typedef GetBarTooltipItem = BarTooltipItem Function( ); /// Default implementation for [BarTouchTooltipData.getTooltipItem]. -BarTooltipItem defaultBarTooltipItem( +BarTooltipItem? defaultBarTooltipItem( BarChartGroupData group, int groupIndex, BarChartRodData rod, diff --git a/lib/src/chart/bar_chart/bar_chart_painter.dart b/lib/src/chart/bar_chart/bar_chart_painter.dart index 6670cd137..29de66e8d 100644 --- a/lib/src/chart/bar_chart/bar_chart_painter.dart +++ b/lib/src/chart/bar_chart/bar_chart_painter.dart @@ -484,6 +484,10 @@ class BarChartPainter extends AxisChartPainter with TouchHandler Function( +typedef GetTouchedSpotIndicator = List Function( LineChartBarData barData, List spotIndexes); /// Default presentation of touched indicators. diff --git a/lib/src/chart/line_chart/line_chart_painter.dart b/lib/src/chart/line_chart/line_chart_painter.dart index 9c919d9c6..ad3471f08 100644 --- a/lib/src/chart/line_chart/line_chart_painter.dart +++ b/lib/src/chart/line_chart/line_chart_painter.dart @@ -277,6 +277,10 @@ class LineChartPainter extends AxisChartPainter final index = barData.showingIndicators[i]; final spot = barData.spots[index]; + if (indicatorData == null) { + continue; + } + final touchedSpot = Offset(getPixelX(spot.x, chartViewSize), getPixelY(spot.y, chartViewSize)); diff --git a/lib/src/chart/scatter_chart/scatter_chart_data.dart b/lib/src/chart/scatter_chart/scatter_chart_data.dart index 5bc362d69..fb996c190 100644 --- a/lib/src/chart/scatter_chart/scatter_chart_data.dart +++ b/lib/src/chart/scatter_chart/scatter_chart_data.dart @@ -387,10 +387,10 @@ class ScatterTouchTooltipData with EquatableMixin { /// [touchedSpot] that touch happened on, /// then you should and pass your custom [ScatterTooltipItem] /// to show it inside the tooltip popup. -typedef GetScatterTooltipItems = ScatterTooltipItem Function(ScatterSpot touchedSpot); +typedef GetScatterTooltipItems = ScatterTooltipItem? Function(ScatterSpot touchedSpot); /// Default implementation for [ScatterTouchTooltipData.getTooltipItems]. -ScatterTooltipItem defaultScatterTooltipItem(ScatterSpot touchedSpot) { +ScatterTooltipItem? defaultScatterTooltipItem(ScatterSpot touchedSpot) { final textStyle = TextStyle( color: touchedSpot.color, fontWeight: FontWeight.bold, diff --git a/lib/src/chart/scatter_chart/scatter_chart_painter.dart b/lib/src/chart/scatter_chart/scatter_chart_painter.dart index e208cf952..d63da56dc 100644 --- a/lib/src/chart/scatter_chart/scatter_chart_painter.dart +++ b/lib/src/chart/scatter_chart/scatter_chart_painter.dart @@ -227,9 +227,6 @@ class ScatterChartPainter extends AxisChartPainter } void _drawSpots(CanvasWrapper canvasWrapper) { - if (data.scatterSpots == null) { - return; - } final viewSize = canvasWrapper.size; final chartUsableSize = getChartUsableDrawSize(viewSize); for (final scatterSpot in data.scatterSpots) { diff --git a/lib/src/utils/lerp.dart b/lib/src/utils/lerp.dart index 51b19c12b..3d45e761a 100644 --- a/lib/src/utils/lerp.dart +++ b/lib/src/utils/lerp.dart @@ -51,7 +51,7 @@ List? lerpIntList(List? a, List? b, double t) => _lerpList(a, b, /// Lerps [int] list based on [t] value, check [Tween.lerp]. int lerpInt(int a, int b, double t) => (a + (b - a) * t).round(); -double _lerpNonNullDouble(double a, double b, double t) => _lerpNonNullDouble(a, b, t); +double _lerpNonNullDouble(double a, double b, double t) => lerpDouble(a, b, t)!; /// Lerps [FlSpot] list based on [t] value, check [Tween.lerp]. List? lerpFlSpotList(List? a, List? b, double t) =>