flutter如何用just_audio播放mp3
我在Flutter项目中集成了just_audio插件,想用它来播放本地assets目录下的MP3文件。按照文档配置了pubspec.yaml和代码,但运行时总是报"Unable to load asset"错误。我的实现代码如下:
AudioPlayer player = AudioPlayer();
await player.setAsset('assets/audio/sample.mp3');
已经在pubspec.yaml中正确声明了assets:
assets:
- assets/audio/sample.mp3
文件路径确认无误,但就是无法加载。请问正确的实现方式是什么?是否需要额外的配置步骤?
更多关于flutter如何用just_audio播放mp3的实战教程也可以访问 https://www.itying.com/category-92-b0.html
2 回复
使用just_audio播放MP3:
- 添加依赖:
just_audio: ^0.9.34 - 创建播放器实例:
final player = AudioPlayer();
- 播放MP3:
await player.setUrl('https://example.com/audio.mp3');
player.play();
- 暂停:
player.pause() - 停止:
player.stop()
记得处理异常和资源释放。
更多关于flutter如何用just_audio播放mp3的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中使用 just_audio 播放 MP3 文件非常简单,只需几个步骤:
-
添加依赖:在
pubspec.yaml文件中添加just_audio依赖:dependencies: just_audio: ^0.9.35运行
flutter pub get安装依赖。 -
基本代码示例:
import 'package:just_audio/just_audio.dart'; class AudioPlayerExample extends StatefulWidget { @override _AudioPlayerExampleState createState() => _AudioPlayerExampleState(); } class _AudioPlayerExampleState extends State<AudioPlayerExample> { final AudioPlayer _audioPlayer = AudioPlayer(); @override void initState() { super.initState(); _initAudio(); } Future<void> _initAudio() async { try { // 播放网络 MP3 文件 await _audioPlayer.setUrl('https://example.com/audio.mp3'); // 或播放本地文件(需将文件放在 assets 中并在 pubspec.yaml 声明) // await _audioPlayer.setAsset('assets/audio.mp3'); } catch (e) { print("Error loading audio: $e"); } } @override void dispose() { _audioPlayer.dispose(); // 释放资源 super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ // 播放/暂停按钮 StreamBuilder<PlayerState>( stream: _audioPlayer.playerStateStream, builder: (context, snapshot) { final playerState = snapshot.data; final processingState = playerState?.processingState; final playing = playerState?.playing; if (processingState == ProcessingState.loading || processingState == ProcessingState.buffering) { return CircularProgressIndicator(); } else if (playing != true) { return IconButton( icon: Icon(Icons.play_arrow), onPressed: _audioPlayer.play, ); } else { return IconButton( icon: Icon(Icons.pause), onPressed: _audioPlayer.pause, ); } }, ), // 进度条(可选) StreamBuilder<Duration>( stream: _audioPlayer.positionStream, builder: (context, snapshot) { final position = snapshot.data ?? Duration.zero; return Text('${position.inSeconds}s'); }, ), ], ), ), ); } }
关键说明:
- 网络音频:使用
setUrl()并提供有效的 MP3 URL。 - 本地音频:将文件放入
assets文件夹,在pubspec.yaml中声明,并使用setAsset()。 - 控制方法:
play()、pause()、stop()、seek()等。 - 资源释放:在
dispose()中调用_audioPlayer.dispose()避免内存泄漏。
如需更多功能(如循环、音量调节、播放列表),请参考 just_audio 官方文档。

