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.pswp.cn/news/253815.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253815.shtml
英文地址,請注明出處:http://en.pswp.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;對于機械專業我還是很感興趣&…