Flutter本地音频无法播放:MissingPluginException问题求助
本地音频无法播放,报MissingPluginException错误
问题描述
我遇到了本地音频无法播放的问题,以下是我的实现代码:
Future<void> _playSound() async { await _audioPlayer.play(AssetSource('audio.mp3')); }
我在pubspec.yaml中对文件的配置如下:
assets: - assets/audio.mp3
音频文件目录:
出现如下报错:
[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端的插件绑定代码没同步生成。
解决方案
试试以下步骤:
重新构建原生项目
- Android:打开项目的
android目录(用Android Studio),等Gradle同步完成后重新构建;或者终端执行flutter run --debug,让Flutter重新生成Android插件绑定。 - iOS:打开
ios目录下的Runner.xcworkspace(别用.xcodeproj),执行pod install,然后清理构建缓存(Xcode里选Product > Clean Build Folder),再重新运行项目。
- Android:打开项目的
显式添加
path_provider依赖
虽然audioplayers会间接依赖,但手动显式添加更稳妥,修改pubspec.yaml:dependencies: flutter: sdk: flutter audioplayers: ^x.x.x # 替换成你实际用的版本 path_provider: ^x.x.x # 添加这一行,用最新稳定版执行
flutter pub get后重新运行项目。彻底清理后重建
按顺序执行以下命令:flutter clean # iOS环境额外执行 rm -rf ios/Pods ios/Podfile.lock # Android环境额外执行 rm -rf android/.gradle android/build flutter pub get之后重启模拟器/真机,运行
flutter run。检查版本兼容性
确保Flutter版本和audioplayers、path_provider版本兼容。如果用的是旧版Flutter,尝试升级到最新稳定版:flutter upgrade
额外验证
如果以上步骤都没用,新建一个Flutter测试项目,添加相同依赖和音频播放代码,看能不能正常运行。如果新项目可以,说明原项目的原生配置可能损坏,对比新项目修复即可。
内容的提问来源于stack exchange,提问作者Genexys
相关产品推荐
相关产品推荐

