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);
},
),
),
);
}
}