Skip to content

Commit 1bb4c2a

Browse files
tamasappsimaNNeo
authored andcommitted
Add missing changelog, test coverage, documentation for tooltip horizontal alignment
1 parent 30897cf commit 1bb4c2a

File tree

17 files changed

+418
-32
lines changed

17 files changed

+418
-32
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* **IMPROVEMENT** (by @imaNNeo) Remove assertion to check to provide only one of `color` or `gradient` property in the [BarChartRodData](https://github.com/imaNNeo/fl_chart/blob/master/repo_files/documentations/bar_chart.md#barchartroddata) and [BackgroundBarChartRodData](https://github.com/imaNNeo/fl_chart/blob/master/repo_files/documentations/bar_chart.md#backgroundbarchartroddata), #1121.
33
* **IMPROVEMENT** (by @imaNNeo) Make `drawBehindEverything` property default to `true` in [AxisTitles](https://github.com/imaNNeo/fl_chart/blob/master/repo_files/documentations/base_chart.md#axistitle) class, #1097.
44
* **BUGFIX** (by @imaNNeo) Show `0` instead of `-0` in some edge-cases in the default titles
5+
* **FEATURE** (by @tamasapps): Add `tooltipAlignment` and `tooltipHorizontalOffset` property in [LineTouchTooltipData], [BarTouchTooltipData], [ScatterTouchTooltipData].
56

67
## 0.60.0
78
* **IMPROVEMENT** (by @lsaudon) Replace flutter_lints by very_good_analysis

example/lib/presentation/samples/bar/bar_chart_sample1.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ class BarChartSample1State extends State<BarChartSample1> {
163163
barTouchData: BarTouchData(
164164
touchTooltipData: BarTouchTooltipData(
165165
tooltipBgColor: Colors.blueGrey,
166-
tooltipAlign: FLTooltipAlign.right,
166+
tooltipAlignment: FLHorizontalAlignment.right,
167167
tooltipMargin: -10,
168168
getTooltipItem: (group, groupIndex, rod, rodIndex) {
169169
String weekDay;

lib/src/chart/bar_chart/bar_chart_data.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -700,7 +700,7 @@ class BarTouchTooltipData with EquatableMixin {
700700
double? tooltipRoundedRadius,
701701
EdgeInsets? tooltipPadding,
702702
double? tooltipMargin,
703-
FLTooltipAlign? tooltipAlign,
703+
FLHorizontalAlignment? tooltipAlignment,
704704
double? tooltipHorizontalOffset,
705705
double? maxContentWidth,
706706
GetBarTooltipItem? getTooltipItem,
@@ -714,7 +714,7 @@ class BarTouchTooltipData with EquatableMixin {
714714
tooltipPadding = tooltipPadding ??
715715
const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
716716
tooltipMargin = tooltipMargin ?? 16,
717-
tooltipAlign = tooltipAlign ?? FLTooltipAlign.center,
717+
tooltipAlignment = tooltipAlignment ?? FLHorizontalAlignment.center,
718718
tooltipHorizontalOffset = tooltipHorizontalOffset ?? 0,
719719
maxContentWidth = maxContentWidth ?? 120,
720720
getTooltipItem = getTooltipItem ?? defaultBarTooltipItem,
@@ -738,7 +738,7 @@ class BarTouchTooltipData with EquatableMixin {
738738
final double tooltipMargin;
739739

740740
/// Controls showing tooltip on left side, right side or center aligned with rod, default is center
741-
final FLTooltipAlign tooltipAlign;
741+
final FLHorizontalAlignment tooltipAlignment;
742742

743743
/// Applies horizontal offset for showing tooltip, default is zero.
744744
final double tooltipHorizontalOffset;
@@ -771,6 +771,8 @@ class BarTouchTooltipData with EquatableMixin {
771771
tooltipRoundedRadius,
772772
tooltipPadding,
773773
tooltipMargin,
774+
tooltipAlignment,
775+
tooltipHorizontalOffset,
774776
maxContentWidth,
775777
getTooltipItem,
776778
fitInsideHorizontally,

lib/src/chart/bar_chart/bar_chart_painter.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -392,16 +392,16 @@ class BarChartPainter extends AxisChartPainter<BarChartData> {
392392
: barBottomY + tooltipData.tooltipMargin;
393393

394394
double tooltipLeft;
395-
switch (tooltipData.tooltipAlign) {
396-
case FLTooltipAlign.center:
395+
switch (tooltipData.tooltipAlignment) {
396+
case FLHorizontalAlignment.center:
397397
tooltipLeft = barOffset.dx -
398398
(tooltipWidth / 2) +
399399
tooltipData.tooltipHorizontalOffset;
400400
break;
401-
case FLTooltipAlign.right:
401+
case FLHorizontalAlignment.right:
402402
tooltipLeft = barOffset.dx + tooltipData.tooltipHorizontalOffset;
403403
break;
404-
case FLTooltipAlign.left:
404+
case FLHorizontalAlignment.left:
405405
tooltipLeft =
406406
barOffset.dx - tooltipWidth + tooltipData.tooltipHorizontalOffset;
407407
break;

lib/src/chart/base/base_chart/base_chart_data.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -191,14 +191,14 @@ abstract class BaseTouchResponse {
191191
BaseTouchResponse();
192192
}
193193

194-
/// Controls showing tooltip horizontal alignment relative to the rod/spot.
195-
enum FLTooltipAlign {
196-
/// Tooltip shows horizontally center aligned with the rod/spot.
194+
/// Controls an element horizontal alignment to given point.
195+
enum FLHorizontalAlignment {
196+
/// Element shown horizontally center aligned to a given point.
197197
center,
198198

199-
/// Tooltip shows on the left side of the rod/spot.
199+
/// Element shown on the left side of the given point.
200200
left,
201201

202-
/// Tooltip shows on the right side of the rod/spot.
202+
/// Element shown on the right side of the given point.
203203
right,
204204
}

lib/src/chart/line_chart/line_chart_data.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1292,7 +1292,7 @@ class LineTouchTooltipData with EquatableMixin {
12921292
double? tooltipRoundedRadius,
12931293
EdgeInsets? tooltipPadding,
12941294
double? tooltipMargin,
1295-
FLTooltipAlign? tooltipAlign,
1295+
FLHorizontalAlignment? tooltipAlignment,
12961296
double? tooltipHorizontalOffset,
12971297
double? maxContentWidth,
12981298
GetLineTooltipItems? getTooltipItems,
@@ -1306,7 +1306,7 @@ class LineTouchTooltipData with EquatableMixin {
13061306
tooltipPadding = tooltipPadding ??
13071307
const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
13081308
tooltipMargin = tooltipMargin ?? 16,
1309-
tooltipAlign = tooltipAlign ?? FLTooltipAlign.center,
1309+
tooltipAlignment = tooltipAlignment ?? FLHorizontalAlignment.center,
13101310
tooltipHorizontalOffset = tooltipHorizontalOffset ?? 0,
13111311
maxContentWidth = maxContentWidth ?? 120,
13121312
getTooltipItems = getTooltipItems ?? defaultLineTooltipItem,
@@ -1330,7 +1330,7 @@ class LineTouchTooltipData with EquatableMixin {
13301330
final double tooltipMargin;
13311331

13321332
/// Controls showing tooltip on left side, right side or center aligned with spot, default is center
1333-
final FLTooltipAlign tooltipAlign;
1333+
final FLHorizontalAlignment tooltipAlignment;
13341334

13351335
/// Applies horizontal offset for showing tooltip, default is zero.
13361336
final double tooltipHorizontalOffset;
@@ -1363,6 +1363,8 @@ class LineTouchTooltipData with EquatableMixin {
13631363
tooltipRoundedRadius,
13641364
tooltipPadding,
13651365
tooltipMargin,
1366+
tooltipAlignment,
1367+
tooltipHorizontalOffset,
13661368
maxContentWidth,
13671369
getTooltipItems,
13681370
fitInsideHorizontally,

lib/src/chart/line_chart/line_chart_painter.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1038,16 +1038,16 @@ class LineChartPainter extends AxisChartPainter<LineChartData> {
10381038
}
10391039

10401040
double tooltipLeft;
1041-
switch (tooltipData.tooltipAlign) {
1042-
case FLTooltipAlign.center:
1041+
switch (tooltipData.tooltipAlignment) {
1042+
case FLHorizontalAlignment.center:
10431043
tooltipLeft = mostTopOffset.dx -
10441044
(tooltipWidth / 2) +
10451045
tooltipData.tooltipHorizontalOffset;
10461046
break;
1047-
case FLTooltipAlign.right:
1047+
case FLHorizontalAlignment.right:
10481048
tooltipLeft = mostTopOffset.dx + tooltipData.tooltipHorizontalOffset;
10491049
break;
1050-
case FLTooltipAlign.left:
1050+
case FLHorizontalAlignment.left:
10511051
tooltipLeft = mostTopOffset.dx -
10521052
tooltipWidth +
10531053
tooltipData.tooltipHorizontalOffset;

lib/src/chart/scatter_chart/scatter_chart_data.dart

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ class ScatterTouchTooltipData with EquatableMixin {
398398
Color? tooltipBgColor,
399399
double? tooltipRoundedRadius,
400400
EdgeInsets? tooltipPadding,
401-
FLTooltipAlign? tooltipAlign,
401+
FLHorizontalAlignment? tooltipAlignment,
402402
double? tooltipHorizontalOffset,
403403
double? maxContentWidth,
404404
GetScatterTooltipItems? getTooltipItems,
@@ -410,7 +410,7 @@ class ScatterTouchTooltipData with EquatableMixin {
410410
tooltipRoundedRadius = tooltipRoundedRadius ?? 4,
411411
tooltipPadding = tooltipPadding ??
412412
const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
413-
tooltipAlign = tooltipAlign ?? FLTooltipAlign.center,
413+
tooltipAlignment = tooltipAlignment ?? FLHorizontalAlignment.center,
414414
tooltipHorizontalOffset = tooltipHorizontalOffset ?? 0,
415415
maxContentWidth = maxContentWidth ?? 120,
416416
getTooltipItems = getTooltipItems ?? defaultScatterTooltipItem,
@@ -430,7 +430,7 @@ class ScatterTouchTooltipData with EquatableMixin {
430430
final EdgeInsets tooltipPadding;
431431

432432
/// Controls showing tooltip on left side, right side or center aligned with spot, default is center
433-
final FLTooltipAlign tooltipAlign;
433+
final FLHorizontalAlignment tooltipAlignment;
434434

435435
/// Applies horizontal offset for showing tooltip, default is zero.
436436
final double tooltipHorizontalOffset;
@@ -459,6 +459,8 @@ class ScatterTouchTooltipData with EquatableMixin {
459459
tooltipBgColor,
460460
tooltipRoundedRadius,
461461
tooltipPadding,
462+
tooltipAlignment,
463+
tooltipHorizontalOffset,
462464
maxContentWidth,
463465
getTooltipItems,
464466
fitInsideHorizontally,
@@ -473,6 +475,8 @@ class ScatterTouchTooltipData with EquatableMixin {
473475
Color? tooltipBgColor,
474476
double? tooltipRoundedRadius,
475477
EdgeInsets? tooltipPadding,
478+
FLHorizontalAlignment? tooltipAlignment,
479+
double? tooltipHorizontalOffset,
476480
double? maxContentWidth,
477481
GetScatterTooltipItems? getTooltipItems,
478482
bool? fitInsideHorizontally,
@@ -484,6 +488,9 @@ class ScatterTouchTooltipData with EquatableMixin {
484488
tooltipBgColor: tooltipBgColor ?? this.tooltipBgColor,
485489
tooltipRoundedRadius: tooltipRoundedRadius ?? this.tooltipRoundedRadius,
486490
tooltipPadding: tooltipPadding ?? this.tooltipPadding,
491+
tooltipAlignment: tooltipAlignment ?? this.tooltipAlignment,
492+
tooltipHorizontalOffset:
493+
tooltipHorizontalOffset ?? this.tooltipHorizontalOffset,
487494
maxContentWidth: maxContentWidth ?? this.maxContentWidth,
488495
getTooltipItems: getTooltipItems ?? this.getTooltipItems,
489496
fitInsideHorizontally:

lib/src/chart/scatter_chart/scatter_chart_painter.dart

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import 'package:fl_chart/fl_chart.dart';
22
import 'package:fl_chart/src/chart/base/axis_chart/axis_chart_painter.dart';
33
import 'package:fl_chart/src/chart/base/base_chart/base_chart_painter.dart';
4-
import 'package:fl_chart/src/chart/scatter_chart/scatter_chart_data.dart';
54
import 'package:fl_chart/src/utils/canvas_wrapper.dart';
65
import 'package:fl_chart/src/utils/utils.dart';
76
import 'package:flutter/material.dart';
@@ -252,16 +251,16 @@ class ScatterChartPainter extends AxisChartPainter<ScatterChartData> {
252251
final tooltipHeight = height + tooltipData.tooltipPadding.vertical;
253252

254253
double tooltipLeft;
255-
switch (tooltipData.tooltipAlign) {
256-
case FLTooltipAlign.center:
254+
switch (tooltipData.tooltipAlignment) {
255+
case FLHorizontalAlignment.center:
257256
tooltipLeft = mostTopOffset.dx -
258257
(tooltipWidth / 2) +
259258
tooltipData.tooltipHorizontalOffset;
260259
break;
261-
case FLTooltipAlign.right:
260+
case FLHorizontalAlignment.right:
262261
tooltipLeft = mostTopOffset.dx + tooltipData.tooltipHorizontalOffset;
263262
break;
264-
case FLTooltipAlign.left:
263+
case FLHorizontalAlignment.left:
265264
tooltipLeft = mostTopOffset.dx -
266265
tooltipWidth +
267266
tooltipData.tooltipHorizontalOffset;

repo_files/documentations/bar_chart.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ enum values {`start`, `end`, `center`, `spaceEvenly`, `spaceAround`, `spaceBetwe
9999
|tooltipRoundedRadius|background corner radius of the tooltip bubble|4|
100100
|tooltipPadding|padding of the tooltip|EdgeInsets.symmetric(horizontal: 16, vertical: 8)|
101101
|tooltipMargin|margin between the tooltip and the touched spot|16|
102+
|tooltipAlignment|horizontal alginment of tooltip relative to the bar|FLHorizontalAlignment.center|
103+
|tooltipHorizontalOffset|horizontal offset of tooltip|0|
102104
|maxContentWidth|maximum width of the tooltip (if a text row is wider than this, then the text breaks to a new line|120|
103105
|getTooltipItems|a callback that retrieve [BarTooltipItem](#BarTooltipItem) by the given [BarChartGroupData](#BarChartGroupData), groupIndex, [BarChartRodData](#BarChartRodData) and rodIndex |defaultBarTooltipItem|
104106
|fitInsideHorizontally| forces tooltip to horizontally shift inside the chart's bounding box| false|

0 commit comments

Comments
 (0)