fix:修复 上传电池后,其他页面的电池没有试试刷新
This commit is contained in:
parent
c53a60a95a
commit
5f190aa587
@ -522,5 +522,18 @@ class LockDetailLogic extends BaseGetXController {
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
state.LockSetChangeSetRefreshLockDetailWithTypeSubscription = eventBus
|
||||
.on<LockSetChangeSetRefreshLockDetailWithType>()
|
||||
.listen((LockSetChangeSetRefreshLockDetailWithType event) {
|
||||
if (event.type == 4) {
|
||||
final int electricQuantity =
|
||||
int.tryParse(event.setResult['electricQuantity']) ?? 0;
|
||||
state.electricQuantity.value = electricQuantity;
|
||||
state.keyInfos.value.electricQuantity = electricQuantity;
|
||||
state.keyInfos.value.electricQuantityDate =
|
||||
event.setResult['uploadElectricQuantityDate'] ?? 0;
|
||||
state.keyInfos.refresh();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,15 +29,14 @@ import '../../lockMian/entity/lockListInfo_entity.dart';
|
||||
import 'lockDetail_logic.dart';
|
||||
|
||||
class LockDetailPage extends StatefulWidget {
|
||||
const LockDetailPage(
|
||||
{required this.isOnlyOneData,
|
||||
required this.lockListInfoItemEntity,
|
||||
Key? key})
|
||||
: super(key: key);
|
||||
final bool isOnlyOneData;
|
||||
final LockListInfoItemEntity lockListInfoItemEntity;
|
||||
|
||||
const LockDetailPage(
|
||||
{Key? key,
|
||||
required this.isOnlyOneData,
|
||||
required this.lockListInfoItemEntity})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
State<LockDetailPage> createState() => _LockDetailPageState();
|
||||
}
|
||||
@ -50,7 +49,6 @@ class _LockDetailPageState extends State<LockDetailPage>
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
// TODO: implement initState
|
||||
super.initState();
|
||||
|
||||
listeningAnimations();
|
||||
@ -1438,8 +1436,9 @@ class _LockDetailPageState extends State<LockDetailPage>
|
||||
state.closedUnlockSuccessfulTimer?.cancel();
|
||||
_lockRefreshLockDetailInfoDataEvent?.cancel();
|
||||
state.replySubscription.cancel();
|
||||
state.lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent!
|
||||
.cancel();
|
||||
state.lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent
|
||||
?.cancel();
|
||||
state.LockSetChangeSetRefreshLockDetailWithTypeSubscription?.cancel();
|
||||
if (state.animationController != null) {
|
||||
state.animationController!.dispose();
|
||||
state.animationController = null;
|
||||
|
||||
@ -12,44 +12,45 @@ class LockDetailState {
|
||||
|
||||
late StreamSubscription<Reply> replySubscription;
|
||||
StreamSubscription? lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent;
|
||||
StreamSubscription? LockSetChangeSetRefreshLockDetailWithTypeSubscription;
|
||||
|
||||
String lockNetToken = "0";
|
||||
String lockNetToken = '0';
|
||||
int differentialTime = 0;
|
||||
int lockUserNo = 0;
|
||||
var senderUserId = 0;
|
||||
var isOnlyOneData = false;
|
||||
int senderUserId = 0;
|
||||
bool isOnlyOneData = false;
|
||||
|
||||
var isAttendance = 0.obs; // 是否开启考勤
|
||||
var isOpenLockNeedOnline = 0.obs; // APP开锁时是否需联网
|
||||
var electricQuantity = 0.obs; // 电量
|
||||
var electricQuantityStandby = 0.obs; // 备用电池电量
|
||||
var isOpenPassageMode = 0.obs; // 是否开启了常开模式
|
||||
var lockAlias = "".obs; // 锁名字
|
||||
RxInt isAttendance = 0.obs; // 是否开启考勤
|
||||
RxInt isOpenLockNeedOnline = 0.obs; // APP开锁时是否需联网
|
||||
RxInt electricQuantity = 0.obs; // 电量
|
||||
RxInt electricQuantityStandby = 0.obs; // 备用电池电量
|
||||
RxInt isOpenPassageMode = 0.obs; // 是否开启了常开模式
|
||||
RxString lockAlias = ''.obs; // 锁名字
|
||||
|
||||
// var currentDeviceUUid = "".obs; // 当前设备的uuid
|
||||
|
||||
var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示
|
||||
var iSClosedUnlockSuccessfulPopup = false.obs; // 是否关闭了开锁成功弹窗
|
||||
var iSOpenLock = true.obs; // 是开锁还是关锁
|
||||
RxBool ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示
|
||||
RxBool iSClosedUnlockSuccessfulPopup = false.obs; // 是否关闭了开锁成功弹窗
|
||||
RxBool iSOpenLock = true.obs; // 是开锁还是关锁
|
||||
Timer? closedUnlockSuccessfulTimer;
|
||||
|
||||
var bottomBtnisEable = true.obs; // 是否不可用 用于限制底部按钮是否可用
|
||||
var openDoorBtnisUneable = true.obs; // 当钥匙状态不能使用的情况下开锁按钮禁止使用,默认可用
|
||||
RxBool bottomBtnisEable = true.obs; // 是否不可用 用于限制底部按钮是否可用
|
||||
RxBool openDoorBtnisUneable = true.obs; // 当钥匙状态不能使用的情况下开锁按钮禁止使用,默认可用
|
||||
|
||||
var openDoorModel = 0;// 离线开门0, 在线开门2 离线关门32 在线关门34
|
||||
int openDoorModel = 0;// 离线开门0, 在线开门2 离线关门32 在线关门34
|
||||
|
||||
//过渡动画控制器
|
||||
AnimationController? animationController;
|
||||
// var lockState = 0.obs;// 0未连接普通状态 1连接开锁中(展示动画) 2已连接开锁成功 3检测可用性 4连接失败 5连接失败重连中
|
||||
var openLockBtnState = 0.obs; // 0普通状态(未转动) 1连接中(转动状态)
|
||||
RxInt openLockBtnState = 0.obs; // 0普通状态(未转动) 1连接中(转动状态)
|
||||
// var connectState = 0.obs;// 0未连接 1连接
|
||||
|
||||
final PageController pageController = PageController();
|
||||
var currentPage = 0.obs;
|
||||
RxInt currentPage = 0.obs;
|
||||
|
||||
var operateDate = 0; // 按日期查询消息记录的时间戳
|
||||
var logCountPage = 10; // 蓝牙记录一页多少个
|
||||
var nextAuthTime = 0.obs; // 下次认证时间
|
||||
int operateDate = 0; // 按日期查询消息记录的时间戳
|
||||
int logCountPage = 10; // 蓝牙记录一页多少个
|
||||
RxInt nextAuthTime = 0.obs; // 下次认证时间
|
||||
// LockDetailState() {
|
||||
// Map map = Get.arguments;
|
||||
// lockCount = map["lockCount"];
|
||||
|
||||
@ -20,6 +20,7 @@ class BasicInformationLogic extends BaseGetXController {
|
||||
|
||||
// 下级界面修改成功后传递数据
|
||||
StreamSubscription? _passCurrentLockInformationEvent;
|
||||
StreamSubscription? lockSetChangeSetRefreshLockDetailWithTypeSubscription;
|
||||
|
||||
void initLoadDataAction(BlockSetStateCallback blockSetStateCallback) {
|
||||
// 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus
|
||||
@ -29,6 +30,19 @@ class BasicInformationLogic extends BaseGetXController {
|
||||
state.lockSetInfoData.value = event.lockSetInfoData;
|
||||
blockSetStateCallback();
|
||||
});
|
||||
|
||||
lockSetChangeSetRefreshLockDetailWithTypeSubscription = eventBus
|
||||
.on<LockSetChangeSetRefreshLockDetailWithType>()
|
||||
.listen((LockSetChangeSetRefreshLockDetailWithType event) {
|
||||
if (event.type == 4) {
|
||||
final int electricQuantity =
|
||||
int.tryParse(event.setResult['electricQuantity']) ?? 0;
|
||||
state.lockBasicInfo.value.electricQuantity = electricQuantity;
|
||||
state.lockBasicInfo.value.electricQuantityDate =
|
||||
event.setResult['uploadElectricQuantityDate'];
|
||||
state.lockBasicInfo.refresh();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
@ -43,5 +57,6 @@ class BasicInformationLogic extends BaseGetXController {
|
||||
void onClose() {
|
||||
super.onClose();
|
||||
_passCurrentLockInformationEvent?.cancel();
|
||||
lockSetChangeSetRefreshLockDetailWithTypeSubscription?.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@ -23,19 +23,22 @@ class UploadElectricQuantityLogic extends BaseGetXController {
|
||||
final UploadElectricQuantityState state = UploadElectricQuantityState();
|
||||
|
||||
//电量更新请求
|
||||
Future<void> uploadElectricQuantityRequest(String electricQuantity, String electricQuantityStandby) async {
|
||||
final KeyOperationRecordEntity entity = await ApiRepository.to.uploadElectricQuantity(
|
||||
electricQuantity:electricQuantity,
|
||||
electricQuantityStandby: electricQuantityStandby,
|
||||
lockId: state.lockSetInfoData.value.lockId.toString(),
|
||||
isUnShowLoading: false
|
||||
);
|
||||
Future<void> uploadElectricQuantityRequest(
|
||||
String electricQuantity, String electricQuantityStandby) async {
|
||||
final KeyOperationRecordEntity entity = await ApiRepository.to
|
||||
.uploadElectricQuantity(
|
||||
electricQuantity: electricQuantity,
|
||||
electricQuantityStandby: electricQuantityStandby,
|
||||
lockId: state.lockSetInfoData.value.lockId.toString(),
|
||||
isUnShowLoading: false);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
showToast('锁电量更新成功'.tr, something: () {
|
||||
eventBus
|
||||
.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value));
|
||||
eventBus.fire(
|
||||
LockSetChangeSetRefreshLockDetailWithType(4, electricQuantity));
|
||||
eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(4, <String,dynamic>{
|
||||
'electricQuantity': electricQuantity,
|
||||
'uploadElectricQuantityDate': state.uploadElectricQuantityDate.value,
|
||||
}));
|
||||
eventBus.fire(RefreshLockListInfoDataEvent());
|
||||
});
|
||||
}
|
||||
@ -57,8 +60,10 @@ class UploadElectricQuantityLogic extends BaseGetXController {
|
||||
(BluetoothConnectionState deviceConnectionState) async {
|
||||
if (deviceConnectionState == BluetoothConnectionState.connected) {
|
||||
dismissEasyLoading();
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey =
|
||||
await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList =
|
||||
changeStringListToIntList(privateKey!);
|
||||
IoSenderManage.senderGetStarLockStatuInfo(
|
||||
lockID: BlueManage().connectDeviceName,
|
||||
userID: await Storage.getUid(),
|
||||
@ -67,7 +72,8 @@ class UploadElectricQuantityLogic extends BaseGetXController {
|
||||
isBeforeAddUser: false,
|
||||
privateKey: getPrivateKeyList,
|
||||
);
|
||||
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
|
||||
} else if (deviceConnectionState ==
|
||||
BluetoothConnectionState.disconnected) {
|
||||
dismissEasyLoading();
|
||||
cancelBlueConnetctToastTimer();
|
||||
state.sureBtnState.value = 0;
|
||||
@ -80,6 +86,7 @@ class UploadElectricQuantityLogic extends BaseGetXController {
|
||||
|
||||
// 获取解析后的数据
|
||||
late StreamSubscription<Reply> _replySubscription;
|
||||
|
||||
void _initReplySubscription() {
|
||||
_replySubscription =
|
||||
EventBusManager().eventBus!.on<Reply>().listen((Reply reply) {
|
||||
@ -102,20 +109,27 @@ class UploadElectricQuantityLogic extends BaseGetXController {
|
||||
|
||||
// 电池剩余电量
|
||||
final int battRemCap = reply.data[132];
|
||||
state.lockSetInfoData.value.lockBasicInfo!.electricQuantity = battRemCap;
|
||||
state.lockSetInfoData.value.lockBasicInfo!.electricQuantity =
|
||||
battRemCap;
|
||||
|
||||
// 备用电池剩余电量
|
||||
final int battRemCapStandby = reply.data[133];
|
||||
state.lockSetInfoData.value.lockBasicInfo!.electricQuantityStandby = battRemCapStandby;
|
||||
state.lockSetInfoData.value.lockBasicInfo!.electricQuantityStandby =
|
||||
battRemCapStandby;
|
||||
|
||||
state.uploadElectricQuantityDate.value = DateTime.now().millisecondsSinceEpoch;
|
||||
state.lockSetInfoData.value.lockBasicInfo!.electricQuantityDate = DateTime.now().millisecondsSinceEpoch;
|
||||
uploadElectricQuantityRequest(battRemCap.toString(), battRemCapStandby.toString());
|
||||
state.uploadElectricQuantityDate.value =
|
||||
DateTime.now().millisecondsSinceEpoch;
|
||||
state.lockSetInfoData.value.lockBasicInfo!.electricQuantityDate =
|
||||
DateTime.now().millisecondsSinceEpoch;
|
||||
uploadElectricQuantityRequest(
|
||||
battRemCap.toString(), battRemCapStandby.toString());
|
||||
break;
|
||||
case 0x06:
|
||||
//无权限
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey =
|
||||
await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList =
|
||||
changeStringListToIntList(privateKey!);
|
||||
IoSenderManage.senderGetStarLockStatuInfo(
|
||||
lockID: BlueManage().connectDeviceName,
|
||||
userID: await Storage.getUid(),
|
||||
@ -125,7 +139,6 @@ class UploadElectricQuantityLogic extends BaseGetXController {
|
||||
privateKey: getPrivateKeyList,
|
||||
);
|
||||
|
||||
|
||||
break;
|
||||
default:
|
||||
//失败
|
||||
@ -134,22 +147,27 @@ class UploadElectricQuantityLogic extends BaseGetXController {
|
||||
}
|
||||
|
||||
// 从服务器获取锁的时间 开锁时传入
|
||||
Future<void> getServerDatetime() async{
|
||||
final GetServerDatetimeEntity entity = await ApiRepository.to.getServerDatetimeData();
|
||||
if(entity.errorCode!.codeIsSuccessful){
|
||||
state.differentialTime = entity.data!.date! ~/ 1000 - DateTime.now().millisecondsSinceEpoch ~/ 1000;
|
||||
Future<void> getServerDatetime() async {
|
||||
final GetServerDatetimeEntity entity =
|
||||
await ApiRepository.to.getServerDatetimeData();
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
state.differentialTime = entity.data!.date! ~/ 1000 -
|
||||
DateTime.now().millisecondsSinceEpoch ~/ 1000;
|
||||
// AppLog.log("entity.data!.date! ~/ 1000:${entity.data!.date! ~/ 1000} DateTime.now().millisecondsSinceEpoch ~/ 1000:${DateTime.now().millisecondsSinceEpoch ~/ 1000} 服务器时间差:${state.differentialTime}");
|
||||
}
|
||||
}
|
||||
|
||||
int getLocalTime(){
|
||||
return DateTime.now().millisecondsSinceEpoch ~/ 1000 + state.differentialTime;
|
||||
int getLocalTime() {
|
||||
return DateTime.now().millisecondsSinceEpoch ~/ 1000 +
|
||||
state.differentialTime;
|
||||
}
|
||||
|
||||
int getUTCTime(){
|
||||
final DateTime utcTime = DateTime.fromMillisecondsSinceEpoch(getLocalTime()*1000, isUtc: true);
|
||||
int getUTCTime() {
|
||||
final DateTime utcTime =
|
||||
DateTime.fromMillisecondsSinceEpoch(getLocalTime() * 1000, isUtc: true);
|
||||
|
||||
final String appointmentDate = DateTool().getYMDHNDateStringWithDateTime(utcTime, 1);
|
||||
final String appointmentDate =
|
||||
DateTool().getYMDHNDateStringWithDateTime(utcTime, 1);
|
||||
final int utcTimeValue = DateTool().dateToTimestamp(appointmentDate, 1);
|
||||
AppLog.log('appointmentDate: $appointmentDate utcTimeValue:$utcTimeValue');
|
||||
return utcTimeValue ~/ 1000;
|
||||
|
||||
@ -50,9 +50,13 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
|
||||
if (clearScanDevices) {
|
||||
BlueManage().scanDevices.clear();
|
||||
}
|
||||
if (mounted) {
|
||||
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||
setState(() {});
|
||||
}
|
||||
});
|
||||
// if (mounted) {
|
||||
// setState(() {});
|
||||
// }
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@ -77,7 +77,7 @@ class LockGroupEditGroupLockRefreshEvent {
|
||||
/// 锁设置里面开启关闭刷新锁详情
|
||||
class LockSetChangeSetRefreshLockDetailWithType {
|
||||
int type; // 0 考勤 1开锁时是否需联网 2常开模式 3修改了锁名字 4修改了电量 5远程开锁
|
||||
String setResult;
|
||||
dynamic setResult;
|
||||
|
||||
LockSetChangeSetRefreshLockDetailWithType(this.type, this.setResult);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user