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();
}
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>> menuItems = [
const DropdownMenuItem(value: "fip", child: Text("FIP")),

View File

@ -30,33 +30,23 @@ class _HomeScreenState extends State<HomeScreen> {
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;
}
}
},

View File

@ -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),
]),