版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
生成二维码:
首先安装生成二维码插件:
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');
}
}
}