Flutter开发:audioplayers的onAudioPositionChanged废弃,如何监听音频位置?
替代废弃的
onAudioPositionChanged监听音频位置的方案 在audioplayers包的新版本中,onAudioPositionChanged已被废弃,2023年起推荐使用onPositionChanged这个Stream来监听音频播放位置,用法和旧API基本一致,仅名称变更。
代码示例
// 监听音频播放位置 audioPlayer.onPositionChanged.listen((newPosition) { setState(() { position = newPosition; }); });
备选方案:主动定时查询
如果需要更灵活的控制逻辑,也可以通过定期主动调用getCurrentPosition()方法获取位置,搭配Timer.periodic实现:
Timer.periodic(const Duration(milliseconds: 100), (timer) async { if (audioPlayer.state == PlayerState.playing) { final currentPos = await audioPlayer.getCurrentPosition(); setState(() { position = currentPos ?? Duration.zero; }); } else { timer.cancel(); // 暂停或结束时取消定时器 } });
注意:确保你的audioplayers依赖是较新版本(如0.20.x及以上),不同版本的API细节可能略有差异,建议保持依赖更新。
内容的提问来源于stack exchange,提问作者user22030129
相关产品推荐
相关产品推荐

