我的 Flutter 代码(纯音频插件)
SliderTheme(
data: SliderThemeData(
trackHeight: 3,
thumbShape:
RoundSliderThumbShape(enabledThumbRadius: 8),
thumbColor: kWhiteColor,
activeTrackColor: kPrimaryColor,
inactiveTrackColor: kWhiteColor.withOpacity(0.5),
overlayColor: kPrimaryColor.withOpacity(0.1),
trackShape: AppCustomTrackShape(),
),
child: Slider(
max: mediaProvider.totalDuration.inSeconds.toDouble(),
value: mediaProvider.currentPosition.inSeconds.toDouble(),
onChanged: (double value) async{
await mediaProvider.seekAudioPlayer(value);
},
),
)
当前行为:当播放音频并且我拖动滑块时,您会注意到一个奇怪的动画,例如滑块被从相反的方向拖动。
我认为奇怪的行为是因为滑块的值在不断变化(音频播放)
必需的行为:当音频正在播放并且我拖动滑块时,滑块的拇指应该动画(移动)但滑块的值在拖动事件结束(onChnagedEnd)之前不应更改。就像 youtube 和任何其他音频/视频播放器一样。
提供者变量更新
void readyPlayer(){
audioPlayer.durationStream.listen((Duration? duration) {
if(duration != null){
updateTotalDuration(duration);
}
});
audioPlayer.positionStream.listen((Duration duration) {
updateCurrentPosition(duration);
});
audioPlayer.playerStateStream.listen((PlayerState playerState) {
updatePlayerState(playerState);
});
audioPlayer.playingStream.listen((bool playing) {
updatePlaying(playing);
});
audioPlayer.processingStateStream.listen((ProcessingState state){
if(state == ProcessingState.completed){
nextScene();
playAudio();
}
});
notifyListeners();
}