v2.48 — Shuffle-Modus
## PlayerService - PlayerService ist jetzt ChangeNotifier (UI hängt per addListener/ListenableBuilder an) - zufallsmodus Getter + setZufallsmodus(bool) - Zufallsreihenfolge: alle Queue-Indizes außer dem aktuellen Song, gemischt - naechstes(): bei Shuffle nächster Song aus Zufallsreihenfolge, ohne Wiederholung bis alle durch - vorheriges(): geht in der Zufallsreihenfolge zurück - spiele(): synchronisiert Shuffle-Position (auch bei manueller Auswahl) ## MiniPlayer - Shuffle-Icon (rot wenn aktiv, Tipp schaltet um) Keine neuen Packages, flutter analyze 0 Issues, Tests 4/4
This commit is contained in:
@@ -43,10 +43,17 @@ class _MiniPlayerState extends State<MiniPlayer> {
|
||||
_songSub = _player.onSongWechsel.listen((_) {
|
||||
if (mounted) setState(() {});
|
||||
});
|
||||
// Shuffle-/Repeat-/Sleep-Zustand live halten
|
||||
_player.addListener(_onPlayerChanged);
|
||||
}
|
||||
|
||||
void _onPlayerChanged() {
|
||||
if (mounted) setState(() {});
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_player.removeListener(_onPlayerChanged);
|
||||
_posSub?.cancel();
|
||||
_stateSub?.cancel();
|
||||
_songSub?.cancel();
|
||||
@@ -98,6 +105,8 @@ class _MiniPlayerState extends State<MiniPlayer> {
|
||||
],
|
||||
),
|
||||
),
|
||||
// Shuffle
|
||||
_shuffleBtn(),
|
||||
// Steuerung
|
||||
_btn(Icons.skip_previous, _player.vorheriges),
|
||||
_playBtn(),
|
||||
@@ -123,7 +132,17 @@ class _MiniPlayerState extends State<MiniPlayer> {
|
||||
);
|
||||
}
|
||||
|
||||
Widget _btn(IconData icon, VoidCallback onTap) {
|
||||
/// Shuffle-Icon — rot wenn aktiv
|
||||
Widget _shuffleBtn() {
|
||||
final aktiv = _player.zufallsmodus;
|
||||
return _btn(
|
||||
Icons.shuffle,
|
||||
() => _player.setZufallsmodus(!aktiv),
|
||||
farbe: aktiv ? MeloTheme.rot : Colors.white,
|
||||
);
|
||||
}
|
||||
|
||||
Widget _btn(IconData icon, VoidCallback onTap, {Color farbe = Colors.white}) {
|
||||
return Material(
|
||||
color: Colors.transparent,
|
||||
child: InkWell(
|
||||
@@ -132,7 +151,7 @@ class _MiniPlayerState extends State<MiniPlayer> {
|
||||
child: Container(
|
||||
width: 32, height: 32,
|
||||
alignment: Alignment.center,
|
||||
child: Icon(icon, size: 18, color: Colors.white),
|
||||
child: Icon(icon, size: 18, color: farbe),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user