Flutter如何从应用目录(存储)播放音频文件?
解决本地存储音频播放报错问题
排查与修复方案
确认文件真实存在
复制你提供的路径到Finder中打开,验证2.mp3是否确实存在于该位置。iOS模拟器中,App重新安装后容器路径会变更,硬编码的旧路径会直接失效,这是常见诱因。使用动态路径替代硬编码绝对路径
借助Flutter的path_provider插件获取App的合法存储目录,再拼接音频子路径,确保路径始终有效:import 'package:path_provider/path_provider.dart'; import 'package:assets_audio_player/assets_audio_player.dart'; Future<void> playLocalAudio() async { // 获取App的Application Support目录 final directory = await getApplicationSupportDirectory(); // 拼接目标音频文件路径 final playableFilePath = '${directory.path}/VocalDatabaseAudio/word_audio_one/2.mp3'; final assetsAudioPlayer = AssetsAudioPlayer(); try { await assetsAudioPlayer.open(Audio.file(playableFilePath)); } catch (e) { print('播放错误: $e'); } }前置文件存在性校验
先通过File对象验证文件存在后再尝试播放,避免因路径错误导致的报错:final audioFile = File(playableFilePath); if (await audioFile.exists()) { await assetsAudioPlayer.open(Audio.file(audioFile.path)); } else { print('目标音频文件不存在'); }检查权限(针对外部导入文件)
如果音频文件是从App外部导入的,需确保iOS项目配置了对应的文件读取权限;若为App自身写入的文件,path_provider获取的目录默认具备读写权限,无需额外配置。
内容的提问来源于stack exchange,提问作者Noor Hossain
相关产品推荐
相关产品推荐

