|
|
@@ -5,6 +5,7 @@ import 'package:chicken_farm/components/vb_app_bar.dart';
|
|
|
import 'package:chicken_farm/core/utils/toast.dart';
|
|
|
import 'package:chicken_farm/core/services/pda/scan_channel.dart';
|
|
|
import 'package:chicken_farm/components/vb_rfid_field.dart';
|
|
|
+import 'package:go_router/go_router.dart';
|
|
|
|
|
|
class CageChangePage extends StatefulWidget {
|
|
|
const CageChangePage({super.key});
|
|
|
@@ -48,62 +49,65 @@ class _CageChangePageState extends State<CageChangePage> {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
- ScanChannel.openScanHead().then((success) {
|
|
|
- if (success) {
|
|
|
- logger.d("扫描头已打开");
|
|
|
- } else {
|
|
|
- logger.d("扫描头打开失败");
|
|
|
- }
|
|
|
- });
|
|
|
- // 初始化监听
|
|
|
- ScanChannel.initScanListener(
|
|
|
- onScanResult: (result) {
|
|
|
- if (_scanTag == 1) {
|
|
|
- // 源笼号
|
|
|
+ // 延迟到下一帧执行,确保页面构建完成后再打开扫描头
|
|
|
+ WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
|
+ ScanChannel.openScanHead().then((success) {
|
|
|
+ if (success) {
|
|
|
+ logger.d("扫描头已打开");
|
|
|
+ } else {
|
|
|
+ ToastUtil.errorAlert("扫描头打开失败");
|
|
|
+ if (mounted) {
|
|
|
+ context.pop();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // 初始化监听
|
|
|
+ ScanChannel.initScanListener(
|
|
|
+ onScanResult: (result) {
|
|
|
+ if (_scanTag == 1) {
|
|
|
+ // 源笼号
|
|
|
+ setState(() {
|
|
|
+ _sourceCageController.text = result;
|
|
|
+ _isScanningSource = false;
|
|
|
+ });
|
|
|
+ if (_targetCageController.text.isEmpty) {
|
|
|
+ // 源笼号扫描成功后自动延时扫描目标笼号
|
|
|
+ ScanChannel.stopSingleScan();
|
|
|
+ logger.d("自动扫描目标笼号");
|
|
|
+ _targetCageFocusNode.requestFocus();
|
|
|
+ _dealyScanCode(2);
|
|
|
+ }
|
|
|
+ } else if (_scanTag == 2) {
|
|
|
+ // 目标笼号
|
|
|
+ setState(() {
|
|
|
+ _targetCageController.text = result;
|
|
|
+ _isScanningTarget = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ // 扫码成功后停止解码(保留扫描头)
|
|
|
+ ScanChannel.stopSingleScan();
|
|
|
+ },
|
|
|
+ onScanError: (error) {
|
|
|
+ logger.d("扫码错误:$error");
|
|
|
setState(() {
|
|
|
- _sourceCageController.text = result;
|
|
|
_isScanningSource = false;
|
|
|
});
|
|
|
- if (_targetCageController.text.isEmpty) {
|
|
|
- // 源笼号扫描成功后自动延时扫描目标笼号
|
|
|
- ScanChannel.stopSingleScan();
|
|
|
- logger.d("自动扫描目标笼号");
|
|
|
- _targetCageFocusNode.requestFocus();
|
|
|
- _dealyScanCode(2);
|
|
|
+ },
|
|
|
+ onKeyPress: (bool isDouble, String keyCode) {
|
|
|
+ if (isDouble && keyCode == "KEY_619") {
|
|
|
+ _sourceCageController.clear();
|
|
|
+ _targetCageController.clear();
|
|
|
+ _scanTag = 1;
|
|
|
+ ScanChannel.startScan();
|
|
|
+ } else {
|
|
|
+ logger.d("按键:$isDouble $keyCode");
|
|
|
}
|
|
|
- } else if (_scanTag == 2) {
|
|
|
- // 目标笼号
|
|
|
- setState(() {
|
|
|
- _targetCageController.text = result;
|
|
|
- _isScanningTarget = false;
|
|
|
- });
|
|
|
- }
|
|
|
- // 扫码成功后停止解码(保留扫描头)
|
|
|
- ScanChannel.stopSingleScan();
|
|
|
- },
|
|
|
- onScanError: (error) {
|
|
|
- logger.d("扫码错误:$error");
|
|
|
- setState(() {
|
|
|
- _isScanningSource = false;
|
|
|
- });
|
|
|
- },
|
|
|
- onKeyPress: (bool isDouble, String keyCode) {
|
|
|
- if (isDouble && keyCode == "KEY_619") {
|
|
|
- _sourceCageController.clear();
|
|
|
- _targetCageController.clear();
|
|
|
- _scanTag = 1;
|
|
|
- ScanChannel.startScan();
|
|
|
- } else {
|
|
|
- logger.d("按键:$isDouble $keyCode");
|
|
|
- }
|
|
|
- },
|
|
|
- );
|
|
|
- _scanTag = 1;
|
|
|
+ },
|
|
|
+ );
|
|
|
+ });
|
|
|
|
|
|
- // 进入页面默认使原笼号获取到焦点
|
|
|
- // WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
|
- // _sourceCageFocusNode.requestFocus();
|
|
|
- // });
|
|
|
+ _scanTag = 1;
|
|
|
}
|
|
|
|
|
|
@override
|