play first track if currentTrack is null

This commit is contained in:
poka 2023-04-16 03:48:13 +02:00
parent 7f06a7b96e
commit 8f220f800d
3 changed files with 33 additions and 31 deletions

View File

@ -124,6 +124,31 @@ class HomeProvider with ChangeNotifier {
yt.close(); 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<DropdownMenuItem<String>> get radioList { List<DropdownMenuItem<String>> get radioList {
List<DropdownMenuItem<String>> menuItems = [ List<DropdownMenuItem<String>> menuItems = [
const DropdownMenuItem(value: "fip", child: Text("FIP")), const DropdownMenuItem(value: "fip", child: Text("FIP")),

View File

@ -30,33 +30,23 @@ class _HomeScreenState extends State<HomeScreen> {
autofocus: true, autofocus: true,
focusNode: FocusNode(), focusNode: FocusNode(),
onKey: (RawKeyEvent event) { onKey: (RawKeyEvent event) {
log.d(event.data.logicalKey.keyId); // log.d(event.data.logicalKey.keyId);
if (event.runtimeType == RawKeyDownEvent) //Enter Key ID from keyboard if (event.runtimeType == RawKeyDownEvent) //Enter Key ID from keyboard
{ {
switch (event.data.logicalKey.keyId) { switch (event.data.logicalKey.keyId) {
case 32: case 32:
case 112: case 112:
case 4294969861: case 4294969861:
hp.player.state.name == 'playing' hp.resumePlay();
? hp.player.pause()
: hp.player.resume();
break; break;
case 110: case 110:
case 94489280688: case 94489280688:
if (hp.currentTrack != null && hp.nextTrack();
hp.currentTrack!.number < hp.trackList.last.number) {
hp.currentTrack = hp.trackList.firstWhere(
(element) => element.number == hp.currentTrack!.number + 1);
hp.playTrack(hp.currentTrack!);
}
break; break;
case 98: case 98:
case 94489280689: case 94489280689:
if (hp.currentTrack != null && hp.currentTrack!.number > 1) { hp.backTrack();
hp.currentTrack = hp.trackList.firstWhere( break;
(element) => element.number == hp.currentTrack!.number - 1);
hp.playTrack(hp.currentTrack!);
}
} }
} }
}, },

View File

@ -22,21 +22,13 @@ class PlayerControls extends StatelessWidget {
icon: icon:
Icon(Icons.skip_previous, color: Colors.grey[500], size: 32), Icon(Icons.skip_previous, color: Colors.grey[500], size: 32),
onPressed: () { onPressed: () {
if (hp.currentTrack != null && hp.currentTrack!.number > 1) { hp.backTrack();
hp.currentTrack = hp.trackList.firstWhere((element) =>
element.number == hp.currentTrack!.number - 1);
hp.playTrack(hp.currentTrack!);
}
}), }),
]), ]),
const SizedBox(width: 1), const SizedBox(width: 1),
ElevatedButton( ElevatedButton(
onPressed: () { onPressed: () {
hp.player.state.name == 'playing' hp.resumePlay();
? hp.player.pause()
: hp.player.resume();
// playerProvider.reload();
}, },
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
foregroundColor: Colors.grey[900], foregroundColor: Colors.grey[900],
@ -56,12 +48,7 @@ class PlayerControls extends StatelessWidget {
padding: const EdgeInsets.all(0), padding: const EdgeInsets.all(0),
icon: Icon(Icons.skip_next, color: Colors.grey[500], size: 32), icon: Icon(Icons.skip_next, color: Colors.grey[500], size: 32),
onPressed: () { onPressed: () {
if (hp.currentTrack != null && hp.nextTrack();
hp.currentTrack!.number < hp.trackList.last.number) {
hp.currentTrack = hp.trackList.firstWhere((element) =>
element.number == hp.currentTrack!.number + 1);
hp.playTrack(hp.currentTrack!);
}
}), }),
// const SizedBox(height: 7), // const SizedBox(height: 7),
]), ]),