Flutter audioplayers插件配置正确却无法播放资源音频问题
解决Flutter audioplayers点击列表项无声音的问题
核心问题排查与修复
pubspec.yaml 配置错误
- 依赖声明多了冗余句号:原代码
audioplayers:^6.1.0.要改为audioplayers: ^6.1.0(版本号前需加空格) - assets路径拼写错误:
assest/voices/Bonjour.mp3里的assest是笔误,正确应为assets/voices/Bonjour.mp3
- 依赖声明多了冗余句号:原代码
音频文件路径匹配错误
你在pubspec里配置的是完整路径assets/voices/Bonjour.mp3,但播放时只用了Bonjour.mp3,导致无法定位到音频文件,必须传入完整的相对路径(注意AssetSource无需带开头的assets/,框架会自动拼接)。建议添加错误捕获
加入try-catch可以快速排查播放失败的具体原因,比如文件不存在、权限问题等。
修复后的完整代码
pubspec.yaml 关键配置
dependencies: flutter: sdk: flutter audioplayers: ^6.1.0 # 修正后的依赖声明 flutter: assets: - assets/voices/Bonjour.mp3 # 修正拼写后的路径
Dart 代码
import 'package:audioplayers/audioplayers.dart'; import 'package:flutter/material.dart'; class Introduction extends StatefulWidget { @override _IntroductionState createState() => _IntroductionState(); } class _IntroductionState extends State<Introduction> { final AudioPlayer audioPlayer = AudioPlayer(); List<Map<String, String>> phrases = [ {'french': 'Comment vous appelez-vous ?', 'english': 'What is your name?'}, // 更多短语... ]; void playAudio(String phrase) async { if (phrase == 'Comment vous appelez-vous ?') { try { // 使用正确的相对路径 await audioPlayer.play(const AssetSource('voices/Bonjour.mp3')); } catch (e) { debugPrint('播放失败: $e'); // 打印错误信息排查问题 } } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text("Introduction Phrases")), body: ListView.builder( itemCount: phrases.length, itemBuilder: (context, index) { final phrase = phrases[index]; return ListTile( title: Text(phrase['french']!), onTap: () => playAudio(phrase['french']!), ); }, ), ); } }
额外检查项
- 确认
assets/voices/Bonjour.mp3文件确实存在于项目对应目录中,文件名大小写要和配置一致(区分大小写) - 物理设备测试时确保媒体音量未静音
- 若仍有问题,可尝试调用
audioPlayer.setVolume(1.0)强制设置音量
内容的提问来源于stack exchange,提问作者HASHMAT
相关产品推荐
相关产品推荐

