前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flutter中如何实现扫码

Flutter中如何实现扫码

作者头像
拉维
发布2019-09-16 16:23:08
5.2K0
发布2019-09-16 16:23:08
举报
文章被收录于专栏:iOS小生活iOS小生活

我们通过 barcode_scan 这个库来实现二维码、条形码的扫描。

使用代码如下:

代码语言:javascript
复制
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:barcode_scan/barcode_scan.dart';

class SaveLocalDataPage extends StatefulWidget {
  SaveLocalDataPage({Key key}) : super(key: key);

  _SaveLocalDataPageState createState() => _SaveLocalDataPageState();
}

class _SaveLocalDataPageState extends State<SaveLocalDataPage> {
  String _scanResultStr = "";

  //扫码
  Future _scan() async {
    //利用try-catch来进行异常处理
    try {
      //调起摄像头开始扫码
      String barcode = await BarcodeScanner.scan();
      setState(() {
        return this._scanResultStr = barcode;
      });
    } on PlatformException catch (e) {
      //如果没有调用摄像头的权限,则提醒
      if (e.code == BarcodeScanner.CameraAccessDenied) {
        setState(() {
          return this._scanResultStr =
              'The user did not grant the camera permission!';
        });
      } else {
        setState(() {
          return this._scanResultStr = 'Unknown error: $e';
        });
      }
    } on FormatException {
      setState(() => this._scanResultStr =
          'null (User returned using the "back"-button before scanning anything. Result)');
    } catch (e) {
      setState(() => this._scanResultStr = 'Unknown error: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("本地数据存储")),
      body: Column(
        children: <Widget>[
          RaisedButton(
            onPressed: () {
              _scan();
            },
            child: Text("扫码"),
          ),
          Text(_scanResultStr),
        ],
      ),
    );
  }
}

运行效果如下:

关于barcode_scan这个扫码组件,针对iOS和Android环境,都要进行对应的环境配置。iOS的配置相对简单,Android的配置就比较繁琐了。

后期我们在做项目的时候,自己根据文档进行对应配置,如果遇到了困难,可以参考大地老师flutter基础视频的第41讲。

以上。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iOS小生活 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档