Flutter中如何实现扫码

  • 2019 年 10 月 4 日
  • 筆記

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

使用代码如下:

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讲。

以上。