ByteNoteByteNote

字节笔记本

2026年2月19日

mobile_scanner:Flutter 通用条码二维码扫描插件

API中转
¥120

本文介绍 mobile_scanner,一个通用的 Flutter 条码和二维码扫描插件,支持 Android、iOS、macOS 和 Web 平台。

mobile_scanner 简介

mobile_scanner 是由 juliansteenbakker 开发的 Flutter 插件,提供通用的条码和二维码扫描功能。它使用 CameraX/ML Kit(Android)、AVFoundation/Apple Vision(iOS/macOS)和 ZXing(Web)实现,在 GitHub 上拥有 1.1k stars 和 668 forks。

核心定位:A universal Flutter barcode and QR code scanner using CameraX/ML Kit for Android, AVFoundation/Apple Vision for iOS & macOS, and ZXing for web

基本信息

平台支持

平台支持状态
Android
iOS
macOS
Web
Linux
Windows

技术栈

语言占比
Dart69.9%
Kotlin17.0%
Swift12.2%
其他0.9%

核心功能

  • 快速扫描:高速条码和二维码扫描
  • 多格式支持:支持多种条码格式
  • 实时检测:实时识别条码
  • 可定制:自定义相机和扫描器行为

平台特性差异

特性AndroidiOSmacOSWeb
analyzeImage✔️✔️✔️
returnImage✔️✔️✔️
scanWindow✔️✔️✔️
autoZoom✔️
lensType✔️✔️

安装方法

pubspec.yaml 中添加:

yaml
dependencies:
  mobile_scanner: ^7.2.0

然后执行:

bash
flutter pub get

使用示例

简单用法

dart
import 'package:mobile_scanner/mobile_scanner.dart';

MobileScanner(
  onDetect: (result) {
    print(result.barcodes.first.rawValue);
  },
)

高级用法(带控制器)

dart
final MobileScannerController controller = MobileScannerController(
  cameraResolution: Size(1920, 1080),
  detectionSpeed: DetectionSpeed.normal,
  torchEnabled: true,
  autoZoom: true,
);

MobileScanner(
  controller: controller,
  onDetect: (result) {
    final barcode = result.barcodes.first;
    print('Barcode: ${barcode.rawValue}');
    print('Format: ${barcode.format}');
  },
)

完整示例

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

class ScannerPage extends StatefulWidget {
  @override
  _ScannerPageState createState() => _ScannerPageState();
}

class _ScannerPageState extends State<ScannerPage> {
  MobileScannerController controller = MobileScannerController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('扫码'),
        actions: [
          IconButton(
            icon: ValueListenableBuilder(
              valueListenable: controller.torchState,
              builder: (context, state, child) {
                return Icon(
                  state == TorchState.off ? Icons.flash_off : Icons.flash_on,
                );
              },
            ),
            onPressed: () => controller.toggleTorch(),
          ),
        ],
      ),
      body: MobileScanner(
        controller: controller,
        onDetect: (capture) {
          final List<Barcode> barcodes = capture.barcodes;
          for (final barcode in barcodes) {
            print('扫描结果: ${barcode.rawValue}');
          }
        },
      ),
    );
  }

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

支持的条码格式

  • QR Code
  • Code 128
  • Code 39
  • Code 93
  • EAN-13
  • EAN-8
  • UPC-A
  • UPC-E
  • ITF
  • PDF417
  • Data Matrix
  • Aztec

项目统计

  • 被使用于:9.3k+ 个项目
  • 贡献者:86 人

适用场景

  • 扫码支付
  • 商品扫描
  • 票务验证
  • 设备绑定
  • 信息录入

总结

mobile_scanner 是一个功能强大、跨平台支持的 Flutter 扫码插件:

  • 多平台支持:Android、iOS、macOS、Web
  • 高性能:原生实现,扫描速度快
  • 易用性:API 简洁,易于集成
  • 活跃维护:持续更新,社区活跃

对于需要扫码功能的 Flutter 应用来说,这是首选方案。

分享: