快速二维码阅读器视图插件
一个适用于iOS和Android的Flutter插件,允许访问设备摄像头以扫描多种类型的代码(QR、PDF417、CODE39等)。很大程度上基于camera。


红色框是Flutter动画(可移除)。 由于GIF帧率较低
特点
- 在widget中显示实时摄像头预览。
- 在iOS上使用原生AVFoundation代码检测
- 在Android上使用ML Kit
安装
首先,将fast_qr_reader_view添加为pubspec.yaml文件中的依赖项。
iOS
在ios/Runner/Info.plist中添加一个键为Privacy - Camera Usage Description的行,并提供使用说明。
或者在文本格式中添加键
<key>NSCameraUsageDescription</key>
<string>Can I use the camera please?</string>
Android
按照此步骤将Firebase添加到您的项目中(仅此一步,而非整个指南)。
在您的 android/app/build.gradle 文件中将最低 Android sdk 版本更改为 21(或更高)。
minSdkVersion 21
示例
这是一个显示全屏摄像头预览的小型示例Flutter应用。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:fast_qr_reader_view/fast_qr_reader_view.dart';
List<CameraDescription> cameras;
Future<Null> main() async {
cameras = await availableCameras();
runApp(new CameraApp());
}
class CameraApp extends StatefulWidget {
@override
_CameraAppState createState() => new _CameraAppState();
}
class _CameraAppState extends State<CameraApp> {
QRReaderController controller;
@override
void initState() {
super.initState();
controller = new QRReaderController(cameras[0], ResolutionPreset.medium, [CodeFormat.qr], (dynamic value){
print(value); // the result!
// ... do something
// wait 3 seconds then start scanning again.
new Future.delayed(const Duration(seconds: 3), controller.startScanning);
});
controller.initialize().then((_) {
if (!mounted) {
return;
}
setState(() {});
controller.startScanning();
});
}
@override
void dispose() {
controller?.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
if (!controller.value.isInitialized) {
return new Container();
}
return new AspectRatio(
aspectRatio:
controller.value.aspectRatio,
child: new QRReaderPreview(controller));
}
}
有关更详细的用法示例,请参阅此处。