From 1820a0034230524822a7112994d2842fcdcf01e2 Mon Sep 17 00:00:00 2001 From: Takeshi Tsukamoto Date: Wed, 1 Nov 2023 11:08:20 +0900 Subject: [PATCH 1/2] Show tooltip on top of bar chart --- lib/src/chart/bar_chart/bar_chart_painter.dart | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/src/chart/bar_chart/bar_chart_painter.dart b/lib/src/chart/bar_chart/bar_chart_painter.dart index 407c0fb46..d45978a7a 100644 --- a/lib/src/chart/bar_chart/bar_chart_painter.dart +++ b/lib/src/chart/bar_chart/bar_chart_painter.dart @@ -388,12 +388,17 @@ class BarChartPainter extends AxisChartPainter { final zeroY = getPixelY(0, viewSize, holder); final barTopY = min(zeroY, barOffset.dy); final barBottomY = max(zeroY, barOffset.dy); - final drawTooltipOnTop = tooltipData.direction == TooltipDirection.top || - (tooltipData.direction == TooltipDirection.auto && - showOnRodData.isUpward()); - final tooltipTop = drawTooltipOnTop - ? barTopY - tooltipHeight - tooltipData.tooltipMargin - : barBottomY + tooltipData.tooltipMargin; + final double tooltipTop; + if (tooltipData.showOnTopOfTheChartBoxArea) { + tooltipTop = 0 - tooltipHeight - tooltipData.tooltipMargin; + } else { + final drawTooltipOnTop = tooltipData.direction == TooltipDirection.top || + (tooltipData.direction == TooltipDirection.auto && + showOnRodData.isUpward()); + tooltipTop = drawTooltipOnTop + ? barTopY - tooltipHeight - tooltipData.tooltipMargin + : barBottomY + tooltipData.tooltipMargin; + } final tooltipLeft = getTooltipLeft( barOffset.dx, From 532847f7dbf0e0fa15d56aa8cba54b2e139a8081 Mon Sep 17 00:00:00 2001 From: Takeshi Tsukamoto Date: Wed, 1 Nov 2023 11:13:04 +0900 Subject: [PATCH 2/2] Add showOnTopOfTheChartBoxArea --- lib/src/chart/bar_chart/bar_chart_data.dart | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/src/chart/bar_chart/bar_chart_data.dart b/lib/src/chart/bar_chart/bar_chart_data.dart index 6292faf92..76e07c165 100644 --- a/lib/src/chart/bar_chart/bar_chart_data.dart +++ b/lib/src/chart/bar_chart/bar_chart_data.dart @@ -705,6 +705,7 @@ class BarTouchTooltipData with EquatableMixin { TooltipDirection? direction, double? rotateAngle, BorderSide? tooltipBorder, + bool? showOnTopOfTheChartBoxArea, }) : tooltipBgColor = tooltipBgColor ?? Colors.blueGrey.darken(15), tooltipRoundedRadius = tooltipRoundedRadius ?? 4, tooltipPadding = tooltipPadding ?? @@ -720,6 +721,7 @@ class BarTouchTooltipData with EquatableMixin { direction = direction ?? TooltipDirection.auto, rotateAngle = rotateAngle ?? 0.0, tooltipBorder = tooltipBorder ?? BorderSide.none, + showOnTopOfTheChartBoxArea = showOnTopOfTheChartBoxArea ?? false, super(); /// The tooltip background color. @@ -761,6 +763,8 @@ class BarTouchTooltipData with EquatableMixin { /// The tooltip border color. final BorderSide tooltipBorder; + final bool showOnTopOfTheChartBoxArea; + /// Used for equality check, see [EquatableMixin]. @override List get props => [