您的位置:首页 > 文旅 > 美景 > flutter开发实战-flutter build web微信无法识别二维码及小程序码问题

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题

2025/7/17 4:13:06 来源:https://blog.csdn.net/gloryFlow/article/details/141201009  浏览:    关键词:flutter开发实战-flutter build web微信无法识别二维码及小程序码问题

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题

GitHub Pages是一个直接从GitHub存储库托管的静态站点服务,‌它允许用户通过简单的配置,‌将个人的代码项目转化为一个可以在线访问的网站。‌这里使用flutter build web来构建web发布到GitHub Pages。

最近通过flutter build web,通过发布到GitHub Pages后,微信打开项目地址,微信无法识别二维码及小程序码

项目地址:

https://goodbruce.github.io/

一、问题原因及解决方案

微信识别二维码采用的逻辑是截屏识别,当客户端发现用户在网页的img标签内进行长按操作时,会立刻截屏并且启动二维码识别算法。所以这里用于二维码识别的图片是截屏,而不是之前有人提到的img标签中的图片。

通过了解微信识别二维码的关键在img标签,我们看下flutter web 页面运行起来后是不包含img标签

我们使用Chrome 打开web页面,打开页面检测,使用控件选取工具,点击页面中的二维码图片,查看标签信息.

我们需要更改代码


class DisplayImageWidget extends StatefulWidget {const DisplayImageWidget({super.key,required this.imagePath,this.imageWidth,this.imageHeight,});final String imagePath;final double? imageWidth;final double? imageHeight;@overrideState<DisplayImageWidget> createState() => _DisplayImageWidgetState();
}class _DisplayImageWidgetState extends State<DisplayImageWidget> {@overridevoid initState() {// TODO: implement initStatesuper.initState();createImageElement(imagePath: widget.imagePath,imageWidth: widget.imageWidth ?? 0,imageHeight: widget.imageHeight ?? 0,);}@overrideWidget build(BuildContext context) {return Container(width: widget.imageWidth,height: widget.imageHeight,child: HtmlElementView(viewType: widget.imagePath,),);}Widget buildImageView(BuildContext context) {if (kIsWeb) {return HtmlElementView(viewType: widget.imagePath,);}return Image(image: AssetImage(widget.imagePath),fit: BoxFit.cover,width: widget.imageWidth,height: widget.imageHeight,);}void createImageElement({required String imagePath,required double imageWidth,required double imageHeight}) {if (kIsWeb) {ui.platformViewRegistry.registerViewFactory(imagePath,(int viewId) => ImageElement()..src = imagePath..height = imageHeight.toInt()..width = imageWidth.toInt());}}
}

二、flutter build web

完成代码后,可以通过以下命令进行build web

 flutter build web--web-renderer html

命令执行后,将在build文件夹中有一个web文件夹。

build后需要在index.html中添加

  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,user-scalable=no"/>

该web文件夹内即为build后的web项目。通过git将该web文件夹内上传到github pages。

三、上传github pages后,

可以看到通过DisplayImageWidget展示图片后,页面运行起来后是包含img标签了

如下图所示:

在这里插入图片描述

微信识别小程序码效果图如下:

在这里插入图片描述
在这里插入图片描述

github pages项目地址:https://goodbruce.github.io/

四、小结

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题

学习记录,每天不停进步。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com