Skip to content

Commit becda5f

Browse files
updated widgets with the latest source.
1 parent 3b38593 commit becda5f

File tree

286 files changed

+196
-89
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

286 files changed

+196
-89
lines changed

packages/syncfusion_flutter_charts/lib/charts.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import 'package:flutter/scheduler.dart';
2727
import 'package:flutter/foundation.dart';
2828
//ignore: implementation_imports
2929
import 'package:flutter/src/foundation/platform.dart';
30-
import 'package:flutter_test/flutter_test.dart';
3130
import 'package:intl/intl.dart' show DateFormat;
3231
import 'package:intl/intl.dart' show NumberFormat;
3332
import 'package:syncfusion_flutter_core/core.dart';
@@ -211,4 +210,5 @@ part './src/common/user_interaction/selection_behavior.dart';
211210
part './src/common/user_interaction/tooltip.dart';
212211
part './src/common/utils/enum.dart';
213212
part './src/common/utils/helper.dart';
214-
part './src/common/utils/typedef.dart';
213+
part './src/common/utils/typedef.dart';
214+

packages/syncfusion_flutter_charts/lib/src/chart/axis/numeric_axis.dart

+2-4
Original file line numberDiff line numberDiff line change
@@ -556,9 +556,6 @@ class NumericAxisRenderer extends ChartAxisRenderer {
556556
? minimumVisibleRange
557557
: num.tryParse(
558558
minimumVisibleRange.toStringAsFixed(fractionDigitValue))!;
559-
if (minimumVisibleRange % 1 == 0) {
560-
minimumVisibleRange = minimumVisibleRange.round();
561-
}
562559
if (minimumVisibleRange.toString().split('.').length > 1) {
563560
final String str = minimumVisibleRange.toString();
564561
final List<String>? list = str.split('.');
@@ -570,7 +567,8 @@ class NumericAxisRenderer extends ChartAxisRenderer {
570567
list[1] == '00' ||
571568
list[1] == '000' ||
572569
list[1] == '0000' ||
573-
list[1] == '00000')) {
570+
list[1] == '00000' ||
571+
minimumVisibleRange % 1 == 0)) {
574572
minimumVisibleRange = minimumVisibleRange.round();
575573
}
576574
}

packages/syncfusion_flutter_charts/lib/src/chart/common/data_label_renderer.dart

+172-69
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ void _calculateDataLabelPosition(
6161
? point.upperQuartile!
6262
: point.lowerQuartile!;
6363
}
64-
// ignore: prefer_final_fields
64+
// ignore: prefer_final_locals
65+
List<String> labelList = <String>[];
66+
// ignore: prefer_final_locals
6567
String label = point.dataLabelMapper ??
6668
point.label ??
6769
_getLabelText(
@@ -76,11 +78,63 @@ void _calculateDataLabelPosition(
7678
seriesRenderer);
7779
if (isRangeSeries) {
7880
point.label2 = point.dataLabelMapper ??
81+
point.label2 ??
7982
_getLabelText(!inversed ? point.low : point.high, seriesRenderer);
83+
if (seriesRenderer._seriesType == 'hiloopenclose' ||
84+
seriesRenderer._seriesType.contains('candle')) {
85+
point.label3 = point.dataLabelMapper ??
86+
point.label3 ??
87+
_getLabelText(
88+
(point.open > point.close) == true
89+
? !inversed
90+
? point.close
91+
: point.open
92+
: !inversed
93+
? point.open
94+
: point.close,
95+
seriesRenderer);
96+
point.label4 = point.dataLabelMapper ??
97+
point.label4 ??
98+
_getLabelText(
99+
(point.open > point.close) == true
100+
? !inversed
101+
? point.open
102+
: point.close
103+
: !inversed
104+
? point.close
105+
: point.open,
106+
seriesRenderer);
107+
}
80108
} else if (isBoxSeries) {
81109
point.label2 = point.dataLabelMapper ??
110+
point.label2 ??
82111
_getLabelText(
83112
!inversed ? point.minimum : point.maximum, seriesRenderer);
113+
point.label3 = point.dataLabelMapper ??
114+
point.label3 ??
115+
_getLabelText(
116+
point.lowerQuartile! > point.upperQuartile!
117+
? !inversed
118+
? point.upperQuartile
119+
: point.lowerQuartile
120+
: !inversed
121+
? point.lowerQuartile
122+
: point.upperQuartile,
123+
seriesRenderer);
124+
point.label4 = point.dataLabelMapper ??
125+
point.label4 ??
126+
_getLabelText(
127+
point.lowerQuartile! > point.upperQuartile!
128+
? !inversed
129+
? point.lowerQuartile
130+
: point.upperQuartile
131+
: !inversed
132+
? point.upperQuartile
133+
: point.lowerQuartile,
134+
seriesRenderer);
135+
point.label5 = point.dataLabelMapper ??
136+
point.label5 ??
137+
_getLabelText(point.median, seriesRenderer);
84138
}
85139
DataLabelRenderArgs dataLabelArgs;
86140
TextStyle? dataLabelStyle = dataLabelSettingsRenderer._textStyle;
@@ -91,21 +145,37 @@ void _calculateDataLabelPosition(
91145
dataLabelStyle = dataLabelSettingsRenderer._originalStyle;
92146
if (chart.onDataLabelRender != null &&
93147
!seriesRenderer._visibleDataPoints![index].labelRenderEvent) {
148+
labelList.add(label);
149+
if (isRangeSeries) {
150+
labelList.add(point.label2!);
151+
if (seriesRenderer._seriesType == 'hiloopenclose' ||
152+
seriesRenderer._seriesType.contains('candle')) {
153+
labelList.add(point.label3!);
154+
labelList.add(point.label4!);
155+
}
156+
} else if (isBoxSeries) {
157+
labelList.add(point.label2!);
158+
labelList.add(point.label3!);
159+
labelList.add(point.label4!);
160+
labelList.add(point.label5!);
161+
}
94162
seriesRenderer._visibleDataPoints![index].labelRenderEvent = true;
95-
dataLabelArgs = DataLabelRenderArgs(
96-
seriesRenderer._series,
97-
seriesRenderer._dataPoints,
98-
index,
99-
seriesRenderer._visibleDataPoints![index].overallDataPointIndex);
100-
dataLabelArgs.text = label;
101-
dataLabelArgs.textStyle = dataLabelStyle!;
102-
dataLabelArgs.color = seriesRenderer._series.dataLabelSettings.color;
103-
chart.onDataLabelRender!(dataLabelArgs);
104-
label = point.label = dataLabelArgs.text;
105-
index = dataLabelArgs.pointIndex!;
106-
point._dataLabelStyle = dataLabelArgs.textStyle;
107-
point._dataLabelColor = dataLabelArgs.color;
108-
dataLabelSettingsRenderer._offset = dataLabelArgs.offset;
163+
for (int i = 0; i < labelList.length; i++) {
164+
dataLabelArgs = DataLabelRenderArgs(
165+
seriesRenderer._series,
166+
seriesRenderer._dataPoints,
167+
index,
168+
seriesRenderer._visibleDataPoints![index].overallDataPointIndex);
169+
dataLabelArgs.text = labelList[i];
170+
dataLabelArgs.textStyle = dataLabelStyle!;
171+
dataLabelArgs.color = seriesRenderer._series.dataLabelSettings.color;
172+
chart.onDataLabelRender!(dataLabelArgs);
173+
labelList[i] = dataLabelArgs.text;
174+
index = dataLabelArgs.pointIndex!;
175+
point._dataLabelStyle = dataLabelArgs.textStyle;
176+
point._dataLabelColor = dataLabelArgs.color;
177+
dataLabelSettingsRenderer._offset = dataLabelArgs.offset;
178+
}
109179
}
110180
dataLabelSettingsRenderer._textStyle = dataLabelStyle;
111181
if (chart.onDataLabelRender != null) {
@@ -159,7 +229,7 @@ void _calculateDataLabelPosition(
159229
fontWeight: FontWeight.normal,
160230
fontSize: 12)
161231
: dataLabelStyle!;
162-
point.label = label;
232+
point.label = labelList.isNotEmpty ? labelList[0] : label;
163233
if (label.isNotEmpty) {
164234
_ChartLocation? chartLocation,
165235
chartLocation2,
@@ -170,6 +240,7 @@ void _calculateDataLabelPosition(
170240
dataLabel.builder == null ? measureText(label, font) : templateSize!;
171241
chartLocation = _ChartLocation(markerPointX, markerPointY);
172242
if (isRangeSeries || isBoxSeries) {
243+
point.label2 = labelList.isNotEmpty ? labelList[1] : point.label2;
173244
textSize2 = dataLabel.builder == null
174245
? measureText(point.label2!, font)
175246
: templateSize!;
@@ -251,49 +322,54 @@ void _calculateDataLabelPosition(
251322
seriesRenderer._seriesType.contains('candle') ||
252323
isBoxSeries) {
253324
if (!isBoxSeries) {
254-
point.label3 = point.dataLabelMapper ??
255-
_getLabelText(
256-
(point.open > point.close) == true
257-
? !inversed
258-
? point.close
259-
: point.open
260-
: !inversed
261-
? point.open
262-
: point.close,
263-
seriesRenderer);
264-
point.label4 = point.dataLabelMapper ??
265-
_getLabelText(
266-
(point.open > point.close) == true
267-
? !inversed
268-
? point.open
269-
: point.close
270-
: !inversed
271-
? point.close
272-
: point.open,
273-
seriesRenderer);
325+
point.label3 = labelList.isNotEmpty ? labelList[2] : point.label3;
326+
point.label4 = labelList.isNotEmpty ? labelList[3] : point.label4;
327+
// point.label3 = point.dataLabelMapper ??
328+
// _getLabelText(
329+
// (point.open > point.close) == true
330+
// ? !inversed
331+
// ? point.close
332+
// : point.open
333+
// : !inversed
334+
// ? point.open
335+
// : point.close,
336+
// seriesRenderer);
337+
// point.label4 = point.dataLabelMapper ??
338+
// _getLabelText(
339+
// (point.open > point.close) == true
340+
// ? !inversed
341+
// ? point.open
342+
// : point.close
343+
// : !inversed
344+
// ? point.close
345+
// : point.open,
346+
// seriesRenderer);
274347
} else {
275-
point.label3 = point.dataLabelMapper ??
276-
_getLabelText(
277-
point.lowerQuartile! > point.upperQuartile!
278-
? !inversed
279-
? point.upperQuartile
280-
: point.lowerQuartile
281-
: !inversed
282-
? point.lowerQuartile
283-
: point.upperQuartile,
284-
seriesRenderer);
285-
point.label4 = point.dataLabelMapper ??
286-
_getLabelText(
287-
point.lowerQuartile! > point.upperQuartile!
288-
? !inversed
289-
? point.lowerQuartile
290-
: point.upperQuartile
291-
: !inversed
292-
? point.upperQuartile
293-
: point.lowerQuartile,
294-
seriesRenderer);
295-
point.label5 = point.dataLabelMapper ??
296-
_getLabelText(point.median, seriesRenderer);
348+
point.label3 = labelList.isNotEmpty ? labelList[2] : point.label3;
349+
point.label4 = labelList.isNotEmpty ? labelList[3] : point.label4;
350+
point.label5 = labelList.isNotEmpty ? labelList[4] : point.label5;
351+
// point.label3 = point.dataLabelMapper ??
352+
// _getLabelText(
353+
// point.lowerQuartile! > point.upperQuartile!
354+
// ? !inversed
355+
// ? point.upperQuartile
356+
// : point.lowerQuartile
357+
// : !inversed
358+
// ? point.lowerQuartile
359+
// : point.upperQuartile,
360+
// seriesRenderer);
361+
// point.label4 = point.dataLabelMapper ??
362+
// _getLabelText(
363+
// point.lowerQuartile! > point.upperQuartile!
364+
// ? !inversed
365+
// ? point.lowerQuartile
366+
// : point.upperQuartile
367+
// : !inversed
368+
// ? point.upperQuartile
369+
// : point.lowerQuartile,
370+
// seriesRenderer);
371+
// point.label5 = point.dataLabelMapper ??
372+
// _getLabelText(point.median, seriesRenderer);
297373
}
298374
textSize3 = dataLabel.builder == null
299375
? measureText(point.label3!, font)
@@ -1157,7 +1233,6 @@ void _drawDataLabel(
11571233
final String? label = point.label;
11581234
dataLabelStyle = dataLabelSettingsRenderer._textStyle;
11591235
if (label != null &&
1160-
label.isNotEmpty &&
11611236
// ignore: unnecessary_null_comparison
11621237
point != null &&
11631238
point.isVisible &&
@@ -1329,14 +1404,28 @@ void _drawDataLabelRectAndText(
13291404
}
13301405
canvas.translate(-point.dataLabelRegion!.center.dx,
13311406
-point.dataLabelRegion!.center.dy - y);
1332-
canvas.drawPath(path, strokePaint);
1407+
if (point.label!.isNotEmpty) {
1408+
canvas.drawPath(path, strokePaint);
1409+
}
13331410
canvas.restore();
13341411
if (isRangeSeries || isBoxSeries) {
1335-
canvas.drawPath(path2, strokePaint);
1336-
canvas.drawPath(path3, strokePaint);
1337-
canvas.drawPath(path4, strokePaint);
1412+
if (point.label2!.isNotEmpty) {
1413+
canvas.drawPath(path2, strokePaint);
1414+
}
1415+
if (seriesRenderer._seriesType == 'hiloopenclose' ||
1416+
seriesRenderer._seriesType.contains('candle') ||
1417+
isBoxSeries) {
1418+
if (point.label3!.isNotEmpty) {
1419+
canvas.drawPath(path3, strokePaint);
1420+
}
1421+
if (point.label4!.isNotEmpty) {
1422+
canvas.drawPath(path4, strokePaint);
1423+
}
1424+
}
13381425
if (isBoxSeries) {
1339-
canvas.drawPath(path5, strokePaint);
1426+
if (point.label5!.isNotEmpty) {
1427+
canvas.drawPath(path5, strokePaint);
1428+
}
13401429
}
13411430
}
13421431
}
@@ -1367,14 +1456,28 @@ void _drawDataLabelRectAndText(
13671456
}
13681457
canvas.translate(-point.dataLabelRegion!.center.dx,
13691458
-point.dataLabelRegion!.center.dy - y);
1370-
canvas.drawPath(path, paint);
1459+
if (point.label!.isNotEmpty) {
1460+
canvas.drawPath(path, paint);
1461+
}
13711462
canvas.restore();
13721463
if (isRangeSeries || isBoxSeries) {
1373-
canvas.drawPath(path2, paint);
1374-
canvas.drawPath(path3, paint);
1375-
canvas.drawPath(path4, paint);
1464+
if (point.label2!.isNotEmpty) {
1465+
canvas.drawPath(path2, paint);
1466+
}
1467+
if (seriesRenderer._seriesType == 'hiloopenclose' ||
1468+
seriesRenderer._seriesType.contains('candle') ||
1469+
isBoxSeries) {
1470+
if (point.label3!.isNotEmpty) {
1471+
canvas.drawPath(path3, paint);
1472+
}
1473+
if (point.label4!.isNotEmpty) {
1474+
canvas.drawPath(path4, paint);
1475+
}
1476+
}
13761477
if (isBoxSeries) {
1377-
canvas.drawPath(path5, paint);
1478+
if (point.label5!.isNotEmpty) {
1479+
canvas.drawPath(path5, paint);
1480+
}
13781481
}
13791482
}
13801483
}

packages/syncfusion_flutter_charts/lib/src/chart/technical_indicators/technical_indicator.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ class TechnicalIndicators<T, D> {
375375
/// indicators: <TechnicalIndicators<dynamic, dynamic>>[
376376
/// SmaIndicator<dynamic, dynamic>(
377377
/// onRenderDetailsUpdate: (IndicatorRenderParams params) {
378-
/// return ChartIndicator(Colors.cyan, 3.0, <double>[5,5]);
378+
/// return TechnicalIndicatorRenderDetails(Colors.cyan, 3.0, <double>[5,5]);
379379
/// },
380380
/// )],
381381
/// ));

packages/syncfusion_flutter_charts/lib/src/common/event_args.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -755,9 +755,9 @@ class MacdIndicatorRenderParams extends IndicatorRenderParams {
755755
final List<CartesianChartPoint<dynamic>>? macdHistogramValues;
756756
}
757757

758-
/// Holds the ChartIndicator values
758+
/// Holds the TechnicalIndicatorRenderDetails values
759759
class TechnicalIndicatorRenderDetails {
760-
/// Creating an argument constructor of ChartIndicator class.
760+
/// Creating an argument constructor of TechnicalIndicatorRenderDetails class.
761761
TechnicalIndicatorRenderDetails(
762762
this.signalLineColor, this.signalLineWidth, this.signalLineDashArray);
763763

packages/syncfusion_flutter_charts/lib/src/common/template/rendering.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,8 @@ class _ChartTemplateRenderBox extends RenderShiftedBox {
239239
: _chartState._annotationRegions.add(rect);
240240
childParentData.offset = Offset(locationX, locationY);
241241
} else {
242-
child!
243-
.layout(constraints.copyWith(maxWidth: 0), parentUsesSize: true);
242+
child!.layout(constraints.copyWith(maxWidth: 0, maxHeight: 0),
243+
parentUsesSize: true);
244244
}
245245
}
246246
} else {

0 commit comments

Comments
 (0)