Flutter二维码的生成与扫描识别

因项目需要,Flutter项目需要加入生成二维码和扫描二维码的功能,在网上一阵搜索,找到了一位大佬的教程,真心不错,借鉴一下,以备后用。

原文链接:

二维码扫描:https://blog.csdn.net/qq_35905501/article/details/89467886

 

说明:项目基于Android Studio  Flutter,环境自行搭建

 

一:生成二维码

flutter库链接:https://pub.dev/packages/qr_flutter

导入包:qr_flutter: ^3.2.0

导入引用 :import 'package:qr_flutter/qr_flutter.dart';

主要部分代码:

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text("二维码"),
    ),
    body: _createBody(),
  );
}

Widget _createBody(){
  return Column(
    mainAxisAlignment: MainAxisAlignment.center,
    children: [
      Center(
        child: QrImage(
          data: "Flutter生成二维码文字",                             //生成二维码的文字
          size: 200.0,                                              //生成二维码大小
          embeddedImage: AssetImage("images/image_logo_wechat.png"),//二维码中心图片
          embeddedImageStyle: QrEmbeddedImageStyle(
            size: Size(30, 30),                                     //二维码中心图片大小
          ),
        ),
      )
    ],
  );
}

图片:

Flutter二维码的生成与扫描识别_第1张图片


 

二,扫描识别二维码、条形码

flutter库链接:https://pub.dev/packages/qrscan#-readme-tab-

导入包:qrscan: ^0.2.17 #扫描二维码

引入文件:import 'package:qrscan/qrscan.dart' as scanner;

主要部分代码:

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text("二维码"),
    ),
    body: _createBody(),
  );
}

Widget _createBody(){
  return Column(
    mainAxisAlignment: MainAxisAlignment.center,
    children: [
      Center(
        child: BigButton(
          "开启扫描",
          onTap: scan,
          radius: 100,
        ),
      ),
      Padding (
        padding: EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0),
        child: Text(barcode, textAlign: TextAlign.center,),
      )
    ],
  );
}


Future scan() async {
  try {
    String barcode = await scanner.scan();
    setState(() => this.barcode = barcode);
  } on Exception catch (e) {
    if (e == scanner.CameraAccessDenied) {
      setState(() {
        this.barcode = '没有拍照权限!';
      });
    } else {
      setState(() => this.barcode = '未知错误: $e');
      print(e);
    }
  }
}

 

图片:

Flutter二维码的生成与扫描识别_第2张图片Flutter二维码的生成与扫描识别_第3张图片


 

扫描二维码需要请求拍照权限,这里先不描述,可在应用管理手动打开。

至此,flutter嵌入二维码的生成和扫描识别就全部实现。

你可能感兴趣的:(Flutter)