插件地址:https://pub.dev/packages/barcode_scan2
- 安装插件
- Android 的配置
配置:android\app\src\main\AndroidManifest.xml
dart
<uses-permission android:name="android.permission.CAMERA" />
- iOS 的配置
配置:
info.plist
dart
<key>NSCameraUsageDescription</key>
<string>Camera permission is required for barcode scanning</string>
- 使用
dart
var options = ScanOptions(
// 是否自动打开闪光灯
autoEnableFlash: true,
// 配置文案
strings: {
'cancel': '取消',
'flash_on': '打开Flash',
'flash_off': '关闭Flash'
}
);
var result = await BarcodeScanner.scan(options: options);
print(result.type); // The result type (barcode, cancelled, failed)
print(result.rawContent); // The barcode content
print(result.format); // The barcode format (as enum)
print(result.formatNote); // If a unknown format was scanned this field contains a note
- 完整代码
dart
import 'package:flutter/material.dart';
import 'package:barcode_scan2/barcode_scan2.dart';
class ScanDemo extends StatelessWidget {
const ScanDemo({super.key});
void _doBarcodeScan() async {
var options = ScanOptions(
// 是否自动打开闪光灯
autoEnableFlash: true,
// 配置文案
strings: {
'cancel': '取消',
'flash_on': '打开Flash',
'flash_off': '关闭Flash'
}
);
var result = await BarcodeScanner.scan(options: options);
print(result.type); // The result type (barcode, cancelled, failed)
print(result.rawContent); // The barcode content
print(result.format); // The barcode format (as enum)
print(result.formatNote); // If a unknown format was scanned this field contains a note
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("扫描二维码"),
),
body: Center(
child: ElevatedButton(onPressed: _doBarcodeScan, child: Text("点击开始扫描二维码")),
),
);
}
}