w_tools_qr 1.0.0
w_tools_qr: ^1.0.0 copied to clipboard
w_tools 的二维码扫描组件层:基于 qr_code_scanner_plus 提供单次/连续扫描、生命周期暂停恢复、广播扫描流与相机控制。
w_tools_qr #
w_tools_qr 是 w_tools 的二维码 / 条形码扫描组件层,基于 qr_code_scanner_plus 封装。
特性 #
- 单次 / 连续扫描:
scanOnce控制扫码后是否暂停相机 - 生命周期管理:进入后台自动暂停相机,回到前台恢复
- 广播扫描流:
WQrController.scannedDataStream支持多监听 - 相机控制:暂停 / 恢复 / 翻转 / 闪光灯 / 反色扫描
- 可定制扫描框:颜色、边框、圆角、扫描区域尺寸
- 错误隔离:相机与流异常统一通过
onError上报
平台支持 #
- Android、iOS、Web
- 桌面端由
qr_code_scanner_plus抛出UnsupportedError - iOS 最低部署版本 12.0(插件 2.1.2)
- Android 需声明
CAMERA权限;iOS 需配置NSCameraUsageDescription - 本包最低要求 Flutter 3.27.0
安装 #
dependencies:
w_tools_qr: ^1.0.0
快速开始 #
import 'package:flutter/material.dart';
import 'package:w_tools_qr/w_tools_qr.dart';
class ScanPage extends StatelessWidget {
const ScanPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: WQrView(
onScanned: (Barcode barcode) {
debugPrint('扫码结果: ${barcode.code}');
},
),
);
}
}
连续扫描:
WQrView(
scanOnce: false,
scanInterval: const Duration(milliseconds: 800),
onScanned: (barcode) {
debugPrint(barcode.code);
},
)
重新扫描:
final key = GlobalKey<WQrViewState>();
WQrView(key: key, onScanned: (_) {});
// 扫码完成后重新开始
await key.currentState?.restartScan();
主要 API #
| 能力 | 入口 |
|---|---|
| 扫描组件 | WQrView |
| 状态控制 | WQrViewState.restartScan |
| 相机控制器 | WQrController |
| 扫描框样式 | WQrViewOverlayShape |
| 扫码结果 | Barcode(已由本包转出) |
License #
MIT