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

Flutter本地音频无法播放:MissingPluginException问题求助

本地音频无法播放,报MissingPluginException错误

问题描述

我遇到了本地音频无法播放的问题,以下是我的实现代码:

Future<void> _playSound() async {
  await _audioPlayer.play(AssetSource('audio.mp3'));
}

我在pubspec.yaml中对文件的配置如下:

assets:
    - assets/audio.mp3

音频文件目录:
Audio file directory

出现如下报错:

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: MissingPluginException(No implementation found for method getTemporaryDirectory on channel plugins.flutter.io/path_provider)
#0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:332:7)
<asynchronous suspension>
#1      getTemporaryDirectory (package:path_provider/path_provider.dart:55:24)
<asynchronous suspension>
#2      AudioCache.getTempDir (package:audioplayers/src/audio_cache.dart:76:41)
<asynchronous suspension>
#3      AudioCache.fetchToMemory (package:audioplayers/src/audio_cache.dart:91:37)
<asynchronous suspension>
#4      AudioCache.load (package:audioplayers/src/audio_cache.dart:114:31)
<asynchronous suspension>
#5      AudioPlayer.setSourceAsset (package:audioplayers/src/audioplayer.dart:337:17)
<asynchronous suspension>
#6      AudioPlayer.setSource (package:audioplayers/src/audioplayer.dart:284:5)
<asynchronous suspension>
#7      AudioPlayer.play (package:audioplayers/src/audiopl<…>

我已经重启应用,执行过flutter clean和flutter pub get,但问题仍存在,请问问题出在哪里?


问题根源

这个报错核心是path_provider插件的原生平台实现没正确集成到项目里。audioplayers依赖path_provider获取临时目录缓存音频资源,但Android/iOS端的插件绑定代码没同步生成。

解决方案

试试以下步骤:

  1. 重新构建原生项目

    • Android:打开项目的android目录(用Android Studio),等Gradle同步完成后重新构建;或者终端执行flutter run --debug,让Flutter重新生成Android插件绑定。
    • iOS:打开ios目录下的Runner.xcworkspace(别用.xcodeproj),执行pod install,然后清理构建缓存(Xcode里选Product > Clean Build Folder),再重新运行项目。
  2. 显式添加path_provider依赖
    虽然audioplayers会间接依赖,但手动显式添加更稳妥,修改pubspec.yaml:

    dependencies:
      flutter:
        sdk: flutter
      audioplayers: ^x.x.x # 替换成你实际用的版本
      path_provider: ^x.x.x # 添加这一行,用最新稳定版
    

    执行flutter pub get后重新运行项目。

  3. 彻底清理后重建
    按顺序执行以下命令:

    flutter clean
    # iOS环境额外执行
    rm -rf ios/Pods ios/Podfile.lock
    # Android环境额外执行
    rm -rf android/.gradle android/build
    flutter pub get
    

    之后重启模拟器/真机,运行flutter run。

  4. 检查版本兼容性
    确保Flutter版本和audioplayers、path_provider版本兼容。如果用的是旧版Flutter,尝试升级到最新稳定版:

    flutter upgrade
    

额外验证

如果以上步骤都没用,新建一个Flutter测试项目,添加相同依赖和音频播放代码,看能不能正常运行。如果新项目可以,说明原项目的原生配置可能损坏,对比新项目修复即可。

内容的提问来源于stack exchange,提问作者Genexys

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:22:34