Flutter学习笔记 二维码

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42215775/article/details/101061254

生成二维码:

首先安装生成二维码插件:

dependencies:
  qr_flutter: ^3.0.1

在使用的地方导入:

import 'package:qr_flutter/qr_flutter.dart';

使用:

 QrImage(
   data: '二维码要显示的数据',
   size: 100.0,
   embeddedImage: AssetImage('images/pic.png'),
   embeddedImageStyle: QrEmbeddedImageStyle(size: Size(40, 40)),
 ),

在这里插入图片描述

扫码:

可以安装插件barcode_scan

dependencies:
  barcode_scan: ^1.0.0

在需要使用的地方导入:

import 'package:barcode_scan/barcode_scan.dart';

使用该插件时会遇到AndroidX之间版本冲突问题
可以通过将android.support改为androidx迁移项目至AndroidX
可以参考解决方式:

https://blog.csdn.net/ocean20/article/details/89215290

使用时添加权限:
安卓:

<uses-permission android:name="android.permission.CAMERA" />

<activity android:name="com.apptreesoftware.barcodescan.BarcodeScannerActivity"/>

iOS:

<key>NSCameraUsageDescription</key>
<string>Camera permission is required for barcode scanning.</string>

扫码案例:

扫描二维码关注公众号,回复: 7622704 查看本文章
class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Column(
        children: <Widget>[
          QrImage(data: '二维码数据',
          size: 100,),
          RaisedButton(
            onPressed: () {
              scan();
            },
            child: Text('Button'),
          )
        ],
      ),
    );
  }

  Future scan() async {
    try {
      String barcode = await BarcodeScanner.scan();
      print('扫码结果:' + barcode);
    } on PlatformException catch (e) {
      if (e.code == BarcodeScanner.CameraAccessDenied) {
        print('未授予APP相机权限');
      } else {
        print('扫码错误:$e');
      }
    } on FormatException {
      print('进入扫码页面后未扫码就返回');
    } catch (e) {
      print('扫码错误:$e');
    }
  }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42215775/article/details/101061254