spotube/lib/hooks/playback.dart
2022-07-03 13:53:38 +06:00

47 lines
1.2 KiB
Dart

import 'package:spotube/models/Logger.dart';
import 'package:spotube/provider/Playback.dart';
final logger = getLogger("PlaybackHook");
Future<void> Function() useNextTrack(Playback playback) {
return () async {
try {
await playback.player.pause();
await playback.player.seek(Duration.zero);
playback.seekForward();
} catch (e, stack) {
logger.e("useNextTrack", e, stack);
}
};
}
Future<void> Function() usePreviousTrack(Playback playback) {
return () async {
try {
await playback.player.pause();
await playback.player.seek(Duration.zero);
playback.seekBackward();
} catch (e, stack) {
logger.e("onPrevious", e, stack);
}
};
}
Future<void> Function([dynamic]) useTogglePlayPause(Playback playback) {
return ([key]) async {
try {
if (playback.track == null) {
return;
} else if (playback.track != null &&
playback.currentDuration == Duration.zero &&
await playback.player.getCurrentPosition() == Duration.zero) {
await playback.play(playback.track!);
} else {
await playback.togglePlayPause();
}
} catch (e, stack) {
logger.e("useTogglePlayPause", e, stack);
}
};
}