diff --git a/lib/common/widgets/order/steelyard_container.dart b/lib/common/widgets/order/steelyard_container.dart index a5784bb..2932589 100644 --- a/lib/common/widgets/order/steelyard_container.dart +++ b/lib/common/widgets/order/steelyard_container.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:common_utils/common_utils.dart'; import 'package:ducafe_ui_core/ducafe_ui_core.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; @@ -36,14 +38,9 @@ class SteelyardController extends GetxController { // 价格 RxInt price = RxInt(0); - // 在误差之内的重量 - int _stableCount = 0; - // 上一下的重量 - double _lastWeight = 0; - // 波动范围 - static const double _weightTolerance = 0.05; - // 稳定次数 - static const int _requiredStableCount = 3; + // 添加计时器 + Timer? _noUpdateTimer; + static const _timeoutDuration = Duration(seconds: 3); // 点击|开始称重| void weightStartCallback() { @@ -110,8 +107,6 @@ class SteelyardController extends GetxController { widget.value = 0; callbackWidget.value = 0; price.value = 0; - _stableCount = 0; - _lastWeight = 0; } // 打开称串口 @@ -157,19 +152,16 @@ class SteelyardController extends GetxController { final productPrice = _getProudctPrice(_product!); final p = (callbackWidget.value * productPrice).ceil(); price.value = p; - if ((widget.value - _lastWeight).abs() <= _weightTolerance) { - _stableCount++; - if (_stableCount >= _requiredStableCount) { - weightSubmitCallback(); - return; - } - } else { - _stableCount = 0; - } - _lastWeight = widget.value; logger.i( - "|$_tag|重量|${widget.value}|单价|$productPrice|总价|${price.value}|稳定次数|$_stableCount|", + "|$_tag|重量|${widget.value}|单价|$productPrice|总价|${price.value}|", ); + // 重置超时计时器 + _noUpdateTimer?.cancel(); + _noUpdateTimer = Timer(_timeoutDuration, () { + if (widget.value > 0) { + weightSubmitCallback(); + } + }); }, time: const Duration(milliseconds: 100), ); diff --git a/lib/pages/supermarket_order/controller.dart b/lib/pages/supermarket_order/controller.dart index 8bdd7c3..ac2bcf4 100644 --- a/lib/pages/supermarket_order/controller.dart +++ b/lib/pages/supermarket_order/controller.dart @@ -350,17 +350,20 @@ class SupermarketOrderController extends GetxController with OrderMixin { // 校验购物车 bool _validateShopCar() { - bool flag = false; + bool flag = true; for (final v in shopCardList) { - if (v.productNumber > 0) { - flag = true; - break; + if (v.nature == ProductNature.DEFAULT) { + if (v.productNumber <= 0) { + Toast.error(msg: "校验购物车失败,未选择商品"); + return false; + } + } else if (v.nature == ProductNature.WEIGHT) { + if (v.productWidget <= 0) { + Toast.error(msg: "校验购物车失败,商品未称重"); + return false; + } } } - if (!flag) { - Toast.error(msg: "校验购物车失败,未选择商品"); - return false; - } return flag; }