uni-app 使用uQRCode在模拟器和安卓中不显示二维码

本文介绍了在uni-app中使用uQRCode插件时遇到的二维码在安卓app中不显示的问题。问题原因在于canvas绘制速度过快导致draw回调未继续执行。解决方法是在draw回调中加入延迟,确保uni.canvasToTempFilePath在画布绘制完成后再执行,从而成功渲染二维码。经测试,此方法有效。
摘要由CSDN通过智能技术生成

开发app常见的功能-分享二维码,在uniapp中也有个很方便的插件uQRCode,在实际环境测试中h5端他的表现还是比较优秀的,速度很快也比较稳定。在app端(安卓ios没有试)出现二维码不出现的问题。周五打包的app,别的都没什么问题点到二维码竟然没有出来,很是尴尬!!!主要是马上下班了,加班着急在dcloud的社区找了下,查到了一些这种情况解决的方案在我的测试中并没好使!有那么难么,一定不是,静心思索加百度周末一会就解决了。我使用的是hbuildX3.4.15、插件市场导入的uQRCode应该是1.0.8,看插件的更新日志在2.0.2版本新增延迟绘制。可能新版插件已经解决这个问题,而且gitHub上已经3.2.2(2022-05-12)了,源代码和导入的版本相差很多应该是做了很多完善。

问题原因

调试查看源码执行到ctx.draw的函数后回调就不在继续执行了,有的说是canvas绘制由于绘制速度太快。当你让draw的回调执行了你会发现回调中的uni.canvasToTempFilePath的回调也执行并成功但没有渲染?!!

解决方法

draw的执行可以在他的回调上加一个立即执行(function() {})(),他的回调就可以执行了。但是uni.canvasToTempFilePath的执行的结果也返回了为什么没有渲染!!!安卓中返回的地址是 _doc/temp... 这个文件夹下的地址,可能是画布绘制图片没执行完就执行uni.canvasToTempFilePath了 给个延迟解决了。setTimeout放在外还是ctx.draw的回调内都可以。

setTimeout(()=>{
    ctx.draw(true, (function() {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值