flutter:二维码生成与读取

前言

这csdn真的是服了,图片里有个二维码就直接变成违规图片了。至于效果的话,自己运行一下看看吧。

生成

flutter中生成二维码可以使用 qr_flutter

官方文档
https://pub-web.flutter-io.cn/packages/qr_flutter

安装

flutter pub add qr_flutter

示例

示例1

QrImageView(data: 'https://pub-web.flutter-io.cn/packages/qr_flutter', // 数据version: QrVersions.auto, // 版本选择自适应size: 200.0, // 大小),

在这里插入图片描述

示例2

QrImageView(data: 'https://pub-web.flutter-io.cn/packages/qr_flutter', // 数据version: QrVersions.auto, // 版本选择自适应size: 200.0, // 大小embeddedImage: const AssetImage('lib/assets/image/flutter.png'), // 图片embeddedImageStyle: const QrEmbeddedImageStyle(  // 设置图像样式size: Size(40, 40),),),

在这里插入图片描述
官方提供的方式,无法在图片周围生成间隙。但其实我们可以使用堆叠组件来实现。

Stack(children: [QrImageView(data: qrData, // 数据version: QrVersions.auto, // 版本选择自适应size: 200.0, // 大小),Positioned(top: 0,left: 0,right: 0,bottom: 0,child: Center(child: Container(width: 30,height: 30,margin: const EdgeInsets.all(5),padding: const EdgeInsets.all(5),decoration: BoxDecoration(borderRadius: BorderRadius.circular(5),color: Colors.white,),child: Image.asset('lib/assets/abc.png'),),))],
)

在这里插入图片描述
注意: 要保证二维码的信息量足够多,也就是二维码本身的内容多(也不要太多),图片也不要太大。如果二维码的信息丢失过多会导致无法识别二维码。

读取

flutter中读取二维码可以使用qr_code_scanner

官方网站
添加链接描述

安装

flutter pub add qr_code_scanner

问题
在进行真机运行时,报错了

uses-sdk:minSdkVersion 16 cannot be smaller than version 20 declared in library [:qr_code_scanner]

原因是:qr_code_scanner库要求的最低Android SDK版本为20。可以打开项目的android/app/build.gradle文件,找到minSdkVersion并将其修改为20或更高的值

补充
这里再使用vibration库,该库可以处理振动。当扫描成功后,再振动一下,更加的友好。

官方文档:https://pub-web.flutter-io.cn/packages/vibration

class MyHomePage extends StatefulWidget {const MyHomePage({super.key, required this.title});final String title;State<MyHomePage> createState() => _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> {// 创建一个全局的keyfinal GlobalKey qrKey = GlobalKey(debugLabel: 'QR');// 结果、控制器Barcode? result;QRViewController? controller;void reassemble() {super.reassemble();if (controller?.pauseCamera != null) {controller!.pauseCamera();} else {controller!.resumeCamera();}}void dispose() {super.dispose();controller?.dispose();}Widget build(BuildContext context) {return Scaffold(appBar: AppBar(backgroundColor: Theme.of(context).colorScheme.inversePrimary,title: Text(widget.title),),body: Column(children: <Widget>[Expanded(flex: 5,child: QRView(key: qrKey,onQRViewCreated: _onQRViewCreated,// 中间的扫描区域,也可以不要,加上看着更舒服overlay: QrScannerOverlayShape(borderColor: Colors.red,borderRadius: 10,borderLength: 30,borderWidth: 10,cutOutSize: 300)),),Expanded(flex: 1,child: Center(child: (result != null)? Text('Barcode Type: ${describeEnum(result!.format)}   Data: ${result!.code}'): const Text('Scan a code'),),)],),);}void _onQRViewCreated(QRViewController controller) {this.controller = controller;controller.scannedDataStream.listen((scanData) {// 默认振动500msVibration.vibrate();setState(() {result = scanData;});});}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/58318.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

源码分析——ConcurrentHashMap源码+底层数据结构分析

文章目录 1. ConcurrentHashMap 1.71. 存储结构2. 初始化3. put4. 扩容 rehash5. get 2. ConcurrentHashMap 1.81. 存储结构2. 初始化 initTable3. put4. get 3. 总结 1. ConcurrentHashMap 1.7 1. 存储结构 Java 7 中 ConcurrentHashMap 的存储结构如上图&#xff0c;Concurr…

git的日常使用

加入忽略列表&#xff1a;在.gitignore中加入忽略的文件&#xff0c;build/ 表示build文件夹下&#xff0c;*.jar 表示以jar结尾的&#xff0c;用换行符隔开将另一个分支合并到当前分支&#xff1a;git merge xxx冲突出现&#xff0c;可以看看这里&#xff1a;详解Git合并冲突—…

台式机显卡电源线怎么拔?

搞AI的设计到很多图形计算&#xff0c;那必不可少的就要和硬件打交道了。 显卡有2端&#xff0c;一端是插到主板上&#xff0c;另一端是接通在电源上&#xff0c;接通电源的有2端&#xff0c;一端是电源&#xff0c;另一端是显卡。其中显卡这端很难拔。 根据我百度后&#xff0…

git clean 命令

git clean -n //显示要删除的文件&#xff0c;clean的演习&#xff0c;告诉哪些文件删除&#xff0c;只是一个提醒。 git clean -dn //显示要删除的文件和目录 git clean -f //删除未追踪的文件 git clean -dff //删除未追踪的目录 git clean -df //清除所有未跟踪文件&#xf…

Fabric

Fabric Fabric.js是一个非常好用的Javascript HTML5 canvas库&#xff0c;封装了canvas原生较为复杂的api&#xff0c;在canvas元素的顶部提供交互式对象模型&#xff0c;用于实现图片的变形旋转拖拉拽等功能。 在线demo: 官网链接 下载 npm install fabric --save或 yarn …

模块化原理:source-map

1. webpack打包基本配置 1.安装webpack与webpack-cli npm i webpack webpack-cli 2.配置 "build":"webpack" 3. 新建webpack.config.js const path require(path); module.exports {// mode: "development",// 默认production&#xff08;什么…

微信小程序的项目解构

视频链接 黑马程序员前端微信小程序开发教程&#xff0c;微信小程序从基础到发布全流程_企业级商城实战(含uni-app项目多端部署)_哔哩哔哩_bilibili 接口文档 https://www.escook.cn/docs-uni-shop/mds/1.start.html 1&#xff1a;微信小程序宿主环境 1&#xff1a;常见的宿…

鉴源实验室丨汽车网络安全攻击实例解析(二)

作者 | 田铮 上海控安可信软件创新研究院项目经理 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 引言&#xff1a;汽车信息安全事件频发使得汽车行业安全态势愈发紧张。这些汽车网络安全攻击事件&#xff0c;轻则给企业产品发布及产品…

docker菜谱

DockerHub&#xff1a;https://hub.docker.com/ 记录docker常用软件安装&#xff0c;欢迎大家来投稿。&#x1f60e;&#x1f60e;&#x1f60e; 文章目录 1. Redis2. MariaDB 1. Redis dockerhub:https://hub.docker.com/_/redis 1、下载redis镜像&#xff1a; docker pull r…

阿里云二级域名配置

阿里云二级域名配置 首先需要进入阿里云控制台的域名管理 1.选择域名点击解析 2.添加记录 3.选择A类型 4.主机记录设置【可以aa.bb或者aa.bb.cc】 到时候会变成&#xff1a;aa.bb.***.com 5.解析请求来源设置为默认 6.记录值 设置为要解析的服务器的ip地址 7.TTL 默认即…

kube-prometheus 使用blackbox进行icmp 监控

安装kube-prometheus 后默认在monitoring namespace中有创建 blackbox-exporter deployment。但默认没有icmp的module配置&#xff0c;无法执行ping探测。因为即使有icmp module&#xff0c;默认配置也是无法执行ping探测的&#xff08;这篇文章要解决的就是这个问题&#xff0…

Linux ARM64架构 动态替换 altinstructions

文章目录 简介一、altinstructions节1.1 .altinstructions1.2 .rela.altinstructions 二、内核模块重定位源码分析参考资料 简介 在内核开发中&#xff0c;有时需要对内核代码进行修补&#xff0c;以解决bug、优化性能或引入新功能。替代指令&#xff08;altinstructions&…