1

我的 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();
}
4

0 回答 0