1
- import 'dart:collection' ;
2
1
import 'dart:math' ;
2
+ import 'dart:ui' ;
3
3
4
4
import 'package:flutter/material.dart' ;
5
5
import 'package:flutter_constraintlayout/flutter_constraintlayout.dart' ;
@@ -14,7 +14,7 @@ class ChartsExample extends StatefulWidget {
14
14
}
15
15
16
16
class PolylinePainter extends CustomPainter {
17
- Map < int , Rect > polylineData;
17
+ List < Offset > polylineData;
18
18
19
19
PolylinePainter (this .polylineData);
20
20
@@ -26,18 +26,7 @@ class PolylinePainter extends CustomPainter {
26
26
Paint paint = Paint ()
27
27
..strokeWidth = 1
28
28
..color = Colors .green;
29
- List <Rect > rectList = polylineData.values.toList ();
30
- Rect last = rectList[0 ];
31
- Rect current;
32
- for (int i = 1 ; i < rectList.length; i++ ) {
33
- current = rectList[i];
34
- canvas.drawLine (
35
- Offset (last.left + last.width / 2 , last.top + last.height),
36
- Offset (
37
- current.left + current.width / 2 , current.top + current.height),
38
- paint);
39
- last = current;
40
- }
29
+ canvas.drawPoints (PointMode .polygon, polylineData, paint);
41
30
}
42
31
}
43
32
@@ -47,7 +36,7 @@ class ChartsState extends State<ChartsExample> {
47
36
late List <int > compareData;
48
37
late int maxValue;
49
38
int current = 6 ;
50
- Map < int , Rect > polylineData = HashMap () ;
39
+ late List < Offset > polylineData;
51
40
ScrollController controller = ScrollController ();
52
41
53
42
@override
@@ -58,6 +47,7 @@ class ChartsState extends State<ChartsExample> {
58
47
data = [for (int i = 0 ; i < xTitles.length; i++ ) 10 + random.nextInt (91 )];
59
48
compareData = data.toList ()..shuffle ();
60
49
maxValue = data.reduce (max);
50
+ polylineData = List .filled (data.length, Offset .zero);
61
51
}
62
52
63
53
@override
@@ -179,8 +169,8 @@ class ChartsState extends State<ChartsExample> {
179
169
.bottomMargin ((compareData[i] / maxValue) * 400 ),
180
170
translate: const Offset (0 , 0.5 ),
181
171
percentageTranslate: true ,
182
- callback : (_, rect) {
183
- polylineData[i] = rect;
172
+ layoutCallback : (_, rect) {
173
+ polylineData[i] = rect.bottomCenter ;
184
174
},
185
175
),
186
176
Container (
0 commit comments