|
|
@@ -1,6 +1,7 @@
|
|
|
import 'package:flutter/material.dart';
|
|
|
import 'package:chicken_farm/components/vb_app_bar.dart';
|
|
|
import 'package:chicken_farm/core/utils/toast.dart';
|
|
|
+import 'package:chicken_farm/core/services/pda/pda_scanner_service.dart';
|
|
|
|
|
|
class CageChangePage extends StatefulWidget {
|
|
|
const CageChangePage({super.key});
|
|
|
@@ -14,7 +15,7 @@ class _CageChangePageState extends State<CageChangePage> {
|
|
|
String? _targetCageId;
|
|
|
final List<String> _rfids = [];
|
|
|
|
|
|
- // 模拟扫描状态
|
|
|
+ // 扫描状态
|
|
|
bool _isScanningSource = false;
|
|
|
bool _isScanningTarget = false;
|
|
|
bool _isScanningRfid = false;
|
|
|
@@ -33,7 +34,7 @@ class _CageChangePageState extends State<CageChangePage> {
|
|
|
title: '源笼号',
|
|
|
value: _sourceCageId,
|
|
|
isScanning: _isScanningSource,
|
|
|
- onScanPressed: _simulateScanSourceCage,
|
|
|
+ onScanPressed: _scanSourceCage,
|
|
|
onChangePressed: _handleChangeSourceCage,
|
|
|
),
|
|
|
|
|
|
@@ -44,7 +45,7 @@ class _CageChangePageState extends State<CageChangePage> {
|
|
|
title: '目标笼号',
|
|
|
value: _targetCageId,
|
|
|
isScanning: _isScanningTarget,
|
|
|
- onScanPressed: _simulateScanTargetCage,
|
|
|
+ onScanPressed: _scanTargetCage,
|
|
|
onChangePressed: _handleChangeTargetCage,
|
|
|
),
|
|
|
const SizedBox(height: 15),
|
|
|
@@ -204,7 +205,7 @@ class _CageChangePageState extends State<CageChangePage> {
|
|
|
child: CircularProgressIndicator(strokeWidth: 2),
|
|
|
)
|
|
|
: const Icon(Icons.add, size: 20),
|
|
|
- onPressed: _simulateScanRfid,
|
|
|
+ onPressed: _scanRfid,
|
|
|
),
|
|
|
],
|
|
|
),
|
|
|
@@ -213,65 +214,87 @@ class _CageChangePageState extends State<CageChangePage> {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- // 模拟扫描源笼号
|
|
|
- void _simulateScanSourceCage() {
|
|
|
+ // 扫描源笼号
|
|
|
+ void _scanSourceCage() async {
|
|
|
if (_isScanningSource) return;
|
|
|
|
|
|
setState(() {
|
|
|
_isScanningSource = true;
|
|
|
});
|
|
|
|
|
|
- // 模拟扫描过程
|
|
|
- Future.delayed(const Duration(seconds: 1), () {
|
|
|
+ try {
|
|
|
+ final result = await PdaScannerService.scanBarcode();
|
|
|
if (mounted) {
|
|
|
setState(() {
|
|
|
- _sourceCageId = 'SC-2025-001'; // 模拟扫描结果
|
|
|
+ _sourceCageId = result;
|
|
|
_isScanningSource = false;
|
|
|
});
|
|
|
ToastUtil.success('源笼号扫描成功');
|
|
|
}
|
|
|
- });
|
|
|
+ } catch (e) {
|
|
|
+ if (mounted) {
|
|
|
+ setState(() {
|
|
|
+ _isScanningSource = false;
|
|
|
+ });
|
|
|
+ ToastUtil.error('扫描失败: $e');
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- // 模拟扫描目标笼号
|
|
|
- void _simulateScanTargetCage() {
|
|
|
+ // 扫描目标笼号
|
|
|
+ void _scanTargetCage() async {
|
|
|
if (_isScanningTarget) return;
|
|
|
|
|
|
setState(() {
|
|
|
_isScanningTarget = true;
|
|
|
});
|
|
|
|
|
|
- // 模拟扫描过程
|
|
|
- Future.delayed(const Duration(seconds: 1), () {
|
|
|
+ try {
|
|
|
+ final result = await PdaScannerService.scanBarcode();
|
|
|
if (mounted) {
|
|
|
setState(() {
|
|
|
- _targetCageId = 'TC-2025-008'; // 模拟扫描结果
|
|
|
+ _targetCageId = result;
|
|
|
_isScanningTarget = false;
|
|
|
});
|
|
|
ToastUtil.success('目标笼号扫描成功');
|
|
|
}
|
|
|
- });
|
|
|
+ } catch (e) {
|
|
|
+ if (mounted) {
|
|
|
+ setState(() {
|
|
|
+ _isScanningTarget = false;
|
|
|
+ });
|
|
|
+ ToastUtil.error('扫描失败: $e');
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- // 模拟扫描电子编号
|
|
|
- void _simulateScanRfid() {
|
|
|
+ // 扫描电子编号
|
|
|
+ void _scanRfid() async {
|
|
|
if (_isScanningRfid) return;
|
|
|
|
|
|
setState(() {
|
|
|
_isScanningRfid = true;
|
|
|
});
|
|
|
|
|
|
- // 模拟扫描过程
|
|
|
- Future.delayed(const Duration(seconds: 1), () {
|
|
|
+ try {
|
|
|
+ // 使用实际的RFID读取功能
|
|
|
+ final result = await PdaScannerService.readRfid();
|
|
|
if (mounted) {
|
|
|
setState(() {
|
|
|
// 每次添加一个新的电子编号到数组开头(模拟按一次实体按钮扫描一个电子编号)
|
|
|
- _rfids.insert(0, 'RFID-${DateTime.now().millisecondsSinceEpoch}');
|
|
|
+ _rfids.insert(0, result);
|
|
|
_isScanningRfid = false;
|
|
|
});
|
|
|
ToastUtil.success('鸡扫描成功');
|
|
|
}
|
|
|
- });
|
|
|
+ } catch (e) {
|
|
|
+ if (mounted) {
|
|
|
+ setState(() {
|
|
|
+ _isScanningRfid = false;
|
|
|
+ });
|
|
|
+ ToastUtil.error('RFID读取失败: $e');
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 重新扫描源笼号
|
|
|
@@ -309,4 +332,4 @@ class _CageChangePageState extends State<CageChangePage> {
|
|
|
_rfids.clear();
|
|
|
});
|
|
|
}
|
|
|
-}
|
|
|
+}
|