嘿,我正在使用 flutter_sound 包进行录音。
但是,当我从记录器文件路径创建 File() 对象时,当我尝试调用 length() 或 readBytes() 函数时,我在 iOS 上遇到了意外错误。
在Android上一切正常,所以我尝试比较两个平台上制作的文件,它们有点不同
ANDROID 文件路径 = /storage/emulated/0/...
iOS 文件路径 = file:///Users/kleinpetr/Library/Developer/......
我认为问题出在不同的路径上。
iOS 上的错误看起来像这样
Cannot retrieve length of file, path =
'file:///Users/kleinpetr/Library/Developer/CoreSimulator/Devices/62B6742D-0FA4-4B92-B138
0D9E717DB91B/data/Containers/Data/Application/8587EB31-CF5D-4045-950B
6C011AE3EA96/Library/Caches/voice-message.m4a' (OS Error: No such file or directory, errno = 2)
Run Code Online (Sandbox Code Playgroud)
所以使用File.fromUri(Uri.parse(fullPath))对你有用。您提供给 File 类的实际上不是路径,而是 URI 字符串(它在开头具有指定的协议 file://)。您所要做的就是解析 URI 并从中创建一个文件。