HarmonyOS 鸿蒙Next 使用@ohos.file.picker中的PhotoViewPicker拉起图片选择器后flutter端无法显示选中图片

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 使用@ohos.file.picker中的PhotoViewPicker拉起图片选择器后flutter端无法显示选中图片

需要使用图片选择器的功能,现在集成鸿蒙端的时候,查阅文档,使用@ohos.file.picker中的PhotoViewPicker,拉起图片选择器后,选择完图片,点击确定,返回到flutter端的时候,由于这里返回的图片路径是沙箱路径,不是真实的路径,导致flutter端无法显示图片,后面我尝试在鸿蒙端把选中的图片读取到内存中,然后返回,使用了如下代码片段:
for (let i = 0; i < PhotoSelectResult.photoUris.length; i++) {
let uri = PhotoSelectResult.photoUris[i]
let file = fs.openSync(uri, fs.OpenMode.READ_ONLY);
let path = new fileUri.FileUri(file.path).toString()
let buffer = new ArrayBuffer(4096);
let readLen = fs.readSync(file.fd, buffer);
imageArray.push(buffer)
let fileURI = new fileUri.FileUri(file.path) // imageArray.push(path)
console.info('file fd: ’ + file.fd + " file.path: " + file.path + "  file.name: " + file.name + " path: " + path);
console.info("fileUri info: " + fileURI.toString() + " " + fileURI.name + " " + fileURI.scheme + " " +
fileURI.userInfo + " " + fileURI.authority)
console.info("imageArray: " + JSON.stringify(imageArray) + " , readLen = " + readLen)
fs.closeSync(file);
}

这里let readLen = fs.readSync(file.fd, buffer);这里取buffer得到的是{},取readLen得到的是4096,也就是声明buffer时指定的长度,没找到其他有效的办法。

1.如何通过鸿蒙端返回真实路径,让flutter端能够正常显示图片;

如果1做不到,那么2.如何通过鸿蒙端读取图片的数据后返回到flutter端。


更多关于HarmonyOS 鸿蒙Next 使用@ohos.file.picker中的PhotoViewPicker拉起图片选择器后flutter端无法显示选中图片的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

2 回复

更多关于HarmonyOS 鸿蒙Next 使用@ohos.file.picker中的PhotoViewPicker拉起图片选择器后flutter端无法显示选中图片的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在HarmonyOS鸿蒙Next环境中,使用@ohos.file.picker中的PhotoViewPicker拉起图片选择器后,Flutter端无法显示选中图片的问题通常与数据传递或组件渲染相关。

首先,确保PhotoViewPicker的回调正确设置并返回了图片的路径或URI。在鸿蒙系统中,图片选择器返回的数据类型需要与Flutter端接收的类型匹配。如果返回的是文件路径,确保路径在Flutter端有权限访问。

其次,检查Flutter端的图片显示组件,如Image.networkImage.file,是否正确接收并处理了从鸿蒙原生代码传递过来的图片路径或URI。如果路径是正确的,但图片仍然无法显示,可能是因为路径格式不兼容或Flutter端没有正确解析路径。

此外,确保Flutter与鸿蒙系统的集成是完整的,所有必要的权限和插件都已正确配置。如果使用的是自定义通道或方法调用,检查通道是否已正确建立且数据能双向传递。

如果以上步骤均确认无误但问题依旧存在,可能是底层框架或SDK的兼容性问题。此时,建议查阅最新的HarmonyOS开发文档或更新Flutter和鸿蒙系统的SDK版本。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部