Flutter二维码扫描插件qr_scanner_plus的使用

发布于 1周前 作者 ionicwang 来自 Flutter

Flutter二维码扫描插件qr_scanner_plus的使用

qr_scanner_plus 是一个功能强大的二维码和条形码扫描插件,支持离线扫描(基于 Google MLKit)。它提供了许多实用的功能,例如自动识别潜在的二维码、自动对焦和缩放等。

特性:

  • ✅ 离线使用(使用 Google MLKit)
  • ✅ 支持点击相机视图设置焦点
  • ✅ 支持手势缩放相机视图
  • ✅ 支持多二维码/条形码扫描
  • ✅ 使用简单
  • ✅ 自动查找潜在的二维码并自动对焦和缩放

开始使用

iOS
  1. Info.plist 中添加以下配置
    这些配置是为了请求相机、麦克风和相册的权限。

    <key>NSCameraUsageDescription</key>
    <string>为了使用您的相机拍摄照片和视频。</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>为了使用您的相机录制视频。</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>为了访问您的相册。</string>
  2. Podfile 中添加以下配置
    配置支持的最低 iOS 版本,并启用必要的权限。

    $iOSVersion = "10.0"
    
    post_install do |installer|
      installer.pods_project.build_configurations.each do |config|
        config.build_settings["EXCLUDED_ARCHS[sdk=*]"] = "armv7"
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = $iOSVersion
      end
    
      installer.pods_project.targets.each do |target|
        flutter_additional_ios_build_settings(target)
    
        target.build_configurations.each do |config|
          config.build_settings['ENABLE_BITCODE'] = 'NO'
    
          # 权限设置(参考 permission_handler 官网)
          config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
            '$(inherited)',
            'MLKIT_FIREBASE_MODELS=0',
            'PERMISSION_CAMERA=1',
            'PERMISSION_MICROPHONE=1',
            'PERMISSION_PHOTOS=1',
            'PERMISSION_LOCATION=1',
          ]
        end
      end
    end

Android
  1. AndroidManifest.xml 中添加以下权限

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  2. 确保 minSdkVersiontargetSdkVersion 设置正确

    • minSdkVersion: 21
    • targetSdkVersion: 29

示例代码

以下是一个完整的示例代码,展示如何使用 qr_scanner_plus 插件进行二维码扫描。

import 'package:flutter/material.dart';
import 'package:qr_scanner_plus/qr_scanner_plus.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('二维码扫描示例'),
        ),
        body: Center(
          child: QrScannerPlusView(
            _onResult, // 回调函数,用于处理扫描结果
            debug: true, // 是否开启调试模式
          ),
        ),
      ),
    );
  }

  // 处理扫描结果的回调函数
  _onResult(List<Barcode> barcodes) {
    for (final barcode in barcodes) {
      print("类型: ${barcode.type}"); // 打印二维码类型
      print("内容: ${barcode.rawValue}"); // 打印二维码内容
    }
  }
}

更多关于Flutter二维码扫描插件qr_scanner_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter二维码扫描插件qr_scanner_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


qr_scanner_plus 是一个 Flutter 插件,用于在 Flutter 应用中实现二维码扫描功能。它提供了一个简单易用的 API,可以快速集成二维码扫描功能到你的应用中。以下是 qr_scanner_plus 插件的使用步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 qr_scanner_plus 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  qr_scanner_plus: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 配置权限

在 Android 和 iOS 上,你需要配置相应的权限来使用摄像头。

Android

android/app/src/main/AndroidManifest.xml 文件中添加以下权限:

<uses-permission android:name="android.permission.CAMERA" />

iOS

ios/Runner/Info.plist 文件中添加以下权限:

<key>NSCameraUsageDescription</key>
<string>We need access to your camera to scan QR codes.</string>

3. 使用 qr_scanner_plus 插件

在你的 Flutter 应用中,你可以使用 QrScannerPlus 组件来实现二维码扫描功能。

import 'package:flutter/material.dart';
import 'package:qr_scanner_plus/qr_scanner_plus.dart';

class QRScannerPage extends StatefulWidget {
  @override
  _QRScannerPageState createState() => _QRScannerPageState();
}

class _QRScannerPageState extends State<QRScannerPage> {
  final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
  QRViewController? controller;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('QR Code Scanner'),
      ),
      body: Column(
        children: <Widget>[
          Expanded(
            flex: 5,
            child: QrScannerPlus(
              key: qrKey,
              onQRViewCreated: _onQRViewCreated,
            ),
          ),
          Expanded(
            flex: 1,
            child: Center(
              child: Text('Scan a QR code'),
            ),
          ),
        ],
      ),
    );
  }

  void _onQRViewCreated(QRViewController controller) {
    this.controller = controller;
    controller.scannedDataStream.listen((scanData) {
      setState(() {
        // 处理扫描到的数据
        print('Scanned data: ${scanData.code}');
      });
    });
  }

  @override
  void dispose() {
    controller?.dispose();
    super.dispose();
  }
}

4. 运行应用

现在你可以运行你的 Flutter 应用,并测试二维码扫描功能。当你扫描一个二维码时,扫描到的数据将会打印在控制台中。

5. 处理扫描结果

_onQRViewCreated 方法中,你可以通过 scanData.code 获取扫描到的二维码数据,并根据需要进行处理。例如,你可以将扫描到的数据展示在 UI 上,或者根据扫描到的数据进行导航等操作。

6. 其他功能

qr_scanner_plus 还提供了其他一些功能,例如控制摄像头的闪光灯、切换前后摄像头等。你可以通过 QRViewController 来调用这些功能。

controller?.toggleFlash();  // 切换闪光灯
controller?.flipCamera();   // 切换前后摄像头
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!