Flutter扫描二维码和条形码

2025年08月03日 Flutter

barcode_scan2 可以实现扫描条形码、二维码

barcode_scan2

安装

dependencies:
  barcode_scan2: ^4.5.1

Android 权限配置

  • 将相机权限添加到您的 android\app\src\main\AndroidManifest.xml
  • 该插件是用 Kotlin 编写的。因此,您需要向您的项目添加 Kotlin 支持
<uses-permission android:name="android.permission.CAMERA" />

注意:minSdkVersion 18 以上

defaultConfig {
    applicationId = "com.example.bottom"
    minSdk = flutter.minSdkVersion //minSdk至少18
    targetSdk = flutter.targetSdkVersion
    versionCode = flutter.versionCode
    versionName = flutter.versionName
}

提示:如果您使用的是最新版本的 flutter sdk,在 Android 里面只需要配置 minSdkVersion 18 和 CAMERA 的权限,说明文档中的其它配置不需要

IOS 权限配置

<dict>
    <!-- ... -->
    <key>NSCameraUsageDescription</key>
    <string>Camera permission is required for barcode scanning.</string>
    <!-- ... -->
</dict>

使用

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

void main() => runApp(const MaterialApp(home: BarcodeScan2Page()));

class BarcodeScan2Page extends StatefulWidget {
  const BarcodeScan2Page({super.key});

  @override
  State<BarcodeScan2Page> createState() => _BarcodeScan2PageState();
}

class _BarcodeScan2PageState extends State<BarcodeScan2Page> {
  //设置扫描参数
  var options = ScanOptions(
    autoEnableFlash: true, //android自动开启闪光灯,ios会自动关了
    strings: {
      'cancel': '取消',
      'flash_on': '开启闪光灯',
      'flash_off': '关闭闪光灯',
      'close': '关闭',
    },
  );
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('barcode_scan2')),
      body: Center(
        child: ElevatedButton(
          child: const Text('扫描二维码'),
          onPressed: () async {
            final result = await BarcodeScanner.scan(options: options);
            print(result.type);
            print(result.rawContent);
            print(result.format);
            print(result.formatNote);
          },
        ),
      ),
    );
  }
}
0%