QR/条形码扫描器对话框
一个简单的扫描对话框插件,可以轻松捕获条形码/QR码。适用于Android、iOS和Web。它使用html5-qrcode js库用于Web,使用qr_code_scanner用于Android和iOS
笔记
目前,这是唯一支持**条形码**扫描的**Flutter Web**插件
获取扫描到的QR/条形码
当识别到QR码时,识别到的文本将传递给回调函数onCode。
class _MyAppState extends State<MyApp> {
final _qrBarCodeScannerDialogPlugin = QrBarCodeScannerDialog();
String? code;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Builder(builder: (context) {
return Material(
child: Center(
child: ElevatedButton(
onPressed: () {
_qrBarCodeScannerDialogPlugin.getScannedQrBarCode(
context: context,
onCode: (code) {
setState(() {
this.code = code;
});
});
},
child: Text(code ?? "Click me")),
),
);
}),
),
);
}
}
Android 集成
为了使用此插件,请更新Gradle、Kotlin和Kotlin Gradle插件
在android/build.gradle中将ext.kotlin_version = '1.3.50'更改为ext.kotlin_version = '1.5.10'
在android/build.gradle中将classpath 'com.android.tools.build:gradle:3.5.0'更改为classpath 'com.android.tools.build:gradle:4.2.0'
在android/gradle/wrapper/gradle-wrapper.properties中将distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip更改为distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip
在android/app/build.gradle中将defaultConfig{ ... minSdkVersion 16 }更改为defaultConfig{ ... minSdkVersion 20 }
警告
如果您使用的是Flutter Beta或Dev分支(1.25或1.26),可能会遇到以下错误
java.lang.AbstractMethodError: abstract method "void io.flutter.plugin.platform.PlatformView.onFlutterViewAttached(android.view.View)"
这是Flutter的一个bug,正在跟踪:flutter/flutter#72185
通过将android.enableDexingArtifactTransform=false添加到gradle.properties文件可以解决此问题。
iOS 集成
为了使用此插件,请将以下内容添加到您的Info.plist文件中
<key>io.flutter.embedded_views_preview</key>
<true/>
<key>NSCameraUsageDescription</key>
<string>This app needs camera access to scan QR codes</string>
Web集成
无需更新任何内容,该插件会将HTML内容附加到DOM。