HarmonyOS鸿蒙Next中图片选择器单步调试直接跳过PhotoSelectResult
HarmonyOS鸿蒙Next中图片选择器单步调试直接跳过PhotoSelectResult
let PhotoSelectOptions = new picker.PhotoSelectOptions();
PhotoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
PhotoSelectOptions.maxSelectNumber = 5;
let photoPicker = new picker.PhotoViewPicker();
photoPicker.select((err, PhotoSelectResult) => {
if (err) {
console.error('PhotoViewPicker.select failed with err: ' + err);
return;
}
console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult));
});
对上述代码进行单步调试,在选择完图片后没有进入第二和第三个断点处,直接跳出了
更多关于HarmonyOS鸿蒙Next中图片选择器单步调试直接跳过PhotoSelectResult的实战教程也可以访问 https://www.itying.com/category-93-b0.html
拉起图库,选择图片后能正常接收到数据,但是图库没有自动关闭,它就在最近项目里存在着。
找半天也没找到关闭图库的方法,这很不友好啊。
各位也是这样的吗?
更多关于HarmonyOS鸿蒙Next中图片选择器单步调试直接跳过PhotoSelectResult的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我的代码
async saveAvatar() {
agconnect.instance().init(getContext(this))
const storageManagement = agconnect.cloudStorage(agconnect.instance())
const storageReference = await storageManagement.storageReference()
const reference = storageReference.child(`${this.avatarName}.jpg`)
const file = fs.openSync(this.localAvatar, fs.OpenMode.READ_ONLY)
const stat = fs.statSync(file.fd)
let buf = new ArrayBuffer(stat.size)
const ss = fs.fdopenStreamSync(file.fd, 'r')
ss.readSync(buf)
const uploadTask = reference.putData(buf)
uploadTask.on('progress', (uploadedSize: number, totalSize: number) => {
const percent = (uploadedSize / totalSize) * 100
promptAction.showToast({ message: percent.toString() })
})
uploadTask
.then(() => promptAction.showToast({ message: 'succ!' }))
.catch((err) => promptAction.showToast({ message: 'fail:' + JSON.stringify(err) }))
}
doPickPhoto() {
// 图片选择器
let PhotoSelectOptions = new picker.PhotoSelectOptions();
PhotoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
PhotoSelectOptions.maxSelectNumber = 5;
let photoPicker = new picker.PhotoViewPicker();
photoPicker.select(PhotoSelectOptions).then(PhotoSelectResult => {
this.localAvatar = PhotoSelectResult.photoUris[0]
})
}
editAvatar() {
this.doPickPhoto()
// 生成随机id
this.avatarName = util.generateRandomUUID(false)
// 上传云端
this.saveAvatar()
}
HarmonyOS的分布式文件系统让我在多设备间共享文件变得更加方便。
很奇怪,我最开始是因为无法上传图片到云存储debug看看是什么问题的,结果发现没拿到图片选择器的uri,提了工单然后写出一个text组件显示uri是拿到了的,但是debug跳不到哪里,而且无论debug还是直接运行都上传不到云存储,很奇怪,
上传云存储,按官方的文档会报错,之前有个帖子讨论的,可能在 next 版本会修复,现在有个临时方案:
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17
我把那段代码放在了函数里,直接运行没上传成功,单步调试发现那段代码没运行直接跳过了,
突然又可以调试出url了,好奇怪
在HarmonyOS鸿蒙Next中,图片选择器的单步调试直接跳过PhotoSelectResult,可能是由于调试过程中断点未正确设置或调试器未能捕获到相关事件。确保调试器配置正确,并且断点设置在PhotoSelectResult相关的代码行上。此外,检查是否有异步操作或回调未被正确处理,导致调试器跳过该步骤。调试时,可以使用调试器的步进功能逐步执行代码,观察变量和调用栈的状态,以定位问题。
在HarmonyOS鸿蒙Next中,如果图片选择器的单步调试直接跳过PhotoSelectResult
,可能是由于以下原因:
-
异步操作:图片选择器可能使用了异步操作,导致调试时直接跳过。确保在调试时正确处理异步回调。
-
断点位置:检查断点是否设置在正确的位置。如果断点设置在异步操作之后,可能会跳过
PhotoSelectResult
。 -
调试工具配置:检查调试工具的配置,确保没有设置跳过某些步骤。
-
代码逻辑:检查代码逻辑,确保在
PhotoSelectResult
之前没有提前返回或跳过的逻辑。
建议在异步回调中设置断点,并逐步调试以定位问题。