Flutter - 生成二维码与识别二维码

#生成二维码

##首先需要在pubspec.yaml:中添加

qr_flutter: ^1.1.3

其次,引入代码:

import 'package:qr_flutter/qr_flutter.dart';

核心代码如下:

        child: QrImage(data: "这里是需要生成二维码的数据",size: 100.0,onError: (ex) {print("[QR] ERROR - $ex");},
复制代码

整体代码与效果如下:

#识别二维码

这里也用第三方的包在pubspec.yaml中添加库链接;

barcode_scan: ^0.0.4

识别的主要代码如下:

  Future scan() async {try {String barcode = await BarcodeScanner.scan();setState(() {return this.barcode = barcode;});} on PlatformException catch (e) {if (e.code == BarcodeScanner.CameraAccessDenied) {setState(() {return this.barcode = 'The user did not grant the camera permission!';});} else {setState(() {return this.barcode = 'Unknown error: $e';});}} on FormatException{setState(() => this.barcode = 'null (User returned using the "back"-button before scanning anything. Result)');} catch (e) {setState(() => this.barcode = 'Unknown error: $e');}}
复制代码

整体代码如下:

import 'package:flutter/material.dart';
import 'package:barcode_scan/barcode_scan.dart';
import 'dart:async';
import 'package:flutter/services.dart';class scanqr extends StatelessWidget {@overrideWidget build(BuildContext context) {// TODO: implement buildreturn MaterialApp(home: sacnBody(),);}
}class sacnBody extends StatefulWidget {
@overrideState<StatefulWidget> createState() {// TODO: implement createStatereturn _MyScanState();}
}class _MyScanState extends State<sacnBody> {String barcode = "";@overridevoid initState() {// TODO: implement initStatesuper.initState();}@overrideWidget build(BuildContext context) {// TODO: implement buildreturn Scaffold(appBar: new AppBar(title: new Text('QR Code'),),body: new Center(child: new Column(mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.stretch,children: <Widget>[Padding(padding: EdgeInsets.symmetric(horizontal: 15.0,vertical: 8.0),child: RaisedButton(color: Colors.orange,textColor: Colors.white,splashColor: Colors.blueGrey,onPressed: scan,child: const Text('START CAMERA SCAN')),),Padding (padding: EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0),child: Text(barcode, textAlign: TextAlign.center,),)],),),);}Future scan() async {try {String barcode = await BarcodeScanner.scan();setState(() {return this.barcode = barcode;});} on PlatformException catch (e) {if (e.code == BarcodeScanner.CameraAccessDenied) {setState(() {return this.barcode = 'The user did not grant the camera permission!';});} else {setState(() {return this.barcode = 'Unknown error: $e';});}} on FormatException{setState(() => this.barcode = 'null (User returned using the "back"-button before scanning anything. Result)');} catch (e) {setState(() => this.barcode = 'Unknown error: $e');}}}
复制代码

安卓和iOS工程设置如下:

Android For Android, you must do the following before you can use the plugin:

Add the camera permission to your AndroidManifest.xml<uses-permission android:name="android.permission.CAMERA" />Add the Barcode activity to your AndroidManifest.xml<activity android:name="com.apptreesoftware.barcodescan.BarcodeScannerActivity"/>
复制代码

iOS To use on iOS, you must add the the camera usage description to your Info.plist

<key>NSCameraUsageDescription</key>
<string>Camera permission is required for barcode scanning.</string>
复制代码

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

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

相关文章

任意小数分频设计

对于任意小数分频&#xff0c;如果有PLL的话&#xff0c;直接倍频再分频即可&#xff1b;或常用的方法有双模前置小数分频和脉冲删除小数分频。前一种方法设计较为复杂&#xff0c;因此主要以第二种方式为主设计了一下。 任意小数均可以化为分数&#xff0c;例如要进行5.3分频即…

Bootstrap--圆角图片`圆形图

转载于:https://www.cnblogs.com/qiyiyifan/p/6159823.html

逻辑综合——概述与基本概念

逻辑综合系列主要说明以下问题&#xff1a; 为什么要逻辑综合逻辑综合的基本原理逻辑综合需要提供哪些文件逻辑综合过程中施加约束逻辑综合能产生那些结果 综合是前端设计的重要步骤之一&#xff0c;其过程是将行为描述的电路、RTL级的电路转换到门级&#xff0c;其目的在于&a…

Swoole 源码分析——Server模块之初始化

前言 本节主要介绍 server 模块进行初始化的代码&#xff0c;关于初始化过程中&#xff0c;各个属性的意义&#xff0c;可以参考官方文档&#xff1a; SERVER 配置选项 关于初始化过程中&#xff0c;用于监听的 socket 绑定问题&#xff0c;可以参考&#xff1a; UNP 学习笔记—…

linux下搭建git服务器

安装 Git Linux 做为服务器端系统&#xff0c;Windows 作为客户端系统&#xff0c;分别安装 Git 服务器端&#xff1a; #yum install -y git 安装完后&#xff0c;查看 Git 版本 [rootlocalhost ~]# git --version git version 1.7.1 客户端&#xff1a; 下载 Git for Windows&…

mkcramfs 命令学习

mkcramfs :创建只读文件系统 语 法 mkcramfs[必要参数][选择参数][源目录][目标文件]功 能mkcramfs 命令&#xff1a;用来创建CRAMFS只读文件系统 类似命令: fdisk cramfsck mount 执行权限: 超级用户 普通用户 命令属性: 磁盘维护 参数必要参数 -e 设置文件系…

对于Eclipse的正确用法

有时候我们刚刚修改了工程里的文件 但是启动的时候它硬是说你有东西没有声明 而那个东西又明明在那里。。 这时候我们可以认为实际与它调用的工程关系文件&#xff08;我假想的&#xff09; 不同步。。 我们可以通过clean功能来同步实际情况和工程关系文件 所以说我们每次改了之…

逻辑综合——工艺库

一、库文件的设置 运行DC时需要用到的库文件有&#xff1a;目标库&#xff08;target library&#xff09;、链接库&#xff08;link library&#xff09;、符号库&#xff08;symbol library&#xff09;、算术运算库&#xff08;synthetic library&#xff09;。 1、目标库…

weka 初练之 文本分类

0.注意weka的中文编码RunWeka.ini-----》fileEncodingutf-81.首先对分词后的 无新词发现的分词文件&#xff0c;转换成arff文件 命令java weka.core.converters.TextDirectoryLoader -dir D:\weibo\catagory\data10W\nlpirSegment\noNI > D:\weibo\catagory\data10W\nlpirSe…

[COGS 0065][NOIP 2002] 字串变换

65. [NOIP2002] 字串变换 ★★ 输入文件&#xff1a;string.in 输出文件&#xff1a;string.out 简单对比时间限制&#xff1a;1 s 内存限制&#xff1a;128 MB [问题描述] 已知有两个字串A\$, B\$及一组字串变换的规则&#xff08;至多6个规则&#xff09;: A1\$ ->…

基与datatable的分页

在进行分页操作前&#xff0c;必须知道开启服务器模式后会向服务器发送的参数的含义&#xff1a; length:告诉服务器每页显示的数据条数 start&#xff1a;第一条数据的起始位置 draw:绘制计数器&#xff0c;&#xff08;特殊&#xff1a;服务器接收到参数后&#xff0c;需要返…

linux sock_raw原始套接字编程

sock_raw原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICMP)发送接收ip数据包2.socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP|E…

逻辑综合——施加约束

Design Compiler时一个约束驱动&#xff08;constraint-driven&#xff09;的综合工具&#xff0c;它的结果与设计者施加的约束条件密切相关。 一、面积约束 进行面积的约束&#xff0c;也就是告诉DC综合的电路面积要在多少以内。在介绍约束命令之前&#xff0c;先了解一下面积…

[Codevs] 1004 四子连棋

1004 四子连棋 时间限制: 1 s空间限制: 128000 KB题目等级 : 黄金 Gold题目描述 Description在一个4*4的棋盘上摆放了14颗棋子&#xff0c;其中有7颗白色棋子&#xff0c;7颗黑色棋子&#xff0c;有两个空白地带&#xff0c;任何一颗黑白棋子都可以向上下左右四个方向移动到相邻…

链接中获取文件名

算得上是-test.pdf 获取文件名 var str http://aaa.com/s/ddd/算得上是-test.pdf; console.log(str.match(/([^/*.])\.\w$/)) console.log(str.match(/([^/*.])\.\w$/)[0]) // 转载于:https://www.cnblogs.com/cssfirefly/p/6163370.html

逻辑综合——优化电路

对进行时序路径、工作环境、设计规则等进行约束完成之后&#xff0c;DC就可以进行综合、优化时序了&#xff0c;DC在优化过程中主要的策略将在下面进行说明。然而&#xff0c;当普通模式下不能进行优化的&#xff0c;就需要我们进行编写脚本来改进DC的优化来达到时序要求。 DC…

DOM包裹wrap()方法

DOM包裹wrap()方法 如果要将元素用其他元素包裹起来&#xff0c;也就是给它增加一个父元素&#xff0c;针对这样的处理&#xff0c;JQuery提供了一个wrap方法 .wrap( wrappingElement )&#xff1a;在集合中匹配的每个元素周围包裹一个HTML结构 简单的看一段代码&#xff1a; &…

usleep函数

usleep功能把进程挂起一段时间&#xff0c; 单位是微秒&#xff08;百万分之一秒&#xff09;&#xff1b; 头文件&#xff1a; unistd.h 语法: void usleep(int micro_seconds); 返回值: 无 内容说明&#xff1a;本函数可暂时使程序停止执行。参数 micro_seconds 为要暂停的微…

限制Xamarin获取图片的大小

限制Xamarin获取图片的大小在App开发中&#xff0c;经常会使用网络图片。因为这样不仅可以减少App的大小&#xff0c;还可以动态更新图片。但是手机使用网络环境千差万别。当网络环境不是理想的情况下&#xff0c;加载网络图片就是一个棘手的问题了。为了避免长时间加载图片影响…

Linux应用开发自学之路

前言 在 「关于我 」那篇博文里&#xff0c;朋友们应该知道了我不是科班出身&#xff0c;是由机械强行转行到Linux应用开发方向。下面我就详细向大家介绍自己这一路上的转行历程&#xff0c;希望对大家有所启发。 我是学机械专业的&#xff0c;对于机械专业我还是很感兴趣&…