diff --git a/lib/providers/home.dart b/lib/providers/home.dart index d7a8712..7eb9ee1 100644 --- a/lib/providers/home.dart +++ b/lib/providers/home.dart @@ -124,6 +124,31 @@ class HomeProvider with ChangeNotifier { yt.close(); } + Future nextTrack() async { + if (currentTrack != null && currentTrack!.number < trackList.last.number) { + currentTrack = trackList + .firstWhere((element) => element.number == currentTrack!.number + 1); + await playTrack(currentTrack!); + } + } + + Future backTrack() async { + if (currentTrack != null && currentTrack!.number > 1) { + currentTrack = trackList + .firstWhere((element) => element.number == currentTrack!.number - 1); + await playTrack(currentTrack!); + } + } + + void resumePlay() { + if (currentTrack == null) { + currentTrack = trackList.first; + playTrack(currentTrack!); + } else { + player.state.name == 'playing' ? player.pause() : player.resume(); + } + } + List> get radioList { List> menuItems = [ const DropdownMenuItem(value: "fip", child: Text("FIP")), diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 7c51c0c..2929e4b 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -30,33 +30,23 @@ class _HomeScreenState extends State { autofocus: true, focusNode: FocusNode(), onKey: (RawKeyEvent event) { - log.d(event.data.logicalKey.keyId); + // log.d(event.data.logicalKey.keyId); if (event.runtimeType == RawKeyDownEvent) //Enter Key ID from keyboard { switch (event.data.logicalKey.keyId) { case 32: case 112: case 4294969861: - hp.player.state.name == 'playing' - ? hp.player.pause() - : hp.player.resume(); + hp.resumePlay(); break; case 110: case 94489280688: - if (hp.currentTrack != null && - hp.currentTrack!.number < hp.trackList.last.number) { - hp.currentTrack = hp.trackList.firstWhere( - (element) => element.number == hp.currentTrack!.number + 1); - hp.playTrack(hp.currentTrack!); - } + hp.nextTrack(); break; case 98: case 94489280689: - if (hp.currentTrack != null && hp.currentTrack!.number > 1) { - hp.currentTrack = hp.trackList.firstWhere( - (element) => element.number == hp.currentTrack!.number - 1); - hp.playTrack(hp.currentTrack!); - } + hp.backTrack(); + break; } } }, diff --git a/lib/widgets/player/player_controls.dart b/lib/widgets/player/player_controls.dart index 6d62009..ef03b75 100644 --- a/lib/widgets/player/player_controls.dart +++ b/lib/widgets/player/player_controls.dart @@ -22,21 +22,13 @@ class PlayerControls extends StatelessWidget { icon: Icon(Icons.skip_previous, color: Colors.grey[500], size: 32), onPressed: () { - if (hp.currentTrack != null && hp.currentTrack!.number > 1) { - hp.currentTrack = hp.trackList.firstWhere((element) => - element.number == hp.currentTrack!.number - 1); - hp.playTrack(hp.currentTrack!); - } + hp.backTrack(); }), ]), const SizedBox(width: 1), ElevatedButton( onPressed: () { - hp.player.state.name == 'playing' - ? hp.player.pause() - : hp.player.resume(); - - // playerProvider.reload(); + hp.resumePlay(); }, style: ElevatedButton.styleFrom( foregroundColor: Colors.grey[900], @@ -56,12 +48,7 @@ class PlayerControls extends StatelessWidget { padding: const EdgeInsets.all(0), icon: Icon(Icons.skip_next, color: Colors.grey[500], size: 32), onPressed: () { - if (hp.currentTrack != null && - hp.currentTrack!.number < hp.trackList.last.number) { - hp.currentTrack = hp.trackList.firstWhere((element) => - element.number == hp.currentTrack!.number + 1); - hp.playTrack(hp.currentTrack!); - } + hp.nextTrack(); }), // const SizedBox(height: 7), ]),