Merge branch 'release' of gitee.com:starlock-cn/app-starlock into release
This commit is contained in:
commit
fdc183def9
@ -189,6 +189,8 @@ class BlueManage {
|
|||||||
FlutterBluePlus.startScan(
|
FlutterBluePlus.startScan(
|
||||||
continuousDivisor: divisor,
|
continuousDivisor: divisor,
|
||||||
continuousUpdates: true,
|
continuousUpdates: true,
|
||||||
|
// withServiceData:[ServiceDataFilter()],
|
||||||
|
withKeywords: <String>[deviceName],
|
||||||
timeout: Duration(seconds: timeout));
|
timeout: Duration(seconds: timeout));
|
||||||
final Completer<dynamic> completer = Completer<dynamic>();
|
final Completer<dynamic> completer = Completer<dynamic>();
|
||||||
final StreamSubscription<List<ScanResult>> subscription =
|
final StreamSubscription<List<ScanResult>> subscription =
|
||||||
@ -374,9 +376,7 @@ class BlueManage {
|
|||||||
connectDeviceName = deviceName;
|
connectDeviceName = deviceName;
|
||||||
final List<ScanResult> devicesList = scanDevices;
|
final List<ScanResult> devicesList = scanDevices;
|
||||||
|
|
||||||
final bool isExistDevice = scanDevices.any((ScanResult element) =>
|
final bool isExistDevice = isExistScanDevices(connectDeviceName);
|
||||||
element.device.platformName == connectDeviceName ||
|
|
||||||
element.advertisementData.advName == connectDeviceName);
|
|
||||||
|
|
||||||
if (isAddEquipment == false && isExistDevice == false) {
|
if (isAddEquipment == false && isExistDevice == false) {
|
||||||
//取消缓存直接使用,存在配对场景设备信息会更变
|
//取消缓存直接使用,存在配对场景设备信息会更变
|
||||||
@ -390,6 +390,15 @@ class BlueManage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//查找缓存里面是否有设备
|
||||||
|
bool isExistScanDevices(String connectDeviceName){
|
||||||
|
final bool isExistDevice = scanDevices.any((ScanResult element) =>
|
||||||
|
element.device.platformName == connectDeviceName ||
|
||||||
|
element.advertisementData.advName == connectDeviceName);
|
||||||
|
return isExistDevice;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Future<void> _connectDevice(List<ScanResult> devicesList, String deviceName,
|
Future<void> _connectDevice(List<ScanResult> devicesList, String deviceName,
|
||||||
ConnectStateCallBack connectStateCallBack,
|
ConnectStateCallBack connectStateCallBack,
|
||||||
{bool isAddEquipment = false}) async {
|
{bool isAddEquipment = false}) async {
|
||||||
|
|||||||
@ -37,17 +37,17 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
void initReplySubscription() {
|
void initReplySubscription() {
|
||||||
state.replySubscription =
|
state.replySubscription =
|
||||||
EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
|
EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
|
||||||
// 开门
|
// 开门
|
||||||
if (reply is OpenDoorReply && state.ifCurrentScreen.value == true) {
|
if (reply is OpenDoorReply && state.ifCurrentScreen.value == true) {
|
||||||
_replyOpenLock(reply);
|
_replyOpenLock(reply);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 开完锁之后上传记录
|
// 开完锁之后上传记录
|
||||||
if (reply is SenderReferEventRecordTimeReply &&
|
if (reply is SenderReferEventRecordTimeReply &&
|
||||||
state.ifCurrentScreen.value == true) {
|
state.ifCurrentScreen.value == true) {
|
||||||
_replyReferEventRecordTime(reply);
|
_replyReferEventRecordTime(reply);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 开门数据解析
|
// 开门数据解析
|
||||||
@ -56,8 +56,8 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
|
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case 0x00:
|
case 0x00:
|
||||||
//成功
|
//成功
|
||||||
// _showFullScreenOverlay(Get.context!);
|
// _showFullScreenOverlay(Get.context!);
|
||||||
cancelBlueConnetctToastTimer();
|
cancelBlueConnetctToastTimer();
|
||||||
|
|
||||||
state.iSClosedUnlockSuccessfulPopup.value = true;
|
state.iSClosedUnlockSuccessfulPopup.value = true;
|
||||||
@ -65,10 +65,10 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
// 如果没有点击关闭弹窗,3秒后自动关闭
|
// 如果没有点击关闭弹窗,3秒后自动关闭
|
||||||
state.closedUnlockSuccessfulTimer =
|
state.closedUnlockSuccessfulTimer =
|
||||||
Timer.periodic(3.seconds, (Timer timer) {
|
Timer.periodic(3.seconds, (Timer timer) {
|
||||||
state.iSClosedUnlockSuccessfulPopup.value = false;
|
state.iSClosedUnlockSuccessfulPopup.value = false;
|
||||||
timer.cancel();
|
timer.cancel();
|
||||||
eventBus.fire(RefreshLockDetailInfoDataEvent());
|
eventBus.fire(RefreshLockDetailInfoDataEvent());
|
||||||
});
|
});
|
||||||
|
|
||||||
// 电量
|
// 电量
|
||||||
final int power = reply.data[7];
|
final int power = reply.data[7];
|
||||||
@ -86,14 +86,14 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
resetOpenDoorState();
|
resetOpenDoorState();
|
||||||
break;
|
break;
|
||||||
case 0x06:
|
case 0x06:
|
||||||
//无权限
|
//无权限
|
||||||
final List<String>? privateKey =
|
final List<String>? privateKey =
|
||||||
await Storage.getStringList(saveBluePrivateKey);
|
await Storage.getStringList(saveBluePrivateKey);
|
||||||
final List<int> getPrivateKeyList =
|
final List<int> getPrivateKeyList =
|
||||||
changeStringListToIntList(privateKey!);
|
changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
final List<String>? signKey =
|
final List<String>? signKey =
|
||||||
await Storage.getStringList(saveBlueSignKey);
|
await Storage.getStringList(saveBlueSignKey);
|
||||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
final List<int> tokenData = reply.data.sublist(2, 6);
|
final List<int> tokenData = reply.data.sublist(2, 6);
|
||||||
@ -113,14 +113,14 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case 0x16:
|
case 0x16:
|
||||||
// 正在开锁中...
|
// 正在开锁中...
|
||||||
resetOpenDoorState();
|
resetOpenDoorState();
|
||||||
showToast('正在开锁中...'.tr, something: () {
|
showToast('正在开锁中...'.tr, something: () {
|
||||||
cancelBlueConnetctToastTimer();
|
cancelBlueConnetctToastTimer();
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 0x0d:
|
case 0x0d:
|
||||||
// 钥匙无效
|
// 钥匙无效
|
||||||
showToast('钥匙无效'.tr);
|
showToast('钥匙无效'.tr);
|
||||||
// state.animationController!.stop();
|
// state.animationController!.stop();
|
||||||
resetOpenDoorState();
|
resetOpenDoorState();
|
||||||
@ -128,7 +128,7 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
BlueManage().disconnect();
|
BlueManage().disconnect();
|
||||||
break;
|
break;
|
||||||
case 0x0b:
|
case 0x0b:
|
||||||
// 钥匙无效
|
// 钥匙无效
|
||||||
showToast('钥匙过期'.tr);
|
showToast('钥匙过期'.tr);
|
||||||
resetOpenDoorState();
|
resetOpenDoorState();
|
||||||
|
|
||||||
@ -136,7 +136,7 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
BlueManage().disconnect();
|
BlueManage().disconnect();
|
||||||
break;
|
break;
|
||||||
case 0x0a:
|
case 0x0a:
|
||||||
// 钥匙不存在
|
// 钥匙不存在
|
||||||
showToast('钥匙不存在');
|
showToast('钥匙不存在');
|
||||||
resetOpenDoorState();
|
resetOpenDoorState();
|
||||||
|
|
||||||
@ -144,7 +144,7 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
BlueManage().disconnect();
|
BlueManage().disconnect();
|
||||||
break;
|
break;
|
||||||
case 0x0c:
|
case 0x0c:
|
||||||
// 钥匙数量已到上限
|
// 钥匙数量已到上限
|
||||||
showToast('钥匙数量已到上限');
|
showToast('钥匙数量已到上限');
|
||||||
resetOpenDoorState();
|
resetOpenDoorState();
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
BlueManage().disconnect();
|
BlueManage().disconnect();
|
||||||
break;
|
break;
|
||||||
case 0x0e:
|
case 0x0e:
|
||||||
// 钥匙已存在
|
// 钥匙已存在
|
||||||
showToast('钥匙已存在');
|
showToast('钥匙已存在');
|
||||||
resetOpenDoorState();
|
resetOpenDoorState();
|
||||||
|
|
||||||
@ -160,7 +160,7 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
BlueManage().disconnect();
|
BlueManage().disconnect();
|
||||||
break;
|
break;
|
||||||
case 0x0f:
|
case 0x0f:
|
||||||
// 用户已存在
|
// 用户已存在
|
||||||
showToast('用户已存在');
|
showToast('用户已存在');
|
||||||
resetOpenDoorState();
|
resetOpenDoorState();
|
||||||
|
|
||||||
@ -168,7 +168,7 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
BlueManage().disconnect();
|
BlueManage().disconnect();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
//失败
|
//失败
|
||||||
AppLog.log('开锁失败');
|
AppLog.log('开锁失败');
|
||||||
// state.animationController!.stop();
|
// state.animationController!.stop();
|
||||||
resetOpenDoorState();
|
resetOpenDoorState();
|
||||||
@ -190,67 +190,67 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
Future<void> _replyReferEventRecordTime(Reply reply) async {
|
Future<void> _replyReferEventRecordTime(Reply reply) async {
|
||||||
final int status = reply.data[2];
|
final int status = reply.data[2];
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case 0x00:
|
case 0x00:
|
||||||
//成功
|
//成功
|
||||||
final int dataLength = (reply.data[5] << 8) + reply.data[6];
|
final int dataLength = (reply.data[5] << 8) + reply.data[6];
|
||||||
// AppLog.log("dataLength:$dataLength");
|
// AppLog.log("dataLength:$dataLength");
|
||||||
if (dataLength > 0) {
|
if (dataLength > 0) {
|
||||||
reply.data.removeRange(0, 7);
|
reply.data.removeRange(0, 7);
|
||||||
// 把得到的数据按17个字节分割成数组 然后塞进一个新的数组里面
|
// 把得到的数据按17个字节分割成数组 然后塞进一个新的数组里面
|
||||||
if (reply.data.length < 17) {
|
if (reply.data.length < 17) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final List<List<int>> getList = splitList(reply.data, 17);
|
final List<List<int>> getList = splitList(reply.data, 17);
|
||||||
// AppLog.log("getList:$getList");
|
// AppLog.log("getList:$getList");
|
||||||
final List uploadList = [];
|
final List uploadList = [];
|
||||||
for (int i = 0; i < getList.length; i++) {
|
for (int i = 0; i < getList.length; i++) {
|
||||||
final List<int> indexList = getList[i];
|
final List<int> indexList = getList[i];
|
||||||
// AppLog.log("indexList:$indexList");
|
// AppLog.log("indexList:$indexList");
|
||||||
final Map indexMap = {};
|
final Map indexMap = {};
|
||||||
indexMap['type'] = indexList[0].toString();
|
indexMap['type'] = indexList[0].toString();
|
||||||
int operateDate = 0;
|
int operateDate = 0;
|
||||||
if (indexList[0] == 2) {
|
if (indexList[0] == 2) {
|
||||||
final List<int> passwordData = reply.data.sublist(7, 17);
|
final List<int> passwordData = reply.data.sublist(7, 17);
|
||||||
final String password = utf8String(passwordData);
|
final String password = utf8String(passwordData);
|
||||||
indexMap['user'] = password.toString();
|
indexMap['user'] = password.toString();
|
||||||
} else {
|
} else {
|
||||||
final int userNo = (indexList[1] * 256) + indexList[2];
|
final int userNo = (indexList[1] * 256) + indexList[2];
|
||||||
indexMap['user'] = userNo.toString();
|
indexMap['user'] = userNo.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
indexMap['success'] = '1';
|
indexMap['success'] = '1';
|
||||||
|
|
||||||
final int time = ((0xff & indexList[(3)]) << 24 |
|
final int time = ((0xff & indexList[(3)]) << 24 |
|
||||||
(0xff & indexList[4]) << 16 |
|
(0xff & indexList[4]) << 16 |
|
||||||
(0xff & indexList[5]) << 8 |
|
(0xff & indexList[5]) << 8 |
|
||||||
(0xFF & indexList[6]));
|
(0xFF & indexList[6]));
|
||||||
operateDate = time * 1000;
|
operateDate = time * 1000;
|
||||||
indexMap['date'] = '$operateDate';
|
indexMap['date'] = '$operateDate';
|
||||||
uploadList.add(indexMap);
|
uploadList.add(indexMap);
|
||||||
|
|
||||||
if (i == getList.length - 1) {
|
if (i == getList.length - 1) {
|
||||||
//设置最后的时间戳
|
//设置最后的时间戳
|
||||||
state.operateDate = operateDate;
|
state.operateDate = operateDate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lockRecordUploadData(uploadList);
|
lockRecordUploadData(uploadList);
|
||||||
|
|
||||||
if (dataLength == state.logCountPage) {
|
if (dataLength == state.logCountPage) {
|
||||||
senderReferEventRecordTime();
|
senderReferEventRecordTime();
|
||||||
} else {
|
} else {
|
||||||
await BlueManage().disconnect();
|
await BlueManage().disconnect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x06:
|
case 0x06:
|
||||||
//无权限
|
//无权限
|
||||||
BlueManage().disconnect();
|
BlueManage().disconnect();
|
||||||
cancelBlueConnetctToastTimer();
|
cancelBlueConnetctToastTimer();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
BlueManage().disconnect();
|
BlueManage().disconnect();
|
||||||
cancelBlueConnetctToastTimer();
|
cancelBlueConnetctToastTimer();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,7 +262,7 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
BlueManage().disconnect();
|
BlueManage().disconnect();
|
||||||
});
|
});
|
||||||
final List<String>? privateKey =
|
final List<String>? privateKey =
|
||||||
await Storage.getStringList(saveBluePrivateKey);
|
await Storage.getStringList(saveBluePrivateKey);
|
||||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
@ -274,28 +274,28 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
BlueManage()
|
BlueManage()
|
||||||
.bludSendData(state.keyInfos.value.bluetooth!.bluetoothDeviceName!,
|
.bludSendData(state.keyInfos.value.bluetooth!.bluetoothDeviceName!,
|
||||||
(BluetoothConnectionState deviceConnectionState) async {
|
(BluetoothConnectionState deviceConnectionState) async {
|
||||||
if (deviceConnectionState == BluetoothConnectionState.connected) {
|
if (deviceConnectionState == BluetoothConnectionState.connected) {
|
||||||
IoSenderManage.senderOpenLock(
|
IoSenderManage.senderOpenLock(
|
||||||
keyID: BlueManage().connectDeviceName,
|
keyID: BlueManage().connectDeviceName,
|
||||||
userID: await Storage.getUid(),
|
userID: await Storage.getUid(),
|
||||||
openMode: state.openDoorModel,
|
openMode: state.openDoorModel,
|
||||||
openTime: getUTCNetTime(),
|
openTime: getUTCNetTime(),
|
||||||
onlineToken: state.lockNetToken,
|
onlineToken: state.lockNetToken,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
needAuthor: 1,
|
needAuthor: 1,
|
||||||
signKey: signKeyDataList,
|
signKey: signKeyDataList,
|
||||||
privateKey: getPrivateKeyList,
|
privateKey: getPrivateKeyList,
|
||||||
);
|
);
|
||||||
} else if (deviceConnectionState ==
|
} else if (deviceConnectionState ==
|
||||||
BluetoothConnectionState.disconnected) {
|
BluetoothConnectionState.disconnected) {
|
||||||
cancelBlueConnetctToastTimer();
|
cancelBlueConnetctToastTimer();
|
||||||
if (state.ifCurrentScreen.value == true) {
|
if (state.ifCurrentScreen.value == true) {
|
||||||
showBlueConnetctToast();
|
showBlueConnetctToast();
|
||||||
}
|
}
|
||||||
|
|
||||||
resetOpenDoorState();
|
resetOpenDoorState();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询事件记录(时间查询)
|
// 查询事件记录(时间查询)
|
||||||
@ -307,49 +307,54 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
BlueManage().disconnect();
|
BlueManage().disconnect();
|
||||||
});
|
});
|
||||||
BlueManage().bludSendData(BlueManage().connectDeviceName,
|
BlueManage().bludSendData(BlueManage().connectDeviceName,
|
||||||
(BluetoothConnectionState connectionState) async {
|
(BluetoothConnectionState connectionState) async {
|
||||||
if (connectionState == BluetoothConnectionState.connected) {
|
if (connectionState == BluetoothConnectionState.connected) {
|
||||||
final List<String>? privateKey =
|
final List<String>? privateKey =
|
||||||
await Storage.getStringList(saveBluePrivateKey);
|
await Storage.getStringList(saveBluePrivateKey);
|
||||||
final List<int> getPrivateKeyList =
|
final List<int> getPrivateKeyList =
|
||||||
changeStringListToIntList(privateKey!);
|
changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
final List<String>? token = await Storage.getStringList(saveBlueToken);
|
final List<String>? token = await Storage.getStringList(
|
||||||
final List<int> getTokenList = changeStringListToIntList(token!);
|
saveBlueToken);
|
||||||
|
final List<int> getTokenList = changeStringListToIntList(token!);
|
||||||
|
|
||||||
final List<String>? publicKey =
|
final List<String>? publicKey =
|
||||||
await Storage.getStringList(saveBluePublicKey);
|
await Storage.getStringList(saveBluePublicKey);
|
||||||
final List<int> getPublicKeyList =
|
final List<int> getPublicKeyList =
|
||||||
changeStringListToIntList(publicKey!);
|
changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
IoSenderManage.senderReferEventRecordTimeCommand(
|
IoSenderManage.senderReferEventRecordTimeCommand(
|
||||||
keyID: BlueManage().connectDeviceName,
|
keyID: BlueManage().connectDeviceName,
|
||||||
userID: await Storage.getUid(),
|
userID: await Storage.getUid(),
|
||||||
logsCount: state.logCountPage,
|
logsCount: state.logCountPage,
|
||||||
// time:DateTime.now().millisecondsSinceEpoch~/1000,
|
// time:DateTime.now().millisecondsSinceEpoch~/1000,
|
||||||
time: state.operateDate,
|
time: state.operateDate,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
needAuthor: 1,
|
needAuthor: 1,
|
||||||
publicKey: getPublicKeyList,
|
publicKey: getPublicKeyList,
|
||||||
privateKey: getPrivateKeyList,
|
privateKey: getPrivateKeyList,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 从服务器获取锁的时间 开锁时传入
|
// 从服务器获取锁的时间 开锁时传入
|
||||||
void getServerDatetime() async {
|
void getServerDatetime() async {
|
||||||
final GetServerDatetimeEntity entity =
|
final GetServerDatetimeEntity entity =
|
||||||
await ApiRepository.to.getServerDatetimeData();
|
await ApiRepository.to.getServerDatetimeData();
|
||||||
if (entity.errorCode!.codeIsSuccessful) {
|
if (entity.errorCode!.codeIsSuccessful) {
|
||||||
state.differentialTime = entity.data!.date! ~/ 1000 -
|
state.differentialTime = entity.data!.date! ~/ 1000 -
|
||||||
DateTime.now().millisecondsSinceEpoch ~/ 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}");
|
// AppLog.log("entity.data!.date! ~/ 1000:${entity.data!.date! ~/ 1000} DateTime.now().millisecondsSinceEpoch ~/ 1000:${DateTime.now().millisecondsSinceEpoch ~/ 1000} 服务器时间差:${state.differentialTime}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int getUTCNetTime() {
|
int getUTCNetTime() {
|
||||||
return DateTime.now().millisecondsSinceEpoch ~/ 1000 +
|
return DateTime
|
||||||
|
.now()
|
||||||
|
.millisecondsSinceEpoch ~/ 1000 +
|
||||||
state.differentialTime;
|
state.differentialTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,11 +380,11 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
Future<void> uploadElectricQuantityRequest() async {
|
Future<void> uploadElectricQuantityRequest() async {
|
||||||
final KeyOperationRecordEntity entity = await ApiRepository.to
|
final KeyOperationRecordEntity entity = await ApiRepository.to
|
||||||
.uploadElectricQuantity(
|
.uploadElectricQuantity(
|
||||||
electricQuantity: state.electricQuantity.value.toString(),
|
electricQuantity: state.electricQuantity.value.toString(),
|
||||||
electricQuantityStandby:
|
electricQuantityStandby:
|
||||||
state.electricQuantityStandby.value.toString(),
|
state.electricQuantityStandby.value.toString(),
|
||||||
lockId: state.keyInfos.value.lockId.toString(),
|
lockId: state.keyInfos.value.lockId.toString(),
|
||||||
isUnShowLoading: true);
|
isUnShowLoading: true);
|
||||||
if (entity.errorCode!.codeIsSuccessful) {
|
if (entity.errorCode!.codeIsSuccessful) {
|
||||||
SchedulerBinding.instance.addPostFrameCallback((_) {
|
SchedulerBinding.instance.addPostFrameCallback((_) {
|
||||||
eventBus.fire(RefreshLockListInfoDataEvent(isUnShowLoading: true));
|
eventBus.fire(RefreshLockListInfoDataEvent(isUnShowLoading: true));
|
||||||
@ -390,8 +395,8 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
// 查询锁记录最后时间
|
// 查询锁记录最后时间
|
||||||
void getLockRecordLastUploadDataTime() async {
|
void getLockRecordLastUploadDataTime() async {
|
||||||
final LockOperatingRecordGetLastRecordTimeEntity entity =
|
final LockOperatingRecordGetLastRecordTimeEntity entity =
|
||||||
await ApiRepository.to.getLockRecordLastUploadDataTime(
|
await ApiRepository.to.getLockRecordLastUploadDataTime(
|
||||||
lockId: state.keyInfos.value.lockId.toString());
|
lockId: state.keyInfos.value.lockId.toString());
|
||||||
if (entity.errorCode!.codeIsSuccessful) {
|
if (entity.errorCode!.codeIsSuccessful) {
|
||||||
state.operateDate = entity.data!.operateDate! ~/ 1000;
|
state.operateDate = entity.data!.operateDate! ~/ 1000;
|
||||||
senderReferEventRecordTime();
|
senderReferEventRecordTime();
|
||||||
@ -402,7 +407,7 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
Future<void> lockRecordUploadData(List list) async {
|
Future<void> lockRecordUploadData(List list) async {
|
||||||
final KeyOperationRecordEntity entity = await ApiRepository.to
|
final KeyOperationRecordEntity entity = await ApiRepository.to
|
||||||
.lockRecordUploadData(
|
.lockRecordUploadData(
|
||||||
lockId: state.keyInfos.value.lockId.toString(), records: list);
|
lockId: state.keyInfos.value.lockId.toString(), records: list);
|
||||||
if (entity.errorCode!.codeIsSuccessful) {
|
if (entity.errorCode!.codeIsSuccessful) {
|
||||||
// mockNetworkDataRequest();
|
// mockNetworkDataRequest();
|
||||||
AppLog.log(
|
AppLog.log(
|
||||||
@ -418,7 +423,7 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
void deletKeyData() async {
|
void deletKeyData() async {
|
||||||
final ElectronicKeyListEntity entity = await ApiRepository.to
|
final ElectronicKeyListEntity entity = await ApiRepository.to
|
||||||
.deleteElectronicKey(
|
.deleteElectronicKey(
|
||||||
keyId: state.keyInfos.value.keyId.toString(), includeUnderlings: 0);
|
keyId: state.keyInfos.value.keyId.toString(), includeUnderlings: 0);
|
||||||
if (entity.errorCode!.codeIsSuccessful) {
|
if (entity.errorCode!.codeIsSuccessful) {
|
||||||
BlueManage().connectDeviceMacAddress = '';
|
BlueManage().connectDeviceMacAddress = '';
|
||||||
SchedulerBinding.instance.addPostFrameCallback((_) {
|
SchedulerBinding.instance.addPostFrameCallback((_) {
|
||||||
@ -435,50 +440,51 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
eventBus
|
eventBus
|
||||||
.on<LockSetChangeSetRefreshLockDetailWithType>()
|
.on<LockSetChangeSetRefreshLockDetailWithType>()
|
||||||
.listen((LockSetChangeSetRefreshLockDetailWithType event) {
|
.listen((LockSetChangeSetRefreshLockDetailWithType event) {
|
||||||
if (event.type == 0) {
|
if (event.type == 0) {
|
||||||
// 0考勤
|
// 0考勤
|
||||||
state.isAttendance.value = int.parse(event.setResult);
|
state.isAttendance.value = int.parse(event.setResult);
|
||||||
state.keyInfos.value.lockSetting!.attendance =
|
state.keyInfos.value.lockSetting!.attendance =
|
||||||
int.parse(event.setResult);
|
int.parse(event.setResult);
|
||||||
} else if (event.type == 1) {
|
} else if (event.type == 1) {
|
||||||
// 1 开锁时是否需联网
|
// 1 开锁时是否需联网
|
||||||
state.isOpenLockNeedOnline.value = int.parse(event.setResult);
|
state.isOpenLockNeedOnline.value = int.parse(event.setResult);
|
||||||
state.keyInfos.value.lockSetting!.appUnlockOnline =
|
state.keyInfos.value.lockSetting!.appUnlockOnline =
|
||||||
int.parse(event.setResult);
|
int.parse(event.setResult);
|
||||||
state.lockNetToken = ''; // 改变开锁时是否联网状态的时候清空token
|
state.lockNetToken = ''; // 改变开锁时是否联网状态的时候清空token
|
||||||
} else if (event.type == 2) {
|
} else if (event.type == 2) {
|
||||||
// 2 常开模式
|
// 2 常开模式
|
||||||
state.isOpenPassageMode.value = int.parse(event.setResult);
|
state.isOpenPassageMode.value = int.parse(event.setResult);
|
||||||
state.keyInfos.value.passageMode = int.parse(event.setResult);
|
state.keyInfos.value.passageMode = int.parse(event.setResult);
|
||||||
} else if (event.type == 3) {
|
} else if (event.type == 3) {
|
||||||
// 3 修改了锁名字
|
// 3 修改了锁名字
|
||||||
state.lockAlias.value = event.setResult;
|
state.lockAlias.value = event.setResult;
|
||||||
state.keyInfos.value.lockAlias = event.setResult;
|
state.keyInfos.value.lockAlias = event.setResult;
|
||||||
Storage.setString(saveLockAlias, state.lockAlias.value);
|
Storage.setString(saveLockAlias, state.lockAlias.value);
|
||||||
} else if (event.type == 4) {
|
} else if (event.type == 4) {
|
||||||
// 4 更新了电量
|
// 4 更新了电量
|
||||||
state.electricQuantity.value = int.parse(event.setResult);
|
state.electricQuantity.value = int.parse(event.setResult);
|
||||||
state.keyInfos.value.electricQuantity = int.parse(event.setResult);
|
state.keyInfos.value.electricQuantity = int.parse(event.setResult);
|
||||||
} else if (event.type == 5) {
|
} else if (event.type == 5) {
|
||||||
// 5 远程开锁
|
// 5 远程开锁
|
||||||
state.keyInfos.value.lockSetting!.remoteUnlock =
|
state.keyInfos.value.lockSetting!.remoteUnlock =
|
||||||
int.parse(event.setResult);
|
int.parse(event.setResult);
|
||||||
}
|
}
|
||||||
CommonDataManage().currentKeyInfo = state.keyInfos.value;
|
CommonDataManage().currentKeyInfo = state.keyInfos.value;
|
||||||
eventBus.fire(RefreshLockDetailInfoDataEvent());
|
eventBus.fire(RefreshLockDetailInfoDataEvent());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
String getKeyStatusTextAndShow() {
|
String getKeyStatusTextAndShow() {
|
||||||
String text = '';
|
String text = '';
|
||||||
if (state.keyInfos.value.keyStatus ==
|
if (state.keyInfos.value.keyStatus ==
|
||||||
XSConstantMacro.keyStatusWaitIneffective ||
|
XSConstantMacro.keyStatusWaitIneffective ||
|
||||||
state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusFrozen ||
|
state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusFrozen ||
|
||||||
state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusExpired ||
|
state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusExpired ||
|
||||||
state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusDeleted ||
|
state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusDeleted ||
|
||||||
state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusReset) {
|
state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusReset) {
|
||||||
text =
|
text =
|
||||||
"${"你的钥匙".tr}${XSConstantMacro.getKeyStatusStr(state.keyInfos.value.keyStatus!)}";
|
"${"你的钥匙".tr}${XSConstantMacro.getKeyStatusStr(
|
||||||
|
state.keyInfos.value.keyStatus!)}";
|
||||||
} else {
|
} else {
|
||||||
text = state.isOpenPassageMode.value == 1
|
text = state.isOpenPassageMode.value == 1
|
||||||
? '常开模式启动!长按闭锁'.tr
|
? '常开模式启动!长按闭锁'.tr
|
||||||
@ -510,5 +516,18 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
|
|
||||||
await PermissionDialog.request(Permission.location);
|
await PermissionDialog.request(Permission.location);
|
||||||
await PermissionDialog.requestBluetooth();
|
await PermissionDialog.requestBluetooth();
|
||||||
|
|
||||||
|
final String connectDeviceName = state.keyInfos.value.bluetooth!
|
||||||
|
.bluetoothDeviceName!;
|
||||||
|
if (!BlueManage().isExistScanDevices(connectDeviceName)) {
|
||||||
|
BlueManage().startScanSingle(
|
||||||
|
connectDeviceName, 15, (List<ScanResult> p0) => null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void onInit() {
|
||||||
|
super.onInit();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,8 +53,9 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
|||||||
# 1.0.43+2024052001:打包给公司测试
|
# 1.0.43+2024052001:打包给公司测试
|
||||||
# 1.0.44+2024052002:打包给公司测试
|
# 1.0.44+2024052002:打包给公司测试
|
||||||
# 1.0.45+2024052003:打包给公司测试
|
# 1.0.45+2024052003:打包给公司测试
|
||||||
|
# 1.0.46+2024052004:打包给公司测试
|
||||||
|
|
||||||
version: 1.0.45+2024052003
|
version: 1.0.46+2024052004
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=2.12.0 <3.0.0'
|
sdk: '>=2.12.0 <3.0.0'
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user