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

本文主要是介绍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微信无法识别二维码及小程序码问题

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

这篇关于flutter开发实战-flutter build web微信无法识别二维码及小程序码问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1146980

相关文章

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序