Skip to content

Commit c10b18d

Browse files
committed
fix(queue): ensure correct item removal from queue on dismiss
1 parent cd37116 commit c10b18d

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

lib/widgets/queue_list_view.dart

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,11 @@ class _QueueWidgetState extends State<QueueWidget> {
4747
void initState() {
4848
super.initState();
4949
_subscription = audioHandler.queueAsMapStream.listen((queue) {
50-
if (mounted && !_isDismissing)
51-
setState(() => _queue = List<Map>.from(queue));
50+
if (mounted && !_isDismissing) {
51+
setState(() {
52+
_queue = List<Map>.from(queue);
53+
});
54+
}
5255
});
5356
}
5457

@@ -270,11 +273,14 @@ class _QueueWidgetState extends State<QueueWidget> {
270273
return true;
271274
},
272275
onDismissed: () {
276+
final ytid = song['ytid'];
277+
final actualIndex = _queue.indexWhere((s) => s['ytid'] == ytid);
278+
if (actualIndex == -1) return;
273279
setState(() {
274280
_isDismissing = false;
275-
_queue.removeAt(index);
281+
_queue.removeAt(actualIndex);
276282
});
277-
audioHandler.removeFromQueue(index);
283+
audioHandler.removeFromQueue(actualIndex);
278284
},
279285
);
280286
},

0 commit comments

Comments
 (0)