字
字节笔记本
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
基本信息
- GitHub 仓库:https://github.com/juliansteenbakker/mobile_scanner
- Pub.dev:https://pub.dev/packages/mobile_scanner
- 星标数:1.1k stars
- Fork 数:668 forks
- 许可证:BSD-3-Clause
- 最新版本:v7.2.0
平台支持
| 平台 | 支持状态 |
|---|---|
| Android | ✔ |
| iOS | ✔ |
| macOS | ✔ |
| Web | ✔ |
| Linux | ❌ |
| Windows | ❌ |
技术栈
| 语言 | 占比 |
|---|---|
| Dart | 69.9% |
| Kotlin | 17.0% |
| Swift | 12.2% |
| 其他 | 0.9% |
核心功能
- 快速扫描:高速条码和二维码扫描
- 多格式支持:支持多种条码格式
- 实时检测:实时识别条码
- 可定制:自定义相机和扫描器行为
平台特性差异
| 特性 | Android | iOS | macOS | Web |
|---|---|---|---|---|
| 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 应用来说,这是首选方案。
分享: