You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:45:32