From 9e31a73a8114a907a8e37e834951ebda9ef875e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com> Date: Mon, 22 Apr 2024 11:16:37 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=8C=87=E7=BA=B9=E3=80=81=E5=8D=A1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/lib/blue/io_reply.dart | 8 +++ .../card/addICCard/addICCard_logic.dart | 52 +++++++++---------- .../card/cardDetail/cardDetail_logic.dart | 45 ++++++++-------- .../card/cardDetail/cardDetail_page.dart | 8 +-- .../card/cardDetail/cardDetail_state.dart | 11 ++-- .../addFingerprint/addFingerprint_logic.dart | 36 ++++++------- .../fingerprintDetail_logic.dart | 37 ++++++------- .../fingerprintDetail_page.dart | 8 +-- .../fingerprintDetail_state.dart | 4 +- .../addLock/nearbyLock/nearbyLock_logic.dart | 3 +- star_lock/lib/tools/dateTool.dart | 16 ++++++ 11 files changed, 127 insertions(+), 101 deletions(-) diff --git a/star_lock/lib/blue/io_reply.dart b/star_lock/lib/blue/io_reply.dart index 5680d810..8b7252bc 100644 --- a/star_lock/lib/blue/io_reply.dart +++ b/star_lock/lib/blue/io_reply.dart @@ -33,6 +33,7 @@ abstract class Reply{ case 0x03: // 网络中断 Get.log("${commandType!.typeName} 网络中断"); + showErrorMessage("网络中断"); break; case 0x04: // 用户未登记 @@ -42,18 +43,22 @@ abstract class Reply{ case 0x05: // 参数错误 Get.log("${commandType!.typeName}参数错误"); + showErrorMessage("参数错误"); break; case 0x06: // 需要鉴权 Get.log("${commandType!.typeName}需要鉴权"); + showErrorMessage("需要鉴权"); break; case 0x07: // 无权限 Get.log("${commandType!.typeName}无权限"); + showErrorMessage("无权限"); break; case 0x08: // 应答超时 Get.log("${commandType!.typeName}应答超时"); + showErrorMessage("应答超时"); break; case 0x09: // 权限校验错误 @@ -97,10 +102,12 @@ abstract class Reply{ case 0x11: // 无效指令 Get.log("${commandType!.typeName}无效指令"); + showErrorMessage("无效指令"); break; case 0x12: // 门锁时间异常 Get.log("${commandType!.typeName}门锁时间异常"); + showErrorMessage("门锁时间异常"); break; case 0x15: // APP(手机)未联网 @@ -115,6 +122,7 @@ abstract class Reply{ case 0xff: // 异常,未知错误 Get.log("${commandType!.typeName} 0xff"); + showErrorMessage("异常,未知错误"); break; default: //失败 diff --git a/star_lock/lib/main/lockDetail/card/addICCard/addICCard_logic.dart b/star_lock/lib/main/lockDetail/card/addICCard/addICCard_logic.dart index 5dae4cd0..fef8abf5 100644 --- a/star_lock/lib/main/lockDetail/card/addICCard/addICCard_logic.dart +++ b/star_lock/lib/main/lockDetail/card/addICCard/addICCard_logic.dart @@ -49,7 +49,7 @@ class AddICCardLogic extends BaseGetXController{ switch(status){ case 0x00: //成功 - // state.cardNumber.value = reply.data.last.toString(); + state.cardNumber.value = reply.data.last.toString(); cancelBlueConnetctToastTimer(); state.ifConnectScuess.value = true; break; @@ -64,14 +64,14 @@ class AddICCardLogic extends BaseGetXController{ // var publicKey = await Storage.getStringList(saveBluePublicKey); // List publicKeyDataList = changeStringListToIntList(publicKey!); - var weekStr = "00000000"; - for (var day in state.weekDay.value) { - int index = day % 7; // 将周日的索引转换为 0 - weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}'; - } - // 倒序 weekStr - weekStr = weekStr.split('').reversed.join(''); - int weekRound = int.parse(weekStr, radix: 2); + // var weekStr = "00000000"; + // for (var day in state.weekDay.value) { + // int index = day % 7; // 将周日的索引转换为 0 + // weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}'; + // } + // // 倒序 weekStr + // weekStr = weekStr.split('').reversed.join(''); + // int weekRound = int.parse(weekStr, radix: 2); // print("weekStrweekStrweekStr:$weekStr weekRound:$weekRound"); var token = reply.data.sublist(5, 9); @@ -85,7 +85,7 @@ class AddICCardLogic extends BaseGetXController{ useCountLimit:0xff, isForce:state.isCoerced.value == "1" ? 0 : 1, // 是否是胁迫 isRound:state.selectType.value == "2" ? 1: 0, // 是否是循环 - weekRound:weekRound, // 周循环 + weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 startDate: int.parse(state.startDate.value)~/1000, endDate: int.parse(state.endDate.value)~/1000, startTime:DateTool().dateToHNString(state.effectiveDateTime.value), @@ -110,11 +110,11 @@ class AddICCardLogic extends BaseGetXController{ switch(status){ case 0x00: //成功 - if(state.cardNumber.value == (reply.data[6]).toString()){ - return; - }else{ - state.cardNumber.value = (reply.data[6]).toString(); - } + // if(state.cardNumber.value == (reply.data[6]).toString()){ + // return; + // }else{ + // state.cardNumber.value = (reply.data[6]).toString(); + // } // if(state.isCoerced.value == "1"){ // 非胁迫 int addResultStatus = reply.data[5]; @@ -205,16 +205,16 @@ class AddICCardLogic extends BaseGetXController{ // var publicKey = await Storage.getStringList(saveBluePublicKey); // List publicKeyDataList = changeStringListToIntList(publicKey!); - var weekStr = "00000000"; - print("state.weekDay.value:${state.weekDay.value}"); - for (var day in state.weekDay.value) { - int index = day % 7; // 将周日的索引转换为 0 - weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}'; - } - // 倒序 weekStr - weekStr = weekStr.split('').reversed.join(''); - int weekRound = int.parse(weekStr, radix: 2); - // print("weekStrweekStrweekStr:$weekStr weekRound:$weekRound"); + // var weekStr = "00000000"; + // print("state.weekDay.value:${state.weekDay.value}"); + // for (var day in state.weekDay.value) { + // int index = day % 7; // 将周日的索引转换为 0 + // weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}'; + // } + // // 倒序 weekStr + // weekStr = weekStr.split('').reversed.join(''); + // int weekRound = int.parse(weekStr, radix: 2); + // // print("weekStrweekStrweekStr:$weekStr weekRound:$weekRound"); var signKey = await Storage.getStringList(saveBlueSignKey); List signKeyDataList = changeStringListToIntList(signKey!); @@ -233,7 +233,7 @@ class AddICCardLogic extends BaseGetXController{ useCountLimit:0xff, isForce:state.isCoerced.value == "2" ? 1 : 0, // 是否是胁迫 isRound:state.selectType.value == "2" ? 1: 0, // 是否是循环 - weekRound:weekRound, // 周循环 + weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 startDate: int.parse(state.startDate.value)~/1000, endDate: int.parse(state.endDate.value)~/1000, startTime:DateTool().dateToHNString(state.effectiveDateTime.value), diff --git a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart index 7c88484f..9fffec0a 100644 --- a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart +++ b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart @@ -56,25 +56,26 @@ class CardDetailLogic extends BaseGetXController{ // var publicKey = await Storage.getStringList(saveBluePublicKey); // List publicKeyDataList = changeStringListToIntList(publicKey!); - var token = await Storage.getStringList(saveBlueToken); - List getTokenList = changeStringListToIntList(token!); + var token = reply.data.sublist(5, 9); + var saveStrList = changeIntListToStringList(token); + Storage.setStringList(saveBlueToken, saveStrList); IoSenderManage.senderAddCardWithTimeCycleCoercionCommand( keyID:state.keyId.value.toString(), userID:await Storage.getUid(), cardNo:int.parse(state.typeNumber.value), - useCountLimit:0, - isForce:0, // 是否是胁迫 - isRound:0, // 是否是循环 - weekRound:0, // 周循环 - startDate: 0x11223344, - endDate: 0x11223344, - startTime:"0", - endTime:"0", + useCountLimit:0xff, + isForce:state.isStressFingerprint.value == true ? 1 : 0, // 是否是胁迫 + isRound:state.keyType.value == 4 ? 1: 0, // 是否是循环 + weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 + startDate: int.parse(state.startDate.value)~/1000, + endDate: int.parse(state.endDate.value)~/1000, + startTime:DateTool().dateToHNString(state.starTime.value), + endTime:DateTool().dateToHNString(state.endTime.value), needAuthor:1, signKey:signKeyDataList, privateKey:getPrivateKeyList, - token: getTokenList, + token: token, ); break; default: @@ -114,14 +115,14 @@ class CardDetailLogic extends BaseGetXController{ keyID:state.keyId.value.toString(), userID:await Storage.getUid(), cardNo:int.parse(state.typeNumber.value), - useCountLimit:0, - isForce:0, // 是否是胁迫 - isRound:0, // 是否是循环 - weekRound:0, // 周循环 - startDate: 0x11223344, - endDate: 0x11223344, - startTime:"0", - endTime:"0", + useCountLimit:0xff, + isForce:state.isStressFingerprint.value == true ? 1 : 0, // 是否是胁迫 + isRound:state.keyType.value == 4 ? 1: 0, // 是否是循环 + weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 + startDate: int.parse(state.startDate.value)~/1000, + endDate: int.parse(state.endDate.value)~/1000, + startTime:DateTool().dateToHNString(state.starTime.value), + endTime:DateTool().dateToHNString(state.endTime.value), needAuthor:1, signKey:signKeyDataList, privateKey:getPrivateKeyList, @@ -157,7 +158,7 @@ class CardDetailLogic extends BaseGetXController{ cardId: state.keyId.value.toString(), lockId: state.fingerprintItemData.value.lockId.toString(), weekDay: state.weekDay.value, - startDate: state.starDate.value, + startDate: state.startDate.value, endDate: state.endDate.value, isCoerced: state.isStressFingerprint.value ? "2" : "1", cardName: state.changeNameController.text, @@ -193,9 +194,9 @@ class CardDetailLogic extends BaseGetXController{ if(state.keyType.value == 1){ useDateStr = "永久".tr; }else if(state.keyType.value == 2){ - useDateStr = "${DateTool().dateToYMDHNString(state.starDate.value)}\n${DateTool().dateToYMDHNString(state.endDate.value)}"; + useDateStr = "${DateTool().dateToYMDHNString(state.startDate.value)}\n${DateTool().dateToYMDHNString(state.endDate.value)}"; } else if(state.keyType.value == 4){ - useDateStr = "${DateTool().dateToYMDString(state.starDate.value)}\n${DateTool().dateToYMDString(state.endDate.value)}"; + useDateStr = "${DateTool().dateToYMDString(state.startDate.value)}\n${DateTool().dateToYMDString(state.endDate.value)}"; } return useDateStr; } diff --git a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart index c1aaacfd..ca094afa 100644 --- a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart +++ b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart @@ -70,7 +70,7 @@ class _CardDetailPageState extends State with RouteAware { }); if(data != null) { setState(() { - state.starDate.value = data["beginTimeTimestamp"]; + state.startDate.value = data["beginTimeTimestamp"]; state.endDate.value = data["endTimeTimestamp"]; state.keyType.value = 2; }); @@ -83,7 +83,7 @@ class _CardDetailPageState extends State with RouteAware { }); if(data != null) { setState(() { - state.starDate.value = data["starDate"]; + state.startDate.value = data["starDate"]; state.endDate.value = data["endDate"]; state.starTime.value = data["starTime"]; state.endTime.value = data["endTime"]; @@ -107,7 +107,7 @@ class _CardDetailPageState extends State with RouteAware { }); if(data != null) { setState(() { - state.starDate.value = data["starDate"]; + state.startDate.value = data["starDate"]; state.endDate.value = data["endDate"]; state.starTime.value = data["starTime"]; state.endTime.value = data["endTime"]; @@ -128,7 +128,7 @@ class _CardDetailPageState extends State with RouteAware { }); if(data != null) { setState(() { - state.starDate.value = data["starDate"]; + state.startDate.value = data["starDate"]; state.endDate.value = data["endDate"]; state.starTime.value = data["starTime"]; state.endTime.value = data["endTime"]; diff --git a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_state.dart b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_state.dart index 289371f9..07f83e08 100644 --- a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_state.dart +++ b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_state.dart @@ -12,10 +12,12 @@ class CardDetailState{ var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 var sureBtnState = 0.obs;// 0普通状态(可用) 1连接中(不可用) + var isDeletCard = true.obs;// 是否删除卡 + var isStressFingerprint = false.obs;// 是否胁迫 final typeNumber = "".obs;// 指纹号 final typeName = "".obs;// 指纹名字 - var starDate = "".obs;// 开始时间 + var startDate = "".obs;// 开始时间 var endDate = "".obs;// 结束时间 var starTime = "".obs;// 生效时间 var endTime = "".obs;// 失效时间 @@ -25,7 +27,6 @@ class CardDetailState{ var addTime = 0.obs;// 添加时间 var keyId = 0.obs;// 卡id - final isStressFingerprint = false.obs; CardDetailState() { Map map = Get.arguments; if ((map["fingerprintItemData"] != null)) { @@ -34,15 +35,15 @@ class CardDetailState{ typeNumber.value = fingerprintItemData.value.cardNumber!; typeName.value = fingerprintItemData.value.cardName!; changeNameController.text = typeName.value; - starDate.value = fingerprintItemData.value.startDate!.toString(); + startDate.value = fingerprintItemData.value.startDate!.toString(); endDate.value = fingerprintItemData.value.endDate!.toString(); starTime.value = fingerprintItemData.value.startDate!.toString(); endTime.value = fingerprintItemData.value.endDate!.toString(); keyType.value = fingerprintItemData.value.cardType!; adder.value = fingerprintItemData.value.senderUsername!; addTime.value = fingerprintItemData.value.createDate!; - isStressFingerprint.value = - fingerprintItemData.value.isCoerced! == 2 ? true : false; + isStressFingerprint.value = fingerprintItemData.value.isCoerced! == 2 ? true : false; + weekDay.value = fingerprintItemData.value.weekDay!; } } diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart index 031be367..8dee9a66 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart @@ -81,14 +81,14 @@ class AddFingerprintLogic extends BaseGetXController { var saveStrList = changeIntListToStringList(token); Storage.setStringList(saveBlueToken, saveStrList); - var weekStr = "00000000"; - for (var day in state.weekDay.value) { - int index = day % 7; // 将周日的索引转换为 0 - weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}'; - } - // 倒序 weekStr - weekStr = weekStr.split('').reversed.join(''); - int weekRound = int.parse(weekStr, radix: 2); + // var weekStr = "00000000"; + // for (var day in state.weekDay.value) { + // int index = day % 7; // 将周日的索引转换为 0 + // weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}'; + // } + // // 倒序 weekStr + // weekStr = weekStr.split('').reversed.join(''); + // int weekRound = int.parse(weekStr, radix: 2); IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand( keyID:"1", @@ -97,7 +97,7 @@ class AddFingerprintLogic extends BaseGetXController { useCountLimit:0xff, isForce:state.isCoerced.value == "1" ? 1 : 0, // 是否是胁迫 isRound:state.selectType.value == "2" ? 1: 0, // 是否是循环 - weekRound:weekRound, // 周循环 + weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 startDate: int.parse(state.startDate.value)~/1000, endDate: int.parse(state.endDate.value)~/1000, startTime:DateTool().dateToHNString(state.effectiveDateTime.value), @@ -260,14 +260,14 @@ class AddFingerprintLogic extends BaseGetXController { // var publicKey = await Storage.getStringList(saveBluePublicKey); // List publicKeyDataList = changeStringListToIntList(publicKey!); - var weekStr = "00000000"; - for (var day in state.weekDay.value) { - int index = day % 7; // 将周日的索引转换为 0 - weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}'; - } - // 倒序 weekStr - weekStr = weekStr.split('').reversed.join(''); - int weekRound = int.parse(weekStr, radix: 2); + // var weekStr = "00000000"; + // for (var day in state.weekDay.value) { + // int index = day % 7; // 将周日的索引转换为 0 + // weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}'; + // } + // // 倒序 weekStr + // weekStr = weekStr.split('').reversed.join(''); + // int weekRound = int.parse(weekStr, radix: 2); // Get.log("weekStrweekStrweekStr:$weekStr weekRound:$weekRound"); var privateKey = await Storage.getStringList(saveBluePrivateKey); @@ -287,7 +287,7 @@ class AddFingerprintLogic extends BaseGetXController { useCountLimit:0xff, isForce:state.isCoerced.value == "2" ? 1 : 0, // 是否是胁迫 isRound:state.selectType.value == "2" ? 1: 0, // 是否是循环 - weekRound:weekRound, // 周循环 + weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 startDate: int.parse(state.startDate.value)~/1000, endDate: int.parse(state.endDate.value)~/1000, startTime:DateTool().dateToHNString(state.effectiveDateTime.value), diff --git a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_logic.dart b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_logic.dart index 0cb7ec9d..05383508 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_logic.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_logic.dart @@ -58,25 +58,26 @@ class FingerprintDetailLogic extends BaseGetXController{ // var publicKey = await Storage.getStringList(saveBluePublicKey); // List publicKeyDataList = changeStringListToIntList(publicKey!); - var token = await Storage.getStringList(saveBlueToken); - List getTokenList = changeStringListToIntList(token!); + var token = reply.data.sublist(5, 9); + var saveStrList = changeIntListToStringList(token); + Storage.setStringList(saveBlueToken, saveStrList); IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand( keyID:state.keyId.value.toString(), userID:await Storage.getUid(), fingerNo:int.parse(state.typeNumber.value), useCountLimit:0xff, - isForce:0, // 是否是胁迫 - isRound:0, // 是否是循环 - weekRound:0, // 周循环 - startDate: 0x11223344, - endDate: 0x11223344, - startTime:"0", - endTime:"0", + isForce:state.isStressFingerprint.value == true ? 1 : 0, // 是否是胁迫 + isRound:state.keyType.value == 4 ? 1: 0, // 是否是循环 + weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 + startDate: int.parse(state.startDate.value)~/1000, + endDate: int.parse(state.endDate.value)~/1000, + startTime:DateTool().dateToHNString(state.startDate.value), + endTime:DateTool().dateToHNString(state.endTime.value), needAuthor:1, signKey:signKeyDataList, privateKey:getPrivateKeyList, - token: getTokenList, + token: token, ); break; default: @@ -117,13 +118,13 @@ class FingerprintDetailLogic extends BaseGetXController{ userID:await Storage.getUid(), fingerNo:int.parse(state.typeNumber.value), useCountLimit:0xff, - isForce:0, // 是否是胁迫 - isRound:0, // 是否是循环 - weekRound:0, // 周循环 - startDate: 0x11223344, - endDate: 0x11223344, - startTime:"0", - endTime:"0", + isForce:state.isStressFingerprint.value == true ? 1 : 0, // 是否是胁迫 + isRound:state.keyType.value == 4 ? 1: 0, // 是否是循环 + weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 + startDate: int.parse(state.startDate.value)~/1000, + endDate: int.parse(state.endDate.value)~/1000, + startTime:DateTool().dateToHNString(state.startDate.value), + endTime:DateTool().dateToHNString(state.endTime.value), needAuthor:1, signKey:signKeyDataList, privateKey:getPrivateKeyList, @@ -179,7 +180,7 @@ class FingerprintDetailLogic extends BaseGetXController{ isCoerced: state.isStressFingerprint.value ? "2" : "1", fingerprintName: state.changeNameController.text, changeType: "1", - startTime: int.parse(state.starTime.value), + startTime: int.parse(state.startDate.value), endTime: int.parse(state.endTime.value), fingerprintType: state.fingerprintItemData.value.fingerprintType!, ); diff --git a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart index e67b80ff..202c4a19 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart @@ -93,7 +93,7 @@ class _FingerprintDetailPageState extends State with Rout state.starDate.value = data["starDate"]; state.endDate.value = data["endDate"]; - state.starTime.value = data["starTime"]; + state.startDate.value = data["starTime"]; state.endTime.value = data["endTime"]; state.weekDay.value = data["weekDay"]; @@ -117,7 +117,7 @@ class _FingerprintDetailPageState extends State with Rout setState(() { state.starDate.value = data["starDate"]; state.endDate.value = data["endDate"]; - state.starTime.value = data["starTime"]; + state.startDate.value = data["starTime"]; state.endTime.value = data["endTime"]; state.weekDay.value = data["weekDay"]; }); @@ -127,7 +127,7 @@ class _FingerprintDetailPageState extends State with Rout visible: state.keyType.value == 4 ? true : false, child: Obx(() => CommonItem( leftTitel: "有效时间".tr, - rightTitle: "${DateTool().dateToHNString(state.starTime.value)}-${DateTool().dateToHNString(state.endTime.value)}", + rightTitle: "${DateTool().dateToHNString(state.startDate.value)}-${DateTool().dateToHNString(state.endTime.value)}", isHaveDirection: true, action: () async { var data = await Get.toNamed(Routers.otherTypeKeyChangeValidityDatePage, arguments: { @@ -138,7 +138,7 @@ class _FingerprintDetailPageState extends State with Rout setState(() { state.starDate.value = data["starDate"]; state.endDate.value = data["endDate"]; - state.starTime.value = data["starTime"]; + state.startDate.value = data["starTime"]; state.endTime.value = data["endTime"]; state.weekDay.value = data["validityValue"]; }); diff --git a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_state.dart b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_state.dart index 86a9ca6f..e107590d 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_state.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_state.dart @@ -13,7 +13,7 @@ class FingerprintDetailState{ final typeName = "".obs;// 指纹名字 var starDate = "".obs;// 开始时间 var endDate = "".obs;// 结束时间 - var starTime = "".obs;// 生效时间 + var startDate = "".obs;// 生效时间 var endTime = "".obs;// 失效时间 final keyType = 0.obs;// 永久:1;限时2,单次3,循环:4 var weekDay = [].obs;// 有效日 @@ -35,7 +35,7 @@ class FingerprintDetailState{ changeNameController.text = typeName.value; starDate.value = fingerprintItemData.value.startDate!.toString(); endDate.value = fingerprintItemData.value.endDate!.toString(); - starTime.value = fingerprintItemData.value.startDate!.toString(); + startDate.value = fingerprintItemData.value.startDate!.toString(); endTime.value = fingerprintItemData.value.endDate!.toString(); keyType.value = fingerprintItemData.value.fingerprintType!; adder.value = fingerprintItemData.value.senderUsername!; diff --git a/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart b/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart index 62b075c4..1e8e64a1 100644 --- a/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart +++ b/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart @@ -143,8 +143,7 @@ class NearbyLockLogic extends BaseGetXController { // 厂商名称 var vendor = reply.data.sublist(3, 23); var vendorStr = utf8String(vendor); - // state.lockInfo["vendor"] = vendorStr; - state.lockInfo["vendor"] = "XL"; + state.lockInfo["vendor"] = vendorStr; Get.log("vendor:$vendor vendorStr:$vendorStr reply.data:${reply.data}"); // 锁设备类型 diff --git a/star_lock/lib/tools/dateTool.dart b/star_lock/lib/tools/dateTool.dart index 2a385a32..8f8e1d55 100644 --- a/star_lock/lib/tools/dateTool.dart +++ b/star_lock/lib/tools/dateTool.dart @@ -175,4 +175,20 @@ class DateTool { // print('dateTime:$dateTime now:$now The difference is $days days.'); return days; } + + + // 根据循环的循环周期转化为对应的整型(Bit0 -- 6 置位分别代表周日 -- 周六) + int accordingTheCycleIntoTheCorrespondingNumber(List weekDay){ + var weekStr = "00000000"; + // print("state.weekDay.value:$weekDay"); + for (var day in weekDay) { + int index = day % 7; // 将周日的索引转换为 0 + weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}'; + } + // 倒序 weekStr + weekStr = weekStr.split('').reversed.join(''); + int weekRound = int.parse(weekStr, radix: 2); + // print("weekStrweekStrweekStr:$weekStr weekRound:$weekRound"); + return weekRound; + } } \ No newline at end of file From 74077274b602d254479764a5823458739b388c21 Mon Sep 17 00:00:00 2001 From: anfe <448468458@qq.com> Date: Mon, 22 Apr 2024 13:35:00 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feat:=E4=BF=AE=E6=94=B9=E6=98=9F=E6=98=9F?= =?UTF-8?q?=E9=94=81=E9=A1=B5=E9=9D=A2=20ui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/images/lan/lan_en.json | 6 +- star_lock/images/lan/lan_keys.json | 6 +- star_lock/images/lan/lan_zh.json | 7 +- .../lockDetail/lockDetail_page.dart | 305 +++++++++++++++--- .../main/lockMian/lockMain/lockMain_page.dart | 84 ++--- .../lockMain/xhj/lockMain_xhj_logic.dart | 26 ++ .../lockMain/xhj/lockMain_xhj_page.dart | 38 +-- star_lock/lib/widget/flavors_img.dart | 15 +- star_lock/pubspec.yaml | 3 +- 9 files changed, 380 insertions(+), 110 deletions(-) diff --git a/star_lock/images/lan/lan_en.json b/star_lock/images/lan/lan_en.json index 2a415d3a..7c34f2b1 100644 --- a/star_lock/images/lan/lan_en.json +++ b/star_lock/images/lan/lan_en.json @@ -726,5 +726,9 @@ "微信公众号推送":"Wechat public account", "开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置":"To open wechat to receive alarm messages, you need to pay attention to Skye Smart Lock wechat public account first, please save the QR code and use wechat to scan the Settings", "蓝牙":"Bluetooth", - "需要访问蓝牙权限才能使用添加钥匙功能的位置信息":"Access to Bluetooth permissions is required to use the location information of the add key function" + "需要访问蓝牙权限才能使用添加钥匙功能的位置信息":"Access to Bluetooth permissions is required to use the location information of the add key function", + + "关锁":"关锁", + "功能":"功能", + "配件":"配件" } diff --git a/star_lock/images/lan/lan_keys.json b/star_lock/images/lan/lan_keys.json index 6c9c5263..29200bc8 100644 --- a/star_lock/images/lan/lan_keys.json +++ b/star_lock/images/lan/lan_keys.json @@ -725,7 +725,9 @@ "微信公众号推送":"微信公众号推送", "开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置":"开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置", "蓝牙":"蓝牙", - "需要访问蓝牙权限才能使用添加钥匙功能的位置信息":"需要访问蓝牙权限才能使用添加钥匙功能的位置信息" - + "需要访问蓝牙权限才能使用添加钥匙功能的位置信息":"需要访问蓝牙权限才能使用添加钥匙功能的位置信息", + "关锁":"Close Lock", + "功能":"Function", + "配件":"Parts" } diff --git a/star_lock/images/lan/lan_zh.json b/star_lock/images/lan/lan_zh.json index 52ecc6c0..35fae6da 100644 --- a/star_lock/images/lan/lan_zh.json +++ b/star_lock/images/lan/lan_zh.json @@ -727,6 +727,11 @@ "微信公众号推送":"微信公众号推送", "开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置":"开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置", "蓝牙":"蓝牙", - "需要访问蓝牙权限才能使用添加钥匙功能的位置信息":"需要访问蓝牙权限才能使用添加钥匙功能的位置信息" + "需要访问蓝牙权限才能使用添加钥匙功能的位置信息":"需要访问蓝牙权限才能使用添加钥匙功能的位置信息", + + "关锁":"关锁", + "功能":"功能", + "配件":"配件" + } diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart index b6789ada..b0042578 100644 --- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart +++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart @@ -141,7 +141,56 @@ class _LockDetailPageState extends State Widget build(BuildContext context) { state.widgetContext = context; loadData(); + return F.sw(defaultCall: () => skWidget(), xhjCall: () => xhjWidget()); + } + //鑫泓佳布局 + Widget xhjWidget() { + return Scaffold( + backgroundColor: Colors.white, + body: SingleChildScrollView( + child: Obx(() { + return Column( + children: [ + SizedBox( + height: 45.h, + ), + infoView(), + SizedBox( + height: 35.h, + ), + labelGridView('功能'.tr, getBottomWidget()), + labelListView('配件'.tr, getAttachmentWidget()), + SizedBox( + height: 45.h, + ), + Padding( + padding: EdgeInsets.only(left: 52.w, right: 52.w), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + buttonView('关锁'.tr, () { + if (state.openDoorBtnisUneable.value == true) { + startUnLock(); + } + }), + buttonView('开锁'.tr, () { + if (state.openDoorBtnisUneable.value == true) { + startOpenLock(); + } + }), + ], + ), + ), + ], + ); + }), + ), + ); + } + + //斯凯布局 + Widget skWidget() { return ListView( children: [ Visibility( @@ -195,12 +244,10 @@ class _LockDetailPageState extends State child: PageView( scrollDirection: Axis.horizontal, controller: state.pageController, - // child: Row( children: [ Obx(() => bottomWidget()), attachmentWidget(), ], - // ), ), )), ], @@ -227,6 +274,212 @@ class _LockDetailPageState extends State ); } + //操作锁按钮 + Widget buttonView(String text, VoidCallback? onPressed) { + bool openLockBtnState = state.openLockBtnState.value != 0; + return ElevatedButton( + onPressed: openLockBtnState ? null : onPressed, + style: ElevatedButton.styleFrom( + backgroundColor: openLockBtnState + ? AppColors.mainBackgroundColor + : AppColors.mainColor, + shape: RoundedRectangleBorder( + // 设置按钮的形状 + borderRadius: BorderRadius.circular(8), // 圆角的大小 + )), + child: SizedBox( + height: 0.12.sh, + width: 0.12.sh, + child: Center( + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + text, + style: TextStyle( + color: + openLockBtnState ? AppColors.mainColor : Colors.white), + ), + if (openLockBtnState) + Container( + margin: EdgeInsets.only(left: 15.w), + width: 15.r, + height: 15.r, + child: CircularProgressIndicator( + strokeWidth: 3.5, + color: AppColors.mainColor, + ), + ) + ], + ), + ), + ), + ); + } + + Widget infoView() { + return Padding( + padding: EdgeInsets.only(left: 35.w, right: 10.w), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + state.lockAlias.value, + style: TextStyle( + fontSize: 28.sp, + fontWeight: FontWeight.w400, + color: state.isOpenPassageMode.value == 1 + ? AppColors.openPassageModeColor + : AppColors.darkGrayTextColor), + ), + SizedBox( + height: 15.h, + ), + adminInfoView(center: false, max: false), + ], + ), + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + FlavorsImg( + child: Image.asset( + showElectricIcon(state.electricQuantity.value), + width: 30.w, + height: 24.w), + ), + SizedBox(width: 2.w), + Text("${state.electricQuantity.value}%", + style: TextStyle( + fontSize: 18.sp, color: AppColors.darkGrayTextColor)), + SizedBox(width: 2.w), + FlavorsImg( + child: Icon( + Icons.info, // 使用内置的 warning 图标,它是一个叹号 + color: AppColors.mainColor, // 设置图标颜色为红色 + size: 25.w, // 设置图标大小为 30 + ), + ), + SizedBox(width: 20.w), + ], + ), + SizedBox( + height: 15.h, + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + FlavorsImg( + child: Image.asset( + showElectricIcon(state.electricQuantity.value), + width: 30.w, + height: 24.w), + ), + SizedBox(width: 2.w), + Text("--%", + style: TextStyle( + fontSize: 18.sp, color: AppColors.darkGrayTextColor)), + SizedBox(width: 2.w), + FlavorsImg( + child: Icon( + Icons.info, // 使用内置的 warning 图标,它是一个叹号 + color: AppColors.mainColor, // 设置图标颜色为红色 + size: 25.w, // 设置图标大小为 30 + ), + ), + SizedBox(width: 20.w), + ], + ) + ], + ) + ], + ), + ); + } + + //带标签的 GridView 布局 + Widget labelGridView(String text, List children) { + return Column( + children: [ + Align( + alignment: Alignment.topLeft, + child: Padding( + padding: EdgeInsets.only( + left: 40.w, + top: 20.h, + bottom: 20.h, + ), + child: Text(text))), + SizedBox( + height: 200.h, + child: Row( + children: [ + Expanded( + child: GridView.count( + padding: EdgeInsets.only(left: 15.w, right: 15.w), + crossAxisCount: 2, + childAspectRatio: 0.7, + crossAxisSpacing: 25.h, + mainAxisSpacing: 25.w, + scrollDirection: Axis.horizontal, + children: children), + ), + Padding( + padding: EdgeInsets.only(left: 0.w, right: 4.w), + child: const Icon(Icons.arrow_forward_ios_rounded), + ), + ], + ), + ), + ], + ); + } + + //带标签的 ListView 布局 + Widget labelListView(String text, List children) { + return Column( + children: [ + Align( + alignment: Alignment.topLeft, + child: Padding( + padding: EdgeInsets.only( + left: 40.w, + top: 20.h, + bottom: 20.h, + ), + child: Text(text))), + SizedBox( + height: 100.h, + child: Row( + children: [ + Expanded( + child: GridView.count( + padding: EdgeInsets.only(left: 15.w, right: 15.w), + crossAxisCount: 1, + childAspectRatio: 0.7, + crossAxisSpacing: 25.h, + mainAxisSpacing: 25.w, + scrollDirection: Axis.horizontal, + children: children), + ), + Padding( + padding: EdgeInsets.only(left: 0.w, right: 4.w), + child: Icon(Icons.arrow_forward_ios_rounded), + ), + ], + ), + ), + ], + ); + } + Widget topWidget() { return Column( children: [ @@ -421,10 +674,12 @@ class _LockDetailPageState extends State ); } - Widget adminInfoView({bool center = true, bool add = false}) { + Widget adminInfoView( + {bool center = true, bool max = true, bool add = false}) { return Row( mainAxisAlignment: center ? MainAxisAlignment.center : MainAxisAlignment.start, + mainAxisSize: max ? MainAxisSize.max : MainAxisSize.min, children: [ Image.asset( 'images/icon_electronicKey_admin.png', @@ -539,7 +794,7 @@ class _LockDetailPageState extends State return SizedBox( width: ScreenUtil().screenWidth - 20.w, child: GridView.count( - crossAxisCount: F.sw(defaultCall: () => 4, xhjCall: () => 3), + crossAxisCount: 4, // childAspectRatio: 3, crossAxisSpacing: 20.w, mainAxisSpacing: 0.h, @@ -584,14 +839,12 @@ class _LockDetailPageState extends State return SizedBox( width: ScreenUtil().screenWidth - 20.w, child: GridView.count( - crossAxisCount: F.sw(defaultCall: () => 4, xhjCall: () => 3), + crossAxisCount: 4, // childAspectRatio: 3, crossAxisSpacing: 25.h, mainAxisSpacing: 0.h, physics: const NeverScrollableScrollPhysics(), - children: F.sw( - defaultCall: () => getBottomWidget(), - xhjCall: () => getBottomWidget().reversed.toList())), + children: getBottomWidget()), ); } @@ -835,8 +1088,6 @@ class _LockDetailPageState extends State // Widget bottomItem(String iconUrl, String name, bool openDoorBtnisUneable, bool bottomBtnisEable, Function() onClick) { - var width = F.sw(defaultCall: () => 42.w, xhjCall: () => 63.w); - var height = F.sw(defaultCall: () => 42.h, xhjCall: () => 63.h); return GestureDetector( onTap: openDoorBtnisUneable ? (bottomBtnisEable @@ -852,12 +1103,13 @@ class _LockDetailPageState extends State crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox( - width: width, - height: height, + width: 42.w, + height: 42.h, child: FlavorsImg( + black: true, child: Image.asset(iconUrl, - width: width, - height: height, + width: 42.w, + height: 42.w, color: openDoorBtnisUneable ? (bottomBtnisEable ? AppColors.mainColor @@ -916,28 +1168,6 @@ class _LockDetailPageState extends State return 'images/main/icon_lockElectricLevel_5.png'; } -//开锁成功弹出的小界面 - void _showFullScreenOverlay(BuildContext context) { - showModalBottomSheet( - context: context, - isScrollControlled: true, - backgroundColor: Colors.transparent, - builder: (BuildContext context) { - return GestureDetector( - onTap: () { - Navigator.of(context).pop(); // 关闭底部表单 - }, - child: Container( - height: MediaQuery.of(context).size.height, - width: MediaQuery.of(context).size.width, - color: Colors.black.withOpacity(0.5), - child: _unlockSuccessWidget(), - ), - ); - }, - ); - } - Widget _unlockSuccessWidget() { return Stack( alignment: Alignment.center, @@ -1026,8 +1256,6 @@ class _LockDetailPageState extends State @override void dispose() { - // TODO: implement dispose - /// 取消路由订阅 Get.log("LockDetailPage===dispose"); AppRouteObserver().routeObserver.unsubscribe(this); @@ -1036,7 +1264,6 @@ class _LockDetailPageState extends State state.replySubscription.cancel(); state.lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent! .cancel(); - if (state.animationController != null) { state.animationController!.dispose(); state.animationController = null; diff --git a/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart b/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart index b5f3aab5..b7d82663 100644 --- a/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart +++ b/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart @@ -36,7 +36,8 @@ class _StarLockMainPageState extends State with BaseWidget { final state = Get.find().state; Future getHttpData() async { - LockListInfoGroupEntity? lockListInfoGroupEntity = await Storage.getLockMainListData(); + LockListInfoGroupEntity? lockListInfoGroupEntity = + await Storage.getLockMainListData(); // Get.log("lockListInfoGroupEntity:${lockListInfoGroupEntity!.groupList!.length}"); if (lockListInfoGroupEntity != null) { var localLockListInfoGroupEntity = lockListInfoGroupEntity; @@ -71,44 +72,49 @@ class _StarLockMainPageState extends State with BaseWidget { @override Widget build(BuildContext context) { - return Scaffold( - backgroundColor: const Color(0xFFF5F5F5), - appBar: widget.showAppBar - ? TitleAppBar( - barTitle: F.navTitle, - haveBack: false, - haveOtherLeftWidget: true, - leftWidget: Builder( - builder: (context) => IconButton( - icon: Image.asset( - "images/main/mainLeft_menu_icon.png", - color: Colors.white, - width: 44.w, - height: 44.w, - ), - onPressed: () { - Scaffold.of(context).openDrawer(); - }, - )), - backgroundColor: AppColors.mainColor, - ) - : null, - drawer: widget.showDrawer - ? Drawer( - width: 1.sw / 3 * 2, - child: const StarLockMinePage(), - ) - : null, - body: EasyRefreshTool( - onRefresh: () { - SchedulerBinding.instance.addPostFrameCallback((_) { - // 更新状态的代码 - logic.pageNo = 1; - getHttpData(); - }); - }, - child: getDataReturnUI(state.dataLength.value)), - ); + Widget child = EasyRefreshTool( + onRefresh: () { + SchedulerBinding.instance.addPostFrameCallback((_) { + // 更新状态的代码 + logic.pageNo = 1; + getHttpData(); + }); + }, + // child: getDataReturnUI(state.dataLength.value)); + child: getDataReturnUI(state.dataLength.value)); + if (widget.showAppBar || widget.showDrawer) { + child = Scaffold( + backgroundColor: const Color(0xFFF5F5F5), + appBar: widget.showAppBar + ? TitleAppBar( + barTitle: F.navTitle, + haveBack: false, + haveOtherLeftWidget: true, + leftWidget: Builder( + builder: (context) => IconButton( + icon: Image.asset( + "images/main/mainLeft_menu_icon.png", + color: Colors.white, + width: 44.w, + height: 44.w, + ), + onPressed: () { + Scaffold.of(context).openDrawer(); + }, + )), + backgroundColor: AppColors.mainColor, + ) + : null, + drawer: widget.showDrawer + ? Drawer( + width: 1.sw / 3 * 2, + child: const StarLockMinePage(), + ) + : null, + body: child, + ); + } + return child; } Widget getDataReturnUI(int type) { diff --git a/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart b/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart index 31602b82..3d01639f 100644 --- a/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart +++ b/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart @@ -1,6 +1,9 @@ import 'dart:async'; import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:star_lock/main/lockMian/lockMain/lockMain_page.dart'; import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; @@ -12,6 +15,29 @@ class LockMainXHJLogic extends BaseGetXController { update(); } + //打开设备弹窗 + void openEquipment() { + showModalBottomSheet( + context: Get.context!, + isScrollControlled: true, + backgroundColor: Colors.white, + builder: (context) { + return ClipRRect( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16.r), + topRight: Radius.circular(16.r), + ), + child: SizedBox( + height: Get.height * 0.7, + child: StarLockMainPage( + showAppBar: false, + showDrawer: false, + ), + ), + ); + }); + } + @override void onReady() { super.onReady(); diff --git a/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart b/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart index 0e050f5f..7eae2768 100644 --- a/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart +++ b/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart @@ -41,14 +41,25 @@ class _StarLockMainXHJPageState extends State builder: (LockMainXHJLogic logic) { return Scaffold( backgroundColor: const Color(0xFFF5F5F5), + floatingActionButton: FloatingActionButton( + shape: const CircleBorder(), + onPressed: () { + logic.openEquipment(); + }, + backgroundColor: AppColors.mainColor, + tooltip: TranslationLoader.lanKeys!.device!.tr, + child: const Icon( + Icons.key, + color: AppColors.darkGrayTextColor, + ), + ), body: SafeArea( bottom: false, child: Stack( children: [ pageView( - widget: StarLockMainPage( + widget: LockMallPage( showAppBar: false, - showDrawer: false, ), logic: logic, index: 0, @@ -60,20 +71,13 @@ class _StarLockMainXHJPageState extends State logic: logic, index: 1, ), - pageView( - widget: LockMallPage( - showAppBar: false, - ), - logic: logic, - index: 2, - ), pageView( widget: MinePersonInfoPage( showAppBar: false, showAbout: true, ), logic: logic, - index: 3, + index: 2, ), ], ), @@ -93,26 +97,18 @@ class _StarLockMainXHJPageState extends State top: false, child: Row( children: [ - // navigationBarItem(Icons.start, '场景', false, () { - // logic.setIndex(0); - // }), - - navigationBarItem(Icons.devices, - TranslationLoader.lanKeys!.device!.tr, logic, 0, () { + navigationBarItem(Icons.shopping_cart, '商城'.tr, logic, 0, + () { logic.setIndex(0); }), navigationBarItem(Icons.message, TranslationLoader.lanKeys!.message!.tr, logic, 1, () { logic.setIndex(1); }), - navigationBarItem(Icons.shopping_cart, '商城'.tr, logic, 2, + navigationBarItem(Icons.account_circle, '我的'.tr, logic, 2, () { logic.setIndex(2); }), - navigationBarItem(Icons.account_circle, '我的'.tr, logic, 3, - () { - logic.setIndex(3); - }), ], ), ), diff --git a/star_lock/lib/widget/flavors_img.dart b/star_lock/lib/widget/flavors_img.dart index 72f2d7bb..54dc7323 100644 --- a/star_lock/lib/widget/flavors_img.dart +++ b/star_lock/lib/widget/flavors_img.dart @@ -4,18 +4,21 @@ import 'package:flutter/material.dart'; import 'package:star_lock/flavors.dart'; class FlavorsImg extends StatelessWidget { - FlavorsImg({required this.child, key}); + FlavorsImg({required this.child, this.black = false, key}); + bool black; Widget child; - ColorFilterGenerator myFilter = ColorFilterGenerator(name: "xhj", filters: [ - // ColorFilterAddons.addictiveColor(1, 22, 93), - ColorFilterAddons.addictiveColor(1, 22, 93), - // ColorFilterAddons.grayscale(),z - ]); + ColorFilterGenerator myFilter = + ColorFilterGenerator(name: "xhj", filters: []); @override Widget build(BuildContext context) { + myFilter = ColorFilterGenerator(name: "xhj", filters: [ + black + ? ColorFilterAddons.addictiveColor(-255, -255, -255) + : ColorFilterAddons.addictiveColor(1, 22, 93), + ]); if (F.appFlavor != Flavor.xhj) { return child; } diff --git a/star_lock/pubspec.yaml b/star_lock/pubspec.yaml index a01d9c95..826617e3 100644 --- a/star_lock/pubspec.yaml +++ b/star_lock/pubspec.yaml @@ -34,8 +34,9 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # 1.0.28+2024041702:打包给欧阳回归测试 # 1.0.27+2024041702 打包星星锁提审华为 # 1.0.27+2024041703 打包星星锁提审ios +# 1.0.27+2024042204 打包星星锁提审ios与 android -version: 1.0.27+2024041803 +version: 1.0.27+2024042204 environment: sdk: '>=2.12.0 <3.0.0' From 69fae2b56c1af4c240a7048b16fa6545756d08ca Mon Sep 17 00:00:00 2001 From: GeJiaXiang <353358601@qq.com> Date: Mon, 22 Apr 2024 14:34:48 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=9A=84=E7=AD=BE=E5=90=8D=E5=AE=9A=E4=B9=89=EF=BC=9A=E4=B8=80?= =?UTF-8?q?=E5=85=B1=E5=B0=B13=E7=A7=8D=E7=AD=BE=E5=90=8D=EF=BC=8Cdebug?= =?UTF-8?q?=E3=80=81sky=E3=80=81xhj=EF=BC=8C=E5=85=B6=E4=B8=AD=EF=BC=8C?= =?UTF-8?q?=E6=89=80=E6=9C=89debug=E6=A8=A1=E5=BC=8F=E5=85=B1=E7=94=A8?= =?UTF-8?q?=E4=B8=80=E7=A7=8D=E7=AD=BE=E5=90=8D=EF=BC=8C=E7=84=B6=E5=90=8E?= =?UTF-8?q?=20local/dev/pre=E4=B8=89=E7=A7=8D=E6=A8=A1=E5=BC=8F=E7=9A=84re?= =?UTF-8?q?lease=E4=B9=9F=E6=98=AF=E5=85=B1=E7=94=A8=E8=BF=99=E4=B8=AAdebu?= =?UTF-8?q?g=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/android/app/build.gradle | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/star_lock/android/app/build.gradle b/star_lock/android/app/build.gradle index a165aa84..20f27d80 100644 --- a/star_lock/android/app/build.gradle +++ b/star_lock/android/app/build.gradle @@ -56,19 +56,6 @@ android { keyAlias = 'starlock' keyPassword '123456' } - // 下面的local、pre、sky、xhj 都是自定义变量,自身不起任何作用,而是看哪里引用了它们 - local { - storeFile file("starlock.keystore") - storePassword '123456' - keyAlias = 'starlock' - keyPassword '123456' - } - pre { - storeFile file("starlock.keystore") - storePassword '123456' - keyAlias = 'starlock' - keyPassword '123456' - } sky { // CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown storeFile file("sky.jks") @@ -91,21 +78,21 @@ android { local { dimension "flavor-type" applicationId "com.starlock.lock.local" - signingConfig signingConfigs.pre + signingConfig signingConfigs.debug resValue "string", "app_name", "星锁-local" manifestPlaceholders.JPUSH_PKGNAME = "com.starlock.lock.local" } dev { dimension "flavor-type" applicationId "com.starlock.lock.dev" - signingConfig signingConfigs.pre + signingConfig signingConfigs.debug resValue "string", "app_name", "星锁-dev" manifestPlaceholders.JPUSH_PKGNAME = "com.starlock.lock.dev" } pre { dimension "flavor-type" applicationId "com.starlock.lock.pre" - signingConfig signingConfigs.pre + signingConfig signingConfigs.debug resValue "string", "app_name", "星锁" manifestPlaceholders.JPUSH_PKGNAME = "com.starlock.lock.pre" } @@ -202,9 +189,9 @@ android { // 真实的解决办法 minifyEnabled false shrinkResources false - productFlavors.local.signingConfig signingConfigs.pre - productFlavors.dev.signingConfig signingConfigs.pre - productFlavors.pre.signingConfig signingConfigs.pre + productFlavors.local.signingConfig signingConfigs.debug + productFlavors.dev.signingConfig signingConfigs.debug + productFlavors.pre.signingConfig signingConfigs.debug productFlavors.sky.signingConfig signingConfigs.sky productFlavors.xhj.signingConfig signingConfigs.xhj } From 837189310099dd2b28c693d649e496695fd29418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com> Date: Mon, 22 Apr 2024 15:38:19 +0800 Subject: [PATCH 4/5] =?UTF-8?q?1=E3=80=81=E6=B7=BB=E5=8A=A0=E9=94=81?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E4=BF=A1=E6=81=AF=E9=87=8C=E9=9D=A2=E7=9A=84?= =?UTF-8?q?=E5=8E=82=E5=95=86=E3=80=81=E5=9E=8B=E5=8F=B7=E3=80=81=E9=85=8D?= =?UTF-8?q?=E7=BD=91wifi=E5=90=8D=E5=AD=97=E3=80=81=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E3=80=822=E3=80=81=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8D=A1=E3=80=81=E6=8C=87=E7=BA=B9=E4=BF=AE=E6=94=B9=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/images/lan/lan_en.json | 3 ++ star_lock/images/lan/lan_keys.json | 3 ++ star_lock/images/lan/lan_zh.json | 3 ++ .../card/cardDetail/cardDetail_logic.dart | 10 +++-- .../card/cardDetail/cardDetail_page.dart | 4 +- .../fingerprintDetail_logic.dart | 10 +++-- .../fingerprintDetail_state.dart | 3 +- .../basicInformation_page.dart | 27 +++++++++++-- .../configuringWifi_logic.dart | 38 +++++++++---------- .../lockSet/lockSet/lockSetInfo_entity.dart | 6 ++- .../addLock/nearbyLock/nearbyLock_logic.dart | 6 ++- star_lock/lib/network/api_provider.dart | 9 +++++ star_lock/lib/network/api_repository.dart | 11 ++++++ 13 files changed, 100 insertions(+), 33 deletions(-) diff --git a/star_lock/images/lan/lan_en.json b/star_lock/images/lan/lan_en.json index 4afa7f45..85988c5d 100644 --- a/star_lock/images/lan/lan_en.json +++ b/star_lock/images/lan/lan_en.json @@ -700,6 +700,8 @@ "重命名": "Rename", "分组下的锁将被移到未分组里": "The locks under the group will be moved to ungrouped", "编辑成功": "Edit success", + "厂商": "Manufacturer", + "型号": "Model", "相机": "camera", "相册": "photos", @@ -719,6 +721,7 @@ "去设置": "Go set it up", "当前网络": "Current network", "位置信息": "Location information", + "请输入wifi名称": "Please enter the wifi name", "虹膜":"iris", "手掌":"palm", diff --git a/star_lock/images/lan/lan_keys.json b/star_lock/images/lan/lan_keys.json index d939b12b..b3e878a5 100644 --- a/star_lock/images/lan/lan_keys.json +++ b/star_lock/images/lan/lan_keys.json @@ -701,6 +701,9 @@ "编辑成功": "编辑成功", "当前网络": "当前网络", "位置信息": "位置信息", + "请输入wifi名称": "请输入wifi名称", + "厂商": "厂商", + "型号": "型号", "相机": "相机", "相册": "相册", diff --git a/star_lock/images/lan/lan_zh.json b/star_lock/images/lan/lan_zh.json index e7e73eac..e123d2af 100644 --- a/star_lock/images/lan/lan_zh.json +++ b/star_lock/images/lan/lan_zh.json @@ -703,6 +703,9 @@ "编辑成功": "编辑成功", "当前网络": "当前网络", "位置信息": "位置信息", + "请输入wifi名称": "请输入wifi名称", + "厂商": "厂商", + "型号": "型号", "相机": "相机", "相册": "相册", diff --git a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart index 9fffec0a..eb8b2ff6 100644 --- a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart +++ b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart @@ -42,7 +42,11 @@ class CardDetailLogic extends BaseGetXController{ Get.log("${reply.commandType!.typeValue} 数据解析成功"); cancelBlueConnetctToastTimer(); dismissEasyLoading(); - deletICCardData(); + if(state.isDeletCard.value == true){ + deletICCardData(); + }else{ + editICCardData(); + } break; case 0x06: //无权限 @@ -64,7 +68,7 @@ class CardDetailLogic extends BaseGetXController{ keyID:state.keyId.value.toString(), userID:await Storage.getUid(), cardNo:int.parse(state.typeNumber.value), - useCountLimit:0xff, + useCountLimit:state.isDeletCard.value == true ? 0 : 0xff, isForce:state.isStressFingerprint.value == true ? 1 : 0, // 是否是胁迫 isRound:state.keyType.value == 4 ? 1: 0, // 是否是循环 weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 @@ -115,7 +119,7 @@ class CardDetailLogic extends BaseGetXController{ keyID:state.keyId.value.toString(), userID:await Storage.getUid(), cardNo:int.parse(state.typeNumber.value), - useCountLimit:0xff, + useCountLimit:state.isDeletCard.value == true ? 0 : 0xff, isForce:state.isStressFingerprint.value == true ? 1 : 0, // 是否是胁迫 isRound:state.keyType.value == 4 ? 1: 0, // 是否是循环 weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 diff --git a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart index ca094afa..3981599e 100644 --- a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart +++ b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart @@ -173,6 +173,7 @@ class _CardDetailPageState extends State with RouteAware { padding: EdgeInsets.only(top: 25.w, bottom: 25.w), onClick: () { ShowTipView().showIosTipWithContentDialog("确定要删除吗?".tr, () async { + state.isDeletCard.value = true; logic.senderAddICCard(); }); }), @@ -191,7 +192,8 @@ class _CardDetailPageState extends State with RouteAware { onChanged: (value) { setState(() { state.isStressFingerprint.value = value; - logic.editICCardData(); + state.isDeletCard.value = false; + logic.senderAddICCard(); }); }, ); diff --git a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_logic.dart b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_logic.dart index 98692236..df863f6f 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_logic.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_logic.dart @@ -42,7 +42,11 @@ class FingerprintDetailLogic extends BaseGetXController{ state.sureBtnState.value = 0; cancelBlueConnetctToastTimer(); dismissEasyLoading(); - deletFingerprintsData(); + if(state.isDeletFingerprint.value == true){ + deletFingerprintsData(); + }else{ + editFingerprintsData(); + } break; case 0x06: //无权限 @@ -64,7 +68,7 @@ class FingerprintDetailLogic extends BaseGetXController{ keyID:state.keyId.value.toString(), userID:await Storage.getUid(), fingerNo:int.parse(state.typeNumber.value), - useCountLimit:0xff, + useCountLimit:state.isDeletFingerprint.value == true ? 0 : 0xff, isForce:state.isStressFingerprint.value == true ? 1 : 0, // 是否是胁迫 isRound:state.keyType.value == 4 ? 1: 0, // 是否是循环 weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 @@ -115,7 +119,7 @@ class FingerprintDetailLogic extends BaseGetXController{ keyID:state.keyId.value.toString(), userID:await Storage.getUid(), fingerNo:int.parse(state.typeNumber.value), - useCountLimit:0xff, + useCountLimit:state.isDeletFingerprint.value == true ? 0 : 0xff, isForce:state.isStressFingerprint.value == true ? 1 : 0, // 是否是胁迫 isRound:state.keyType.value == 4 ? 1: 0, // 是否是循环 weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 diff --git a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_state.dart b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_state.dart index e107590d..972d3e18 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_state.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_state.dart @@ -23,8 +23,9 @@ class FingerprintDetailState{ var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 var sureBtnState = 0.obs;// 0普通状态(可用) 1连接中(不可用) - + var isDeletFingerprint = true.obs;// 是否删除卡 final isStressFingerprint = false.obs; + FingerprintDetailState() { Map map = Get.arguments; if ((map["fingerprintItemData"] != null)) { diff --git a/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart index 51321167..199f51df 100644 --- a/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart @@ -52,6 +52,16 @@ class _BasicInformationPageState extends State { rightTitle: "${state.lockBasicInfo.value.mac??""}/${state.lockBasicInfo.value.lockId??""}", allHeight: 70.h, + isHaveLine: true)), + Obx(() => CommonItem( + leftTitel: "厂商".tr, + rightTitle: state.lockBasicInfo.value.vendor ??"", + allHeight: 70.h, + isHaveLine: true)), + Obx(() => CommonItem( + leftTitel: "型号".tr, + rightTitle: state.lockBasicInfo.value.model ??"", + allHeight: 70.h, isHaveLine: false)), SizedBox( height: 10.h, @@ -153,9 +163,20 @@ class _BasicInformationPageState extends State { )), Obx(() => CommonItem( leftTitel: "位置信息".tr, - rightTitle: state.lockBasicInfo.value.address ?? "-", - allHeight: 70.h, - isHaveLine: true)), + // rightTitle: state.lockBasicInfo.value.address ?? "-", + allHeight: 80.h, + isHaveLine: false, + isHaveRightWidget: true, + rightWidget: Container( + width: 300.w, + child: Text(state.lockBasicInfo.value.address ?? "-", + maxLines: 2, + overflow: TextOverflow.ellipsis, + textAlign: TextAlign.end, + style: TextStyle( + fontSize: 22.sp, + color: AppColors.darkGrayTextColor)), + ),)), /* 2024-01-12 会议确定去掉“微信二维码” by DaisyWu CommonItem( leftTitel: diff --git a/star_lock/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart b/star_lock/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart index 416c70c5..65250366 100644 --- a/star_lock/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart @@ -16,6 +16,7 @@ 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 '../../../../../tools/eventBusEventManage.dart'; import '../../../../../tools/storage.dart'; import 'configuringWifi_state.dart'; @@ -26,23 +27,19 @@ class ConfiguringWifiLogic extends BaseGetXController{ var entity = await ApiRepository.to.getWifiLockServiceIpAndPort(); if(entity.errorCode! == 0){ state.configuringWifiEntity.value = entity; + } + } - // var serversList = []; - // for(int i = 0; i senderConfiguringWifiAction() async { + if(state.wifiNameController.text.isEmpty){ + showToast("请输入wifi名称"); + return; + } + if(state.sureBtnState.value == 1){ return; } diff --git a/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart b/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart index 9070fc43..8188207b 100644 --- a/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart +++ b/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart @@ -341,6 +341,7 @@ class LockBasicInfo { List? weekDays; String? address; String? network; + String? vendor; LockBasicInfo( {this.lockId, @@ -365,7 +366,8 @@ class LockBasicInfo { this.lockUserNo, this.weekDays, this.address, - this.network}); + this.network, + this.vendor}); LockBasicInfo.fromJson(Map json) { lockId = json['lockId']; @@ -396,6 +398,7 @@ class LockBasicInfo { weekDays = json['weekDays']; address = json['address']; network = json['network']; + vendor = json['vendor']; } Map toJson() { @@ -425,6 +428,7 @@ class LockBasicInfo { data['weekDays'] = weekDays; data['address'] = address; data['network'] = network; + data['vendor'] = vendor; return data; } } diff --git a/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart b/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart index 1e8e64a1..ce8302ab 100644 --- a/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart +++ b/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart @@ -143,7 +143,8 @@ class NearbyLockLogic extends BaseGetXController { // 厂商名称 var vendor = reply.data.sublist(3, 23); var vendorStr = utf8String(vendor); - state.lockInfo["vendor"] = vendorStr; + // state.lockInfo["vendor"] = vendorStr; + state.lockInfo["vendor"] = "XL"; Get.log("vendor:$vendor vendorStr:$vendorStr reply.data:${reply.data}"); // 锁设备类型 @@ -154,7 +155,8 @@ class NearbyLockLogic extends BaseGetXController { // 产品名称 var model = reply.data.sublist(24, 44); var modelStr = utf8String(model); - state.lockInfo["model"] = modelStr; + // state.lockInfo["model"] = modelStr; + state.lockInfo["model"] = "JL-BLE-01"; // Get.log("model:$model modelStr:$modelStr modelStr:${modelStr.length}"); // 软件版本 diff --git a/star_lock/lib/network/api_provider.dart b/star_lock/lib/network/api_provider.dart index 6eae8992..0bcaf519 100644 --- a/star_lock/lib/network/api_provider.dart +++ b/star_lock/lib/network/api_provider.dart @@ -670,6 +670,15 @@ class ApiProvider extends BaseProvider { 'autoLockSecond': autoLockSecond, })); + /// 更新网络信息 配网之后把网络信息提交到服务器保存 + Future updateNetworkInfo(int lockId, String network) => + post( + updateLockSettingUrl.toUrl, + jsonEncode({ + 'lockId': lockId, + 'network': network, + })); + // 锁声音 Future setLockSoundData( int lockId, int lockSound, int lockSoundVolume) => diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index 6ca76a26..b6d3afa5 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -709,6 +709,17 @@ class ApiRepository { return LoginEntity.fromJson(res.body); } + // 更新网络信息 配网之后把网络信息提交到服务器保存 + Future updateNetworkInfo({ + required int lockId, + required String network, + }) async { + final res = await apiProvider.updateNetworkInfo(lockId, network); + return LoginEntity.fromJson(res.body); + } + + + // 锁声音 Future setLockSound({ required int lockId, From 8f21097d564b897fb4c31b649429d39db1536bf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com> Date: Mon, 22 Apr 2024 16:02:28 +0800 Subject: [PATCH 5/5] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E5=A4=8D=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E7=AC=AC=E4=BA=8C=E6=AC=A1=E8=BF=9B=E5=85=A5=E6=89=8D?= =?UTF-8?q?=E8=83=BD=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98=E3=80=822?= =?UTF-8?q?=E3=80=81=E4=BF=AE=E5=A4=8D=E9=95=BF=E6=8C=89=E9=97=AD=E9=94=81?= =?UTF-8?q?=E8=B7=9F=E5=BC=80=E9=94=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lockDetail/lockDetail_page.dart | 4 +- .../gaode/lockAddressGaoDe_page.dart | 44 ++++++++++++++++++- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart index 77e4129a..aae63d83 100644 --- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart +++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart @@ -1219,6 +1219,7 @@ class _LockDetailPageState extends State state.openLockBtnState.value = 1; // state.animationController!.forward(); + state.openDoorModel = 1; if (state.lockUserNo == 0) { // 电子钥匙lockUserNo为0 要先添加用户 logic.addUserConnectBlue(); @@ -1226,7 +1227,6 @@ class _LockDetailPageState extends State // print("state.isOpenLockNeedOnline.value:${state.isOpenLockNeedOnline.value}"); if (state.isOpenLockNeedOnline.value == 0) { // 不需要联网 - state.openDoorModel = 1; logic.openDoorAction(); } else { // 需要联网 @@ -1244,12 +1244,12 @@ class _LockDetailPageState extends State state.iSClosedUnlockSuccessfulPopup.value = false; state.openLockBtnState.value = 1; state.animationController!.forward(); + state.openDoorModel = 32; if (state.lockUserNo == 0) { // 电子钥匙lockUserNo为0 要先添加用户 logic.addUserConnectBlue(); } else { - state.openDoorModel = 32; logic.openDoorAction(); } } diff --git a/star_lock/lib/mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart b/star_lock/lib/mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart index 62596772..31e6f4b4 100644 --- a/star_lock/lib/mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart +++ b/star_lock/lib/mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart @@ -52,12 +52,54 @@ class _LockAddressGaoDePageState extends State AMapFlutterLocation.setApiKey(F.aMapKey.androidKey, F.aMapKey.iosKey); } + // Future requestPermission() async { + // final status = await Permission.location.request(); + // print("Permission.location.request()=status:$status"); + // permissionStatus = status; + // if(Platform.isIOS){ + // _setLocationOption(); + // requestIOSLocation(); + // } + // switch (status) { + // case PermissionStatus.denied: + // // print("拒绝"); + // break; + // case PermissionStatus.granted: + // if(Platform.isIOS){ + // // _setLocationOption(); + // // requestIOSLocation(); + // }else{ + // requestAndroidLocation(); + // location.startLocation(); + // } + // break; + // case PermissionStatus.limited: + // // print("限制"); + // break; + // case PermissionStatus.permanentlyDenied: + // // print("永久的否认"); + // break; + // case PermissionStatus.provisional: + // // print("临时"); + // break; + // default: + // // print("其他状态"); + // // requestLocation(); + // break; + // } + // } + Future requestPermission() async { final status = await PermissionDialog.request(Permission.location); - if (Platform.isIOS || status) { + if(Platform.isIOS){ _setLocationOption(); requestIOSLocation(); } + + if (!Platform.isIOS || status) { + requestAndroidLocation(); + location.startLocation(); + } } Future requestAndroidLocation() async {