实现扫描二维码功能,利用了方便开发者自定义布局的native-view,可以自定义嵌入widget树。
扫一扫scan
如果需要生成二维码图片qr_flutter
功能支持
- 使用
ScanView
插入widget树展示扫一扫界面 - 可按比例定义可识别二维码区域大小
- 通过
Scan.parse(path)
解析出图片中的二维码
引入插件和客户端权限配置
- 将插件引入
pubspec.yaml
dependencies:
scan: ^0.0.3
- android配置
AndroidManifest.xml
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE"/>
- ios配置
info.list
<key>NSCameraUsageDescription</key>
<string>获取相机权限使用扫一扫功能</string>
<key>io.flutter.embedded_views_preview</key>
<string>YES</string>
使用方法
- 在页面中import
import "package:scan/scan.dart"
- 调用api
- 在widget树中使用
ScanView
ScanController controller = ScanController();
String qrcode = 'Unknown';
Container(
width: 250, // custom wrap size
height: 250,
child: ScanView(
controller: controller,
// custom scan area, if set to 1.0, will scan full area
scanAreaScale: .7,
scanLineColor: Colors.green.shade400,
onCapture: (data) {
// use data do something
},
),
),
- 暂停或恢复扫一扫
ScanController controller = ScanController();
// ...
controller.resume();
controller.pause();
- 从图片中解析二维码
String result = await Scan.parse(imagePath);
选择相册图片images_picker
- 打开/关闭闪光灯
controller.toggleTorchMode();