Flutter之实现生成二维码,扫描二维码——Flutter基础系列

需求:

今天正好做生成二维码和扫描二维码的功能,整理一下方便以后学习,顺便分享给大家。

一、生成二维码

1、导入依赖

在 pubspec.yaml 中 dependencies 节点下添加:

  # 二维码生成 https://pub.dev/packages/qr_flutter
  qr_flutter: ^3.2.0

2、引入代码

import 'package:qr_flutter/qr_flutter.dart';

3、属性

属性类型描述
versionintQrVersions.auto或者介于1和40之间的值。有关限制和详细信息,请访问http://www.qrcode.com/en/about/version.html。
errorCorrectionLevelint定义的值QrErrorCorrectLevel。例如:QrErrorCorrectLevel.L。
sizedouble二维码的(方形)大小。如果没有给出,将使用最短大小约束自动调整大小。
paddingEdgeInsets二维码内边距
backgroundColorColor背景颜色(默认为无)
errorStateBuilderQrErrorBuilder允许您Widget在呈现QR码时出现错误时显示错误状态(例如:版本太低,输入太长等)
foregroundColorColor前景色(默认为黑色)
gaplessbool添加一个额外的像素以防止间隙(默认为true)
constrainErrorBoundsbool如果为true,则错误Widget将被限制为将要绘制QR码的平方。如果为false,则错误状态Widget将增大/缩小到所需的任何大小
embeddedImageImageProvider个ImageProvider限定的图像以在QR码的中心重叠
embeddedImageStyleQrEmbeddedImageStyle用于设置嵌入图像样式的属性
embeddedImageEmitsErrorbool如果为true,则任何加载嵌入图像的失败都将触发errorStateBuilder或呈现为空Container。如果为false,则将呈现QR码,并且将忽略嵌入的图像

4、代码以及结果

Column(
          crossAxisAlignment: CrossAxisAlignment.center,  //居中
          children: [
            Text("普通二维码"),
            SizedBox(height: 20,),
            QrImage(data: "这是普通二维码",size: 100,),
            Text("中间有图片的二维码"),
            SizedBox(height: 20,),
            QrImage(data: "这是中间有图的二维码",size: 100,embeddedImage: NetworkImage(""
                "https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2491682377,1019940373&fm=26&gp=0.jpg"),),
          ],
        ),

二、扫描二维码

1、导入依赖

在 pubspec.yaml 中 dependencies 节点下添加:

 # 二维码扫描 https://pub.dev/packages/barcode_scan
  barcode_scan: ^3.0.1

2、引入代码

import 'package:barcode_scan/barcode_scan.dart';

3、代码以及结果

class _QRCodeState extends State<QRCode> {

  var textStr = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("二维码"),
      ),
      body: Container(
        width: MediaQuery.of(context).size.width,  //充满屏幕宽度,
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,  //居中
          children: [
            SizedBox(height: 50,),
            RaisedButton(
              child: Text("二维码扫描"),
              onPressed: () {
                getQrcodeState().then((value) => setState(() {
                  this.textStr = value;
                }));
              },
            ),
            SizedBox(height: 20,),
            Text("扫描内容为${this.textStr}"),
          ],
        ),
      ),
    );
  }
  
  //扫描二维码
  static Future<String> getQrcodeState() async {
    try {
      const ScanOptions options = ScanOptions(
        strings: {
          'cancel': '取消',
          'flash_on': '开启闪光灯',
          'flash_off': '关闭闪光灯',
        },
      );
      final ScanResult result = await BarcodeScanner.scan(options: options);
      return result.rawContent;
    } catch (e) {

    }
    return null;
  }

}

扫描二维码以后的结果
在这里插入图片描述

基础篇


Flutter之自定义底部导航条以及页面切换实例——Flutter基础系列

Flutter之自定义顶部Tab——Flutter基础系列

Flutter之抽屉组件drawer,设置drawer宽度——Flutter基础系列

Flutter之自定义按钮RaisedButton、OutlineButton、IconButton等——Flutter基础系列

Flutter之实现生成二维码,扫描二维码——Flutter基础系列

Flutter之基本路由,命名路由跳转,返回上一页,替换路由和返回根路由——Flutter基础系列

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Flutter 应用程序中实现二维码扫描,可以使用 `qr_code_scanner` 或 `barcode_scan` 插件。 `qr_code_scanner` 插件提供了一个 `QRView` widget,可以轻松地将二维码扫描器集成到应用程序中。以下是一个简单的示例: 1. 添加 `qr_code_scanner` 插件到 `pubspec.yaml` 文件中: ``` dependencies: qr_code_scanner: ^0.4.3 ``` 2. 导入 `qr_code_scanner` 包: ``` import 'package:qr_code_scanner/qr_code_scanner.dart'; ``` 3. 创建一个 `QRViewController` 和一个 `QRView`: ``` QRViewController controller; final GlobalKey qrKey = GlobalKey(debugLabel: 'QR'); @override Widget build(BuildContext context) { return QRView( key: qrKey, onQRViewCreated: _onQRViewCreated, ); } void _onQRViewCreated(QRViewController controller) { this.controller = controller; controller.scannedDataStream.listen((scanData) { // 处理扫描到的二维码 }); } ``` 当用户扫描二维码时,`QRViewController` 会不断发送扫描数据到 `scannedDataStream`,可以在监听函数中处理这些数据。 如果想要更多的控制权,可以使用 `barcode_scan` 插件。这个插件提供了一个 `scan()` 方法,可以启动一个新的扫描器界面,并且可以自定义扫描器的外观和行为。以下是一个简单的示例: 1. 添加 `barcode_scan` 插件到 `pubspec.yaml` 文件中: ``` dependencies: barcode_scan: ^2.0.0 ``` 2. 导入 `barcode_scan` 包: ``` import 'package:barcode_scan/barcode_scan.dart'; ``` 3. 调用 `scan()` 方法并处理返回的数据: ``` Future<void> scan() async { String barcode = await BarcodeScanner.scan(); // 处理扫描到的二维码 } ``` 在调用 `scan()` 方法时,会启动一个新的扫描器界面,并等待用户扫描二维码。当用户扫描二维码后,会返回扫描到的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值