音频播放器
一个 Flutter 音频插件 (ObjC/Java),用于播放远程或本地音频文件。
特点
- [x] Android & iOS
- [x] 播放 (远程文件)
- [x] 停止
- [x] 暂停
- [x] 播放完毕
- [x] 持续时间/当前位置
- [x] 跳转
- [x] 静音

用法
使用此插件
- 将依赖项添加到您的 pubspec.yaml 文件。
dependencies:
flutter:
sdk: flutter
audioplayer:
- 实例化一个 AudioPlayer 实例
//...
AudioPlayer audioPlugin = new AudioPlayer();
//...
播放器控件
Future<void> play() async {
await audioPlayer.play(kUrl);
setState(() => playerState = PlayerState.playing);
}
Future<void> pause() async {
await audioPlayer.pause();
setState(() => playerState = PlayerState.paused);
}
Future<void> stop() async {
await audioPlayer.stop();
setState(() {
playerState = PlayerState.stopped;
position = new Duration();
});
}
状态和当前位置
插件的 Dart 部分监听平台调用
//...
_positionSubscription = audioPlayer.onAudioPositionChanged.listen(
(p) => setState(() => position = p)
);
_audioPlayerStateSubscription = audioPlayer.onPlayerStateChanged.listen((s) {
if (s == AudioPlayerState.PLAYING) {
setState(() => duration = audioPlayer.duration);
} else if (s == AudioPlayerState.STOPPED) {
onComplete();
setState(() {
position = duration;
});
}
}, onError: (msg) {
setState(() {
playerState = PlayerState.stopped;
duration = new Duration(seconds: 0);
position = new Duration(seconds: 0);
});
});
别忘了在 widget disposed 时取消所有订阅。
iOS
:warning: iOS 应用传输安全
默认情况下,iOS 禁止加载非 HTTPS URL。要取消此限制,请编辑您的 .plist 文件并添加
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>