play first track if currentTrack is null
This commit is contained in:
parent
7f06a7b96e
commit
8f220f800d
|
@ -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")),
|
||||||
|
|
|
@ -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!);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -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),
|
||||||
]),
|
]),
|
||||||
|
|
Loading…
Reference in New Issue