因项目需要,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库链接: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嵌入二维码的生成和扫描识别就全部实现。