Skip to content

Commit b53e140

Browse files
authored
fix: small UI bug in robotic arm screen (#2763)
1 parent bcb5817 commit b53e140

File tree

2 files changed

+20
-15
lines changed

2 files changed

+20
-15
lines changed

lib/providers/robotic_arm_state_provider.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ class RoboticArmStateProvider extends ChangeNotifier {
235235
List<FlSpot> spots = [];
236236
List<double> dutyCycles = [];
237237
List<double> angleList = [];
238+
List<Map<String, dynamic>> dutyLabelPoints = [];
238239

239240
double time = 0;
240241

@@ -254,6 +255,12 @@ class RoboticArmStateProvider extends ChangeNotifier {
254255
final duty = (pulseHigh / period) * 100;
255256
dutyCycles.add(duty);
256257

258+
final mid = time + highMs / 2;
259+
dutyLabelPoints.add({
260+
'x': mid,
261+
'label': '${duty.toStringAsFixed(1)}$percentage',
262+
});
263+
257264
spots.add(FlSpot(time, 0));
258265
spots.add(FlSpot(time, 1));
259266
spots.add(FlSpot(time + highMs, 1));
@@ -287,6 +294,7 @@ class RoboticArmStateProvider extends ChangeNotifier {
287294
'avgAngle': avgAngle,
288295
'minAngle': minAngle,
289296
'maxAngle': maxAngleVal,
297+
'dutyLabelPoints': dutyLabelPoints,
290298
};
291299
}
292300
}

lib/view/widgets/robotic_arm_summary.dart

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class _PlaybackSummaryDialogState extends State<PlaybackSummaryDialog> {
3737
final double avg = data['avgAngle'];
3838
final double max = data['maxAngle'];
3939
final double min = data['minAngle'];
40+
final List<Map<String, dynamic>> labelPoints = data['dutyLabelPoints'];
4041

4142
return Dialog(
4243
backgroundColor: Colors.white,
@@ -235,23 +236,18 @@ class _PlaybackSummaryDialogState extends State<PlaybackSummaryDialog> {
235236
reservedSize: 12,
236237
interval: 1,
237238
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() <
252248
0.5) {
253249
return Text(
254-
'${data['dutyList'][i].toStringAsFixed(1)}$percentage',
250+
label['label'],
255251
style: const TextStyle(
256252
color: Colors.white70,
257253
fontSize: 9,
@@ -261,6 +257,7 @@ class _PlaybackSummaryDialogState extends State<PlaybackSummaryDialog> {
261257
);
262258
}
263259
}
260+
264261
return const SizedBox.shrink();
265262
},
266263
),

0 commit comments

Comments
 (0)