592 lines
22 KiB
Dart
592 lines
22 KiB
Dart
import 'dart:async';
|
||
|
||
import 'package:flutter/scheduler.dart';
|
||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||
import 'package:get/get.dart';
|
||
import 'package:intl/intl.dart';
|
||
import 'package:permission_handler/permission_handler.dart';
|
||
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
||
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
|
||
|
||
import '../../../app_settings/app_settings.dart';
|
||
import '../../../blue/blue_manage.dart';
|
||
import '../../../blue/io_protocol/io_openLock.dart';
|
||
import '../../../blue/io_protocol/io_referEventRecordTime.dart';
|
||
import '../../../blue/io_reply.dart';
|
||
import '../../../blue/io_tool/io_tool.dart';
|
||
import '../../../blue/io_tool/manager_event_bus.dart';
|
||
import '../../../blue/sender_manage.dart';
|
||
import '../../../network/api_repository.dart';
|
||
import '../../../permission/permission_dialog.dart';
|
||
import '../../../tools/baseGetXController.dart';
|
||
import '../../../tools/commonDataManage.dart';
|
||
import '../../../tools/eventBusEventManage.dart';
|
||
import '../../../tools/storage.dart';
|
||
import '../../../translations/trans_lib.dart';
|
||
import '../lockOperatingRecord/lockOperatingRecordGetLastRecordTime_entity.dart';
|
||
import 'lockDetail_state.dart';
|
||
import 'lockNetToken_entity.dart';
|
||
|
||
class LockDetailLogic extends BaseGetXController {
|
||
final LockDetailState state = LockDetailState();
|
||
|
||
// 监听设备返回的数据
|
||
void initReplySubscription() {
|
||
state.replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
|
||
// 开门
|
||
if (reply is OpenDoorReply && state.ifCurrentScreen.value == true) {
|
||
_replyOpenLock(reply);
|
||
}
|
||
|
||
// 编辑锁用户
|
||
// if(reply is EditUserReply){
|
||
// _replyEditUserKey(reply);
|
||
// }
|
||
|
||
// 获取星锁状态信息
|
||
// if (reply is GetStarLockStatuInfoReply && state.ifCurrentScreen.value == true) {
|
||
// _replyGetStarLockStatusInfo(reply);
|
||
// }
|
||
|
||
// 开完锁之后上传记录
|
||
if (reply is SenderReferEventRecordTimeReply &&
|
||
state.ifCurrentScreen.value == true) {
|
||
_replyReferEventRecordTime(reply);
|
||
}
|
||
|
||
// 添加用户
|
||
// if ((reply is AddUserReply) && (state.ifCurrentScreen.value == true)) {
|
||
// _replyAddUserKey(reply);
|
||
// }
|
||
});
|
||
}
|
||
|
||
// 开门数据解析
|
||
Future<void> _replyOpenLock(Reply reply) async {
|
||
int status = reply.data[6];
|
||
|
||
switch (status) {
|
||
case 0x00:
|
||
//成功
|
||
// _showFullScreenOverlay(Get.context!);
|
||
cancelBlueConnetctToastTimer();
|
||
|
||
state.iSClosedUnlockSuccessfulPopup.value = true;
|
||
if (state.closedUnlockSuccessfulTimer != null) {
|
||
state.closedUnlockSuccessfulTimer!.cancel();
|
||
state.closedUnlockSuccessfulTimer = null;
|
||
}
|
||
// 如果没有点击关闭弹窗,3秒后自动关闭
|
||
state.closedUnlockSuccessfulTimer = Timer.periodic(3.seconds, (timer) {
|
||
state.iSClosedUnlockSuccessfulPopup.value = false;
|
||
timer.cancel();
|
||
eventBus.fire(RefreshLockDetailInfoDataEvent());
|
||
});
|
||
|
||
// 电量
|
||
int power = reply.data[7];
|
||
state.electricQuantity.value = power;
|
||
|
||
// 备用电量
|
||
if(state.keyInfos.value.lockFeature!.isSupportBackupBattery == 1){
|
||
int powerStandby = reply.data[9];
|
||
state.electricQuantityStandby.value = powerStandby;
|
||
}
|
||
// 更新电量
|
||
uploadElectricQuantityRequest();
|
||
|
||
getLockRecordLastUploadDataTime();
|
||
state.openLockBtnState.value = 0;
|
||
|
||
eventBus.fire(RefreshLockDetailInfoDataEvent());
|
||
break;
|
||
case 0x06:
|
||
//无权限
|
||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||
|
||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||
|
||
var tokenData = reply.data.sublist(2, 6);
|
||
var saveStrList = changeIntListToStringList(tokenData);
|
||
Storage.setStringList(saveBlueToken, saveStrList);
|
||
|
||
IoSenderManage.senderOpenLock(
|
||
keyID: BlueManage().connectDeviceName,
|
||
userID: await Storage.getUid(),
|
||
openMode: state.openDoorModel,
|
||
openTime: getNetTime(),
|
||
onlineToken: state.lockNetToken,
|
||
token: tokenData,
|
||
needAuthor: 1,
|
||
signKey: signKeyDataList,
|
||
privateKey: getPrivateKeyList,
|
||
);
|
||
break;
|
||
case 0x07:
|
||
//无权限
|
||
|
||
break;
|
||
case 0x16:
|
||
// 正在开锁中...
|
||
state.openLockBtnState.value = 0;
|
||
eventBus.fire(RefreshLockDetailInfoDataEvent());
|
||
showToast("正在开锁中...".tr, something: () {
|
||
cancelBlueConnetctToastTimer();
|
||
});
|
||
break;
|
||
default:
|
||
//失败
|
||
break;
|
||
}
|
||
}
|
||
|
||
// 获取锁状态数据解析
|
||
// Future<void> _replyGetStarLockStatusInfo(Reply reply) async {
|
||
// int status = reply.data[2];
|
||
// switch (status) {
|
||
// case 0x00:
|
||
// //成功
|
||
// dismissEasyLoading();
|
||
// cancelBlueConnetctToastTimer();
|
||
//
|
||
// break;
|
||
// case 0x06:
|
||
// //无权限
|
||
//
|
||
// break;
|
||
// default:
|
||
// //失败
|
||
// break;
|
||
// }
|
||
// }
|
||
|
||
// 根据时间查解析数据
|
||
Future<void> _replyReferEventRecordTime(Reply reply) async {
|
||
int status = reply.data[2];
|
||
switch (status) {
|
||
case 0x00:
|
||
//成功
|
||
int dataLength = (reply.data[5] << 8) + reply.data[6];
|
||
AppLog.log("dataLength:$dataLength");
|
||
if (dataLength > 0) {
|
||
reply.data.removeRange(0, 7);
|
||
// 把得到的数据按8位分割成数组 然后塞进一个新的数组里面
|
||
if(reply.data.length < 17){
|
||
return;
|
||
}
|
||
var getList = splitList(reply.data, 17);
|
||
// AppLog.log("getList:$getList");
|
||
var uploadList = [];
|
||
for (int i = 0; i < getList.length; i++) {
|
||
var indexList = getList[i];
|
||
// AppLog.log("indexList:$indexList");
|
||
var indexMap = {};
|
||
indexMap["type"] = indexList[0].toString();
|
||
|
||
if(indexList[0] == 2){
|
||
var passwordData = reply.data.sublist(7, 17);
|
||
var password = utf8String(passwordData);
|
||
indexMap["user"] = password.toString();
|
||
}else{
|
||
int userNo = (indexList[1]*255) + indexList[2];
|
||
indexMap["user"] = userNo.toString();
|
||
}
|
||
|
||
indexMap["success"] = "1";
|
||
|
||
int time = ((0xff & indexList[(3)]) << 24 |
|
||
(0xff & indexList[4]) << 16 |
|
||
(0xff & indexList[5]) << 8 |
|
||
(0xFF & indexList[6]));
|
||
indexMap["date"] = "${time * 1000}";
|
||
uploadList.add(indexMap);
|
||
}
|
||
lockRecordUploadData(uploadList);
|
||
|
||
if(dataLength == state.logCountPage){
|
||
senderReferEventRecordTime();
|
||
}else{
|
||
await BlueManage().disconnect();
|
||
}
|
||
}
|
||
break;
|
||
case 0x06:
|
||
//无权限
|
||
BlueManage().disconnect();
|
||
cancelBlueConnetctToastTimer();
|
||
break;
|
||
default:
|
||
BlueManage().disconnect();
|
||
cancelBlueConnetctToastTimer();
|
||
break;
|
||
}
|
||
}
|
||
|
||
// // 添加用户
|
||
// Future<void> _replyAddUserKey(Reply reply) async {
|
||
// var lockId = reply.data.sublist(2, 42);
|
||
//
|
||
// var token = reply.data.sublist(42, 46);
|
||
// List<String> strTokenList = changeIntListToStringList(token);
|
||
// Storage.setStringList(saveBlueToken, strTokenList);
|
||
//
|
||
// int status = reply.data[46];
|
||
//
|
||
// switch (status) {
|
||
// case 0x00:
|
||
// //成功
|
||
// cancelBlueConnetctToastTimer();
|
||
// state.lockUserNo = reply.data[47];
|
||
// _updateLockUserNo();
|
||
//
|
||
// break;
|
||
// case 0x06:
|
||
// //无权限
|
||
// var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||
// List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||
//
|
||
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||
//
|
||
// IoSenderManage.senderAddUser(
|
||
// lockID: BlueManage().connectDeviceName,
|
||
// authUserID: state.senderUserId.toString(),
|
||
// keyID: state.keyInfos.value.keyId.toString(),
|
||
// userID: await Storage.getUid(),
|
||
// openMode: 1,
|
||
// keyType: 0,
|
||
// startDate: state.keyInfos.value.startDate!~/10000,
|
||
// expireDate: state.keyInfos.value.endDate!~/10000,
|
||
// role: state.keyInfos.value.keyRight == 1 ? 1 : 0,
|
||
// password: "123456",
|
||
// needAuthor: 1,
|
||
// publicKey: publicKeyDataList,
|
||
// privateKey: getPrivateKeyList,
|
||
// token: token);
|
||
// break;
|
||
// default:
|
||
// break;
|
||
// }
|
||
// }
|
||
|
||
// 添加用户(普通用户接收电子钥匙)
|
||
// Future<void> addUserConnectBlue() async {
|
||
// showBlueConnetctToastTimer(action: () {
|
||
// state.openLockBtnState.value = 0;
|
||
// eventBus.fire(RefreshLockDetailInfoDataEvent());
|
||
// });
|
||
//
|
||
// // var listData = AddUserCommand(
|
||
// // lockID: BlueManage().connectDeviceName,
|
||
// // authUserID: state.senderUserId.toString(),
|
||
// // keyID: state.keyInfos.value.keyId.toString(),
|
||
// // userID: await Storage.getUid(),
|
||
// // openMode: 1,
|
||
// // keyType: 0,
|
||
// // startDate: state.keyInfos.value.startDate!~/10000,
|
||
// // expireDate: state.keyInfos.value.endDate!~/10000,
|
||
// // role: state.keyInfos.value.keyRight == 1 ? 1 : 0,
|
||
// // password: "123456",
|
||
// // needAuthor: 1,
|
||
// // publicKey: publicKeyDataList,
|
||
// // privateKey: getPrivateKeyList,
|
||
// // token: getTokenList).packageData();
|
||
// BlueManage().bludSendData(state.keyInfos.value.bluetooth!.bluetoothDeviceName!, (BluetoothConnectionState deviceConnectionState) async {
|
||
// if (deviceConnectionState == BluetoothConnectionState.connected) {
|
||
// // 私钥
|
||
// var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||
// List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||
//
|
||
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||
//
|
||
// var token = await Storage.getStringList(saveBlueToken);
|
||
// List<int> getTokenList = [0, 0, 0, 0];
|
||
// if (token != null) {
|
||
// getTokenList = changeStringListToIntList(token);
|
||
// }
|
||
//
|
||
// IoSenderManage.senderAddUser(
|
||
// lockID: BlueManage().connectDeviceName,
|
||
// authUserID: state.senderUserId.toString(),
|
||
// keyID: state.keyInfos.value.keyId.toString(),
|
||
// userID: await Storage.getUid(),
|
||
// openMode: 1,
|
||
// keyType: 0,
|
||
// startDate: state.keyInfos.value.startDate!~/10000,
|
||
// expireDate: state.keyInfos.value.endDate!~/10000,
|
||
// role: state.keyInfos.value.keyRight == 1 ? 1 : 0,
|
||
// password: "123456",
|
||
// needAuthor: 1,
|
||
// publicKey: publicKeyDataList,
|
||
// privateKey: getPrivateKeyList,
|
||
// token: getTokenList);
|
||
// } else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
|
||
// cancelBlueConnetctToastTimer();
|
||
// if (state.ifCurrentScreen.value == true) {
|
||
// showBlueConnetctToast();
|
||
// }
|
||
//
|
||
// state.openLockBtnState.value = 0;
|
||
// eventBus.fire(RefreshLockDetailInfoDataEvent());
|
||
// }
|
||
// });
|
||
// }
|
||
|
||
// 点击开门事件
|
||
Future<void> openDoorAction() async {
|
||
showBlueConnetctToastTimer(action: () {
|
||
state.openLockBtnState.value = 0;
|
||
// BlueManage().stopScan();
|
||
eventBus.fire(RefreshLockDetailInfoDataEvent());
|
||
});
|
||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||
|
||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||
|
||
var token = await Storage.getStringList(saveBlueToken);
|
||
List<int> getTokenList = changeStringListToIntList(token!);
|
||
|
||
BlueManage().bludSendData(state.keyInfos.value.bluetooth!.bluetoothDeviceName!, (BluetoothConnectionState deviceConnectionState) async {
|
||
if (deviceConnectionState == BluetoothConnectionState.connected) {
|
||
IoSenderManage.senderOpenLock(
|
||
keyID: BlueManage().connectDeviceName,
|
||
userID: await Storage.getUid(),
|
||
openMode: state.openDoorModel,
|
||
openTime: getNetTime(),
|
||
onlineToken: state.lockNetToken,
|
||
token: getTokenList,
|
||
needAuthor: 1,
|
||
signKey: signKeyDataList,
|
||
privateKey: getPrivateKeyList,
|
||
);
|
||
} else if (deviceConnectionState ==
|
||
BluetoothConnectionState.disconnected) {
|
||
cancelBlueConnetctToastTimer();
|
||
if (state.ifCurrentScreen.value == true) {
|
||
showBlueConnetctToast();
|
||
}
|
||
|
||
state.openLockBtnState.value = 0;
|
||
eventBus.fire(RefreshLockDetailInfoDataEvent());
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
// 查询事件记录(时间查询)
|
||
Future<void> senderReferEventRecordTime() async {
|
||
showBlueConnetctToastTimer(isShowBlueConnetctToast: false, action: () {
|
||
BlueManage().disconnect();
|
||
});
|
||
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
|
||
if (connectionState == BluetoothConnectionState.connected) {
|
||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||
|
||
var token = await Storage.getStringList(saveBlueToken);
|
||
List<int> getTokenList = changeStringListToIntList(token!);
|
||
|
||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||
List<int> getPublicKeyList = changeStringListToIntList(publicKey!);
|
||
|
||
IoSenderManage.senderReferEventRecordTimeCommand(
|
||
keyID: BlueManage().connectDeviceName,
|
||
userID: await Storage.getUid(),
|
||
logsCount: state.logCountPage,
|
||
// time:DateTime.now().millisecondsSinceEpoch~/1000,
|
||
time: state.operateDate,
|
||
token: getTokenList,
|
||
needAuthor: 1,
|
||
publicKey: getPublicKeyList,
|
||
privateKey: getPrivateKeyList,
|
||
);
|
||
}
|
||
});
|
||
}
|
||
|
||
// 从服务器获取锁的时间 开锁时传入
|
||
void getServerDatetime() async{
|
||
var entity = await ApiRepository.to.getServerDatetimeData(
|
||
lockId: state.keyInfos.value.lockId.toString(),
|
||
);
|
||
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 getNetTime(){
|
||
return DateTime.now().millisecondsSinceEpoch ~/ 1000 + state.differentialTime;
|
||
}
|
||
|
||
// 获取手机联网token,根据锁设置里面获取的开锁时是否联网来判断是否调用这个接口
|
||
void getLockNetToken() async {
|
||
LockNetTokenEntity entity = await ApiRepository.to.getLockNetToken(lockId: state.keyInfos.value.lockId.toString());
|
||
if (entity.errorCode!.codeIsSuccessful) {
|
||
state.lockNetToken = entity.data!.token!.toString();
|
||
AppLog.log("从服务器获取联网token:${state.lockNetToken}");
|
||
openDoorAction();
|
||
}else{
|
||
showToast("网络访问失败,请检查网络是否正常".tr, something: (){
|
||
state.openLockBtnState.value = 0;
|
||
state.animationController!.forward();
|
||
cancelBlueConnetctToastTimer();
|
||
state.lockNetToken = "0";
|
||
openDoorAction();
|
||
});
|
||
}
|
||
}
|
||
|
||
//电量更新请求
|
||
Future<void> uploadElectricQuantityRequest() async {
|
||
KeyOperationRecordEntity entity = await ApiRepository.to.uploadElectricQuantity(
|
||
electricQuantity:state.electricQuantity.value.toString(),
|
||
electricQuantityStandby: state.electricQuantityStandby.value.toString(),
|
||
lockId: state.keyInfos.value.lockId.toString()
|
||
);
|
||
if (entity.errorCode!.codeIsSuccessful) {
|
||
SchedulerBinding.instance.addPostFrameCallback((_) {
|
||
eventBus.fire(RefreshLockListInfoDataEvent());
|
||
});
|
||
}
|
||
}
|
||
|
||
// 普通用户接收电子钥匙之后 更新锁用户NO
|
||
// void _updateLockUserNo() async {
|
||
// LockNetTokenEntity entity = await ApiRepository.to.updateLockUserNo(
|
||
// keyId: state.keyInfos.value.keyId.toString(),
|
||
// lockUserNo: state.lockUserNo.toString()
|
||
// );
|
||
// if (entity.errorCode!.codeIsSuccessful) {
|
||
// eventBus.fire(RefreshLockDetailInfoDataEvent());
|
||
// SchedulerBinding.instance.addPostFrameCallback((_) {
|
||
// eventBus.fire(RefreshLockListInfoDataEvent());
|
||
// });
|
||
// if (state.isOpenLockNeedOnline.value == 0) {
|
||
// openDoorAction();
|
||
// } else {
|
||
// getLockNetToken();
|
||
// }
|
||
// }
|
||
// }
|
||
|
||
// 查询锁记录最后时间
|
||
void getLockRecordLastUploadDataTime() async {
|
||
LockOperatingRecordGetLastRecordTimeEntity entity = await ApiRepository.to
|
||
.getLockRecordLastUploadDataTime(
|
||
lockId: state.keyInfos.value.lockId.toString());
|
||
if (entity.errorCode!.codeIsSuccessful) {
|
||
state.operateDate = entity.data!.operateDate! ~/ 1000;
|
||
senderReferEventRecordTime();
|
||
}
|
||
}
|
||
|
||
// 操作记录上传
|
||
void lockRecordUploadData(List list) async {
|
||
KeyOperationRecordEntity entity = await ApiRepository.to
|
||
.lockRecordUploadData(
|
||
lockId: state.keyInfos.value.lockId.toString(), records: list);
|
||
if (entity.errorCode!.codeIsSuccessful) {
|
||
// mockNetworkDataRequest();
|
||
AppLog.log("state.keyInfos.value.keyType:${state.keyInfos.value.keyType}");
|
||
if(state.keyInfos.value.keyType == XSConstantMacro.keyTypeOnce){
|
||
// 单次删除
|
||
deletKeyData();
|
||
}
|
||
}
|
||
}
|
||
|
||
// 普通用户或者授权管理员删除钥匙
|
||
void deletKeyData() async {
|
||
var entity = await ApiRepository.to.deleteElectronicKey(
|
||
keyId:state.keyInfos.value.keyId.toString(),
|
||
includeUnderlings: 0
|
||
);
|
||
if (entity.errorCode!.codeIsSuccessful) {
|
||
BlueManage().connectDeviceMacAddress = "";
|
||
SchedulerBinding.instance.addPostFrameCallback((_) {
|
||
eventBus.fire(RefreshLockListInfoDataEvent());
|
||
});
|
||
Get.back();
|
||
}
|
||
}
|
||
|
||
|
||
/// 锁设置里面开启关闭考勤刷新锁详情
|
||
void initLockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceAction() {
|
||
// 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus
|
||
state.lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent =
|
||
eventBus.on<LockSetChangeSetRefreshLockDetailWithType>().listen((event) {
|
||
if (event.type == 0) {
|
||
// 0考勤
|
||
state.isAttendance.value = int.parse(event.setResult);
|
||
state.keyInfos.value.lockSetting!.attendance = int.parse(event.setResult);
|
||
} else if (event.type == 1) {
|
||
// 1 开锁时是否需联网
|
||
state.isOpenLockNeedOnline.value = int.parse(event.setResult);
|
||
state.keyInfos.value.lockSetting!.appUnlockOnline = int.parse(event.setResult);
|
||
state.lockNetToken = "";// 改变开锁时是否联网状态的时候清空token
|
||
} else if (event.type == 2) {
|
||
// 2 常开模式
|
||
state.isOpenPassageMode.value = int.parse(event.setResult);
|
||
state.keyInfos.value.passageMode = int.parse(event.setResult);
|
||
} else if (event.type == 3) {
|
||
// 3 修改了锁名字
|
||
state.lockAlias.value = event.setResult;
|
||
state.keyInfos.value.lockAlias = event.setResult;
|
||
Storage.setString(saveLockAlias, state.lockAlias.value);
|
||
} else if (event.type == 4) {
|
||
// 4 更新了电量
|
||
state.electricQuantity.value = int.parse(event.setResult);
|
||
state.keyInfos.value.electricQuantity = int.parse(event.setResult);
|
||
} else if (event.type == 5) {
|
||
// 5 远程开锁
|
||
state.keyInfos.value.lockSetting!.remoteUnlock =
|
||
int.parse(event.setResult);
|
||
}
|
||
CommonDataManage().currentKeyInfo = state.keyInfos.value;
|
||
eventBus.fire(RefreshLockDetailInfoDataEvent());
|
||
});
|
||
}
|
||
|
||
String getKeyStatusTextAndShow() {
|
||
String text = "";
|
||
if (state.keyInfos.value.keyStatus ==
|
||
XSConstantMacro.keyStatusWaitIneffective ||
|
||
state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusFrozen ||
|
||
state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusExpired ||
|
||
state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusDeleted ||
|
||
state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusReset) {
|
||
text = "${"你的钥匙".tr}${XSConstantMacro.getKeyStatusStr(state.keyInfos.value.keyStatus!)}";
|
||
} else {
|
||
text = state.isOpenPassageMode.value == 1
|
||
? "常开模式启动!长按闭锁".tr
|
||
: TranslationLoader.lanKeys!.clickUnlockAndHoldDownClose!.tr;
|
||
}
|
||
return text;
|
||
}
|
||
|
||
String getCurrentFormattedTime() {
|
||
// 获取当前时间
|
||
DateTime now = DateTime.now();
|
||
// 格式化日期和时间
|
||
String formattedTime = DateFormat('MM/dd HH:mm').format(now);
|
||
return formattedTime;
|
||
}
|
||
|
||
@override
|
||
Future<void> onReady() async {
|
||
super.onReady();
|
||
getServerDatetime();
|
||
|
||
await PermissionDialog.request(Permission.location);
|
||
await PermissionDialog.requestBluetooth();
|
||
}
|
||
|
||
}
|