File tree Expand file tree Collapse file tree 2 files changed +20
-15
lines changed Expand file tree Collapse file tree 2 files changed +20
-15
lines changed Original file line number Diff line number Diff line change @@ -235,6 +235,7 @@ class RoboticArmStateProvider extends ChangeNotifier {
235
235
List <FlSpot > spots = [];
236
236
List <double > dutyCycles = [];
237
237
List <double > angleList = [];
238
+ List <Map <String , dynamic >> dutyLabelPoints = [];
238
239
239
240
double time = 0 ;
240
241
@@ -254,6 +255,12 @@ class RoboticArmStateProvider extends ChangeNotifier {
254
255
final duty = (pulseHigh / period) * 100 ;
255
256
dutyCycles.add (duty);
256
257
258
+ final mid = time + highMs / 2 ;
259
+ dutyLabelPoints.add ({
260
+ 'x' : mid,
261
+ 'label' : '${duty .toStringAsFixed (1 )}$percentage ' ,
262
+ });
263
+
257
264
spots.add (FlSpot (time, 0 ));
258
265
spots.add (FlSpot (time, 1 ));
259
266
spots.add (FlSpot (time + highMs, 1 ));
@@ -287,6 +294,7 @@ class RoboticArmStateProvider extends ChangeNotifier {
287
294
'avgAngle' : avgAngle,
288
295
'minAngle' : minAngle,
289
296
'maxAngle' : maxAngleVal,
297
+ 'dutyLabelPoints' : dutyLabelPoints,
290
298
};
291
299
}
292
300
}
Original file line number Diff line number Diff line change @@ -37,6 +37,7 @@ class _PlaybackSummaryDialogState extends State<PlaybackSummaryDialog> {
37
37
final double avg = data['avgAngle' ];
38
38
final double max = data['maxAngle' ];
39
39
final double min = data['minAngle' ];
40
+ final List <Map <String , dynamic >> labelPoints = data['dutyLabelPoints' ];
40
41
41
42
return Dialog (
42
43
backgroundColor: Colors .white,
@@ -235,23 +236,18 @@ class _PlaybackSummaryDialogState extends State<PlaybackSummaryDialog> {
235
236
reservedSize: 12 ,
236
237
interval: 1 ,
237
238
getTitlesWidget: (value, _) {
238
- final double period =
239
- 1000 / widget.frequency;
240
- for (int i = 0 ;
241
- i < data['dutyList' ].length;
242
- i++ ) {
243
- final double start =
244
- i * period;
245
- final double high =
246
- (data['dutyList' ][i] /
247
- 100 ) *
248
- period;
249
- final double mid =
250
- start + high / 2 ;
251
- if ((value - mid).abs () <
239
+ if (pwmSpots.isEmpty) {
240
+ return const SizedBox
241
+ .shrink ();
242
+ }
243
+
244
+ for (final label
245
+ in labelPoints) {
246
+ if ((label['x' ] - value)
247
+ .abs () <
252
248
0.5 ) {
253
249
return Text (
254
- '${ data [ 'dutyList' ][ i ]. toStringAsFixed ( 1 )}$ percentage ' ,
250
+ label[ 'label' ] ,
255
251
style: const TextStyle (
256
252
color: Colors .white70,
257
253
fontSize: 9 ,
@@ -261,6 +257,7 @@ class _PlaybackSummaryDialogState extends State<PlaybackSummaryDialog> {
261
257
);
262
258
}
263
259
}
260
+
264
261
return const SizedBox .shrink ();
265
262
},
266
263
),
You can’t perform that action at this time.
0 commit comments