Flutter条形码扫描插件flutter_barcode_scanner_test的使用
Flutter条形码扫描插件flutter_barcode_scanner_test的使用
flutter_barcode_scanner
一个为Flutter应用添加条形码扫描功能的插件,支持在Android和iOS上运行。
尝试示例
只需克隆或下载仓库,打开项目到 Android Studio/VS Code
,打开 pubspec.yaml
文件并点击 Packages get
。
连接设备并点击 run
。
要在iPhone上运行,第一次需要从Xcode启动,并在 example/ios
中执行 pod install
,然后从Xcode运行。
入门指南
请根据Android和iOS的步骤进行操作。
请注意仔细遵循iOS步骤
Android
无需担心,你不需要做任何事情。
iOS - 需要Swift支持
部署目标:12
1. 新建项目
- 创建一个新的Flutter项目。请检查是否启用了 包含Swift支持用于iOS代码。
- 创建完成后,在Xcode中打开
/ios
项目,并将最小部署目标设置为12,同时将Swift版本设置为5。 - 设置好部署目标和Swift版本后,关闭Xcode,然后在Flutter项目的
/ios
文件夹中运行pod install
。
现在你已经完成了基本配置,请继续到 如何使用 部分。
2. 添加到现有Flutter应用
如果现有的iOS代码是Swift,则只需执行以下步骤:
- 将最小部署目标设置为12,将Swift版本设置为5。
- 关闭Xcode,然后在Flutter项目的
/ios
文件夹中运行pod install
。 - 现在可以继续到 如何使用 部分。
如果现有的iOS代码是Objective-C,则需要执行以下步骤:
- 在不同的位置创建一个新的Flutter项目(创建时不要忘记勾选 包含Swift支持用于iOS代码)。
- 复制新创建的
/ios
文件夹并替换现有的/ios
文件夹。 - 打开ios项目在Xcode中,将最小部署目标设置为12,将Swift版本设置为5。
- 在
/ios
文件夹中运行pod install
。
注意:如果你之前对iOS部分进行了更改,可能需要重新进行这些配置。
如何使用?
在iOS上使用时,需要添加相机使用描述。为此,请打开Xcode并在 Info.plist
中添加相机使用描述。
<key>NSCameraUsageDescription</key>
<string>Camera permission is required for barcode scanning.</string>
在修改完Android和iOS之后,将 flutter_barcode_scanner
添加到 pubspec.yaml
文件中:
dependencies:
...
flutter_barcode_scanner: ^2.0.0
一次性扫描
- 首先需要导入包:
import 'package:flutter_barcode_scanner/flutter_barcode_scanner.dart';
- 然后使用
scanBarcode
方法来访问条形码扫描功能。
String barcodeScanRes = await FlutterBarcodeScanner.scanBarcode(
COLOR_CODE,
CANCEL_BUTTON_TEXT,
isShowFlashIcon,
scanMode);
在 scanBarcode
中,
COLOR_CODE
是十六进制颜色值,表示条形码覆盖层的颜色,可以选择你喜欢的颜色。CANCEL_BUTTON_TEXT
是屏幕上的取消按钮的文字,可以选择你喜欢的语言文字。isShowFlashIcon
是一个布尔值,用于显示或隐藏闪光灯图标。scanMode
是一个枚举类型,用户可以选择<QR, BARCODE, DEFAULT>
中的任意一种,默认值为QR
。
注意:目前 scanMode
仅用于显示条形码和QR码的图形覆盖层。选择任何模式都会扫描条形码和QR码。
持续扫描
如果需要持续扫描条形码而不关闭摄像头,可以使用 FlutterBarcodeScanner.getBarcodeStreamReceiver
方法。
参数与 FlutterBarcodeScanner.scanBarcode
相同。
例如:
FlutterBarcodeScanner.getBarcodeStreamReceiver("#ff6666", "Cancel", false, ScanMode.DEFAULT)
.listen((barcode) {
/// barcode to be used
});
贡献
非常欢迎贡献,如果喜欢请给项目加星⭐。
联系方式
GitHub
Stack Overflow
LinkedIn
完整示例代码
以下是完整的示例代码,展示了一次性扫描和持续扫描的功能。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_barcode_scanner/flutter_barcode_scanner_test.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _scanBarcode = 'Unknown';
[@override](/user/override)
void initState() {
super.initState();
}
Future<void> startBarcodeScanStream() async {
FlutterBarcodeScanner.getBarcodeStreamReceiver(
'#ff6666', 'Cancel', true, ScanMode.BARCODE)!
.listen((barcode) => print(barcode));
}
Future<void> scanQR() async {
String barcodeScanRes;
// 平台消息可能会失败,因此我们使用try/catch捕获PlatformException。
try {
barcodeScanRes = await FlutterBarcodeScanner.scanBarcode(
'#ff6666', 'Cancel', true, ScanMode.QR);
print(barcodeScanRes);
} on PlatformException {
barcodeScanRes = 'Failed to get platform version.';
}
// 如果在异步平台消息飞行期间小部件从树中移除,我们希望丢弃响应而不是调用setState来更新我们的非存在的外观。
if (!mounted) return;
setState(() {
_scanBarcode = barcodeScanRes;
});
}
// 平台消息是异步的,因此我们在异步方法中初始化。
Future<void> scanBarcodeNormal() async {
String barcodeScanRes;
// 平台消息可能会失败,因此我们使用try/catch捕获PlatformException。
try {
barcodeScanRes = await FlutterBarcodeScanner.scanBarcode(
'#ff6666', 'Cancel', true, ScanMode.BARCODE);
print(barcodeScanRes);
} on PlatformException {
barcodeScanRes = 'Failed to get platform version.';
}
// 如果在异步平台消息飞行期间小部件从树中移除,我们希望丢弃响应而不是调用setState来更新我们的非存在的外观。
if (!mounted) return;
setState(() {
_scanBarcode = barcodeScanRes;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Barcode scan')),
body: Builder(builder: (BuildContext context) {
return Container(
alignment: Alignment.center,
child: Flex(
direction: Axis.vertical,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () => scanBarcodeNormal(),
child: Text('Start barcode scan')),
ElevatedButton(
onPressed: () => scanQR(),
child: Text('Start QR scan')),
ElevatedButton(
onPressed: () => startBarcodeScanStream(),
child: Text('Start barcode scan stream')),
Text('Scan result : $_scanBarcode\n',
style: TextStyle(fontSize: 20))
]));
})));
}
}
更多关于Flutter条形码扫描插件flutter_barcode_scanner_test的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter条形码扫描插件flutter_barcode_scanner_test的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_barcode_scanner_test
是一个用于在 Flutter 应用中扫描条形码的插件。它可以帮助你快速集成条形码扫描功能到你的应用中。以下是如何使用 flutter_barcode_scanner_test
插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 flutter_barcode_scanner_test
插件的依赖。
dependencies:
flutter:
sdk: flutter
flutter_barcode_scanner_test: ^1.0.0 # 请根据最新版本号进行更新
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入插件:
import 'package:flutter_barcode_scanner_test/flutter_barcode_scanner_test.dart';
3. 使用插件扫描条形码
你可以使用 FlutterBarcodeScannerTest
类中的 scanBarcode
方法来启动条形码扫描。
void scanBarcode() async {
String barcodeScanRes;
// 启动扫描
try {
barcodeScanRes = await FlutterBarcodeScannerTest.scanBarcode();
} catch (e) {
barcodeScanRes = 'Failed to get barcode: $e';
}
// 处理扫描结果
if (barcodeScanRes != null && barcodeScanRes.isNotEmpty) {
print('Barcode scanned: $barcodeScanRes');
// 你可以在这里处理扫描到的条形码数据
} else {
print('No barcode scanned.');
}
}
4. 调用扫描方法
你可以在按钮的 onPressed
事件中调用 scanBarcode
方法,以便用户点击按钮时启动扫描。
ElevatedButton(
onPressed: () {
scanBarcode();
},
child: Text('Scan Barcode'),
),
5. 处理权限(如果需要)
在某些平台上,扫描条形码可能需要相机权限。你需要在 AndroidManifest.xml
和 Info.plist
中添加相应的权限。
Android
在 android/app/src/main/AndroidManifest.xml
中添加以下权限:
<uses-permission android:name="android.permission.CAMERA" />
iOS
在 ios/Runner/Info.plist
中添加以下权限:
<key>NSCameraUsageDescription</key>
<string>We need access to your camera to scan barcodes</string>