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。

GitHub

查看 Github