开发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() {