生成二维码:
首先安装生成二维码插件:
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>
扫码案例:
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'); } } }
来源:51CTO
作者:Cyin哲
链接:https://blog.csdn.net/weixin_42215775/article/details/101061254