just_audio_windows无法加载文件名含Unicode字符的音频文件
问题:just_audio_windows无法加载含Unicode字符的音频文件
现象
加载文件名或路径包含Unicode字符(如дуу.mp3)的音频文件时,抛出错误:
[just_audio_windows] Item error: The system cannot find the path specified.
示例代码:
import 'package:just_audio/just_audio.dart'; void loadUnicodeAudio() { final audioPlayer = AudioPlayer(); audioPlayer.setFilePath('D:/examplefolder/дуу.mp3'); } void loadUnicodeAudio2() { final audioPlayer = AudioPlayer(); audioPlayer.setFilePath('D:/дуу/song.mp3'); }
环境
- just_audio: ^0.9.31
- just_audio_windows: ^0.2.0
- Flutter: 3.10.2
- Windows 11
解决方案
1. 升级依赖包
just_audio_windows的旧版本(如0.2.0)存在Unicode路径处理缺陷,升级到最新稳定版可直接修复该问题。更新pubspec.yaml中的依赖:
dependencies: just_audio: ^latest_version just_audio_windows: ^latest_version
执行flutter pub get更新依赖后重试。
2. 使用Uri替代直接传文件路径
若暂时无法升级包,可通过Uri.file()将路径转换为标准Uri后,调用setUri()加载:
import 'package:just_audio/just_audio.dart'; void loadUnicodeAudio() { final audioPlayer = AudioPlayer(); final uri = Uri.file('D:/examplefolder/дуу.mp3'); audioPlayer.setUri(uri); } void loadUnicodeAudio2() { final audioPlayer = AudioPlayer(); final uri = Uri.file('D:/дуу/song.mp3'); audioPlayer.setUri(uri); }
这种方式会自动处理Unicode字符编码,确保Windows系统能正确识别路径。
3. 验证路径正确性
确认文件实际存在于指定路径,且路径中的Unicode字符无输入错误(如全角/半角混淆、拼写错误)。可直接从Windows资源管理器复制路径,避免手动输入导致的编码问题。
内容的提问来源于stack exchange,提问作者Bilguun Ts
相关产品推荐
相关产品推荐

