mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-14 08:25:16 +00:00
fix: less frequent position updates
This commit is contained in:
parent
09b24cf1fd
commit
0a49b56566
@ -20,19 +20,28 @@ import 'package:spotube/services/audio_player/audio_player.dart';
|
|||||||
final duration = useStream(audioPlayer.durationStream).data ??
|
final duration = useStream(audioPlayer.durationStream).data ??
|
||||||
durationFuture.data ??
|
durationFuture.data ??
|
||||||
Duration.zero;
|
Duration.zero;
|
||||||
final positionFuture = useFuture(audioPlayer.position);
|
|
||||||
final positionSnapshot = useStream(audioPlayer.positionStream);
|
|
||||||
|
|
||||||
final position =
|
final positionFuture = useFuture(audioPlayer.position);
|
||||||
positionSnapshot.data ?? positionFuture.data ?? Duration.zero;
|
final position = useState<Duration>(positionFuture.data ?? Duration.zero);
|
||||||
|
|
||||||
final sliderMax = duration.inSeconds;
|
final sliderMax = duration.inSeconds;
|
||||||
final sliderValue = position.inSeconds;
|
final sliderValue = position.value.inSeconds;
|
||||||
|
|
||||||
|
useEffect(() {
|
||||||
|
// audioPlayer.positionStream is fired every 200ms and only 1s delay is
|
||||||
|
// enough. Thus only update the position if the difference is more than 1s
|
||||||
|
var lastPosition = position.value;
|
||||||
|
return audioPlayer.positionStream.listen((event) {
|
||||||
|
if (event.inMilliseconds - lastPosition.inMilliseconds < 1000) return;
|
||||||
|
lastPosition = event;
|
||||||
|
position.value = event;
|
||||||
|
}).cancel;
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
progressStatic:
|
progressStatic:
|
||||||
sliderMax == 0 || sliderValue > sliderMax ? 0 : sliderValue / sliderMax,
|
sliderMax == 0 || sliderValue > sliderMax ? 0 : sliderValue / sliderMax,
|
||||||
position: position,
|
position: position.value,
|
||||||
duration: duration,
|
duration: duration,
|
||||||
bufferProgress: sliderMax == 0 || bufferProgress > sliderMax
|
bufferProgress: sliderMax == 0 || bufferProgress > sliderMax
|
||||||
? 0
|
? 0
|
||||||
|
Loading…
Reference in New Issue
Block a user