From 4a3d104a8985dd2ebf72a42e258b4ed7ff4c60cb Mon Sep 17 00:00:00 2001 From: anfe <448468458@qq.com> Date: Tue, 14 May 2024 18:07:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=B7=BB=E5=8A=A0=E9=A6=96=E6=AC=A1?= =?UTF-8?q?=E5=BC=80=E9=94=81=E6=B8=85=E9=99=A4=E8=93=9D=E7=89=99=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=88=97=E8=A1=A8=E7=BC=93=E5=AD=98=EF=BC=8C=E8=93=9D?= =?UTF-8?q?=E7=89=99=E6=93=8D=E4=BD=9C=E6=B7=BB=E5=8A=A0=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E5=8A=A0=E5=BF=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/ios/Podfile.lock | 10 +-- star_lock/lib/blue/blue_manage.dart | 18 +++-- .../main/lockMian/lockMain/lockMain_page.dart | 24 +++---- .../mine/addLock/saveLock/saveLock_logic.dart | 72 +++++++++---------- star_lock/lib/tools/eventBusEventManage.dart | 18 ++++- 5 files changed, 79 insertions(+), 63 deletions(-) diff --git a/star_lock/ios/Podfile.lock b/star_lock/ios/Podfile.lock index bdf57692..a5ddc949 100644 --- a/star_lock/ios/Podfile.lock +++ b/star_lock/ios/Podfile.lock @@ -125,8 +125,6 @@ PODS: - Flutter - package_info_plus (0.4.5): - Flutter - - partial_media_permissions (0.0.1): - - Flutter - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS @@ -186,7 +184,6 @@ DEPENDENCIES: - just_audio (from `.symlinks/plugins/just_audio/ios`) - network_info_plus (from `.symlinks/plugins/network_info_plus/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - - partial_media_permissions (from `.symlinks/plugins/partial_media_permissions/ios`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) @@ -277,8 +274,6 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/network_info_plus/ios" package_info_plus: :path: ".symlinks/plugins/package_info_plus/ios" - partial_media_permissions: - :path: ".symlinks/plugins/partial_media_permissions/ios" path_provider_foundation: :path: ".symlinks/plugins/path_provider_foundation/darwin" permission_handler_apple: @@ -327,7 +322,7 @@ SPEC CHECKSUMS: flutter_native_contact_picker: bd430ba0fbf82768bb50c2c52a69a65759a8f907 flutter_pcm_sound: de0572ca4f99091cc2abfcc31601b8a4ddd33c0e flutter_voice_processor: 2b89b93d69b02227ae3fd58589ee0bcfa3ca2a82 - fluttertoast: 9f2f8e81bb5ce18facb9748d7855bf5a756fe3db + fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265 fluwx: daa284756ce53442b3d0417ceeda66e981906811 google_maps_flutter_ios: d1318b4ff711612cab16862d7a87e31a7403d458 GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4 @@ -340,7 +335,6 @@ SPEC CHECKSUMS: just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa network_info_plus: 6d0c3eb8367b8164fa3fb0c19875e3f59d49697f package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e - partial_media_permissions: 0fd34002b1dbfd5e8b4c60eb0d99e8e755a77f76 path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 ReachabilitySwift: 2128f3a8c9107e1ad33574c6e58e8285d460b149 @@ -357,4 +351,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 317f9473a5705c6fe4d79d95e81676f248048fdc -COCOAPODS: 1.15.2 +COCOAPODS: 1.14.3 diff --git a/star_lock/lib/blue/blue_manage.dart b/star_lock/lib/blue/blue_manage.dart index 08c5d768..b5027d9b 100644 --- a/star_lock/lib/blue/blue_manage.dart +++ b/star_lock/lib/blue/blue_manage.dart @@ -282,14 +282,17 @@ class BlueManage { } // String listStr = scanDevices - // // .where((element) => - // // element.advertisementData.advName == 'TMH_dc8f928369ed') + // .where((element) => + // element.advertisementData.advName == 'TMH_dc8f928369ed' || + // element.device.platformName == 'TMH_dc8f928369ed') // .map((e) => 'advName:${e.advertisementData.advName} ' // 'serviceUuids:${e.advertisementData.serviceUuids} ' // '是否被重置:${e.advertisementData.serviceUuids[0].toString()[31]}') // .join(',') // .toString(); - // AppLog.log('--->扫描到的设备 ${listStr} '); + // if (listStr.trim() != '') { + // AppLog.log('--->扫描到的设备 ${listStr} '); + // } scanDevicesCallBack(scanDevices); // EventBusManager().eventBusFir(scanDevices); @@ -354,9 +357,14 @@ class BlueManage { {bool isAddEquipment = false}) async { connectDeviceName = deviceName; List devicesList = scanDevices; - if (isAddEquipment == false) { + + bool isExistDevice = scanDevices.any((element) => + element.device.platformName == connectDeviceName || + element.advertisementData.advName == connectDeviceName); + + if (isAddEquipment == false || isExistDevice == false) { //取消缓存直接使用,存在配对场景设备信息会更变 - startScan(10, (List scanDevices) { + startScanSingle(deviceName, 10, (List scanDevices) { _connectDevice(scanDevices, deviceName, connectStateCallBack, isAddEquipment: isAddEquipment); }); diff --git a/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart b/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart index ada75f11..034df4a8 100644 --- a/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart +++ b/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart @@ -4,6 +4,7 @@ import 'package:flutter/scheduler.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/app_settings/app_colors.dart'; +import 'package:star_lock/blue/blue_manage.dart'; import 'package:star_lock/main/lockMian/lockList/lockList_xhj_page.dart'; import 'package:star_lock/tools/noData.dart'; import 'package:star_lock/tools/submitBtn.dart'; @@ -36,22 +37,21 @@ class _StarLockMainPageState extends State with BaseWidget { final logic = Get.put(LockMainLogic()); final state = Get.find().state; - Future getHttpData() async { + Future getHttpData({bool clearScanDevices = false}) async { LockListInfoGroupEntity? lockListInfoGroupEntity = await Storage.getLockMainListData(); if (lockListInfoGroupEntity != null) { var localLockListInfoGroupEntity = lockListInfoGroupEntity; - logic.loadMainDataLogic(localLockListInfoGroupEntity).then((value) { - if (mounted) { - setState(() {}); - } - }); + await logic.loadMainDataLogic(localLockListInfoGroupEntity); + } + await logic.getStarLockInfo(); + await Future.delayed(const Duration(milliseconds: 200)); + if (clearScanDevices) { + BlueManage().scanDevices.clear(); + } + if (mounted) { + setState(() {}); } - logic.getStarLockInfo().then((LockListInfoEntity value) { - if (mounted) { - setState(() {}); - } - }); } @override @@ -237,7 +237,7 @@ class _StarLockMainPageState extends State with BaseWidget { void _initLoadDataAction() { _teamEvent = eventBus.on().listen((event) { logic.pageNo = 1; - getHttpData(); + getHttpData(clearScanDevices: event.clearScanDevices); }); } diff --git a/star_lock/lib/mine/addLock/saveLock/saveLock_logic.dart b/star_lock/lib/mine/addLock/saveLock/saveLock_logic.dart index e7814662..e25a940f 100644 --- a/star_lock/lib/mine/addLock/saveLock/saveLock_logic.dart +++ b/star_lock/lib/mine/addLock/saveLock/saveLock_logic.dart @@ -1,4 +1,3 @@ - import 'dart:async'; import 'dart:math'; @@ -31,8 +30,10 @@ class SaveLockLogic extends BaseGetXController { // 获取解析后的数据 late StreamSubscription _replySubscription; + void _initReplySubscription() { - _replySubscription = EventBusManager().eventBus!.on().listen((reply) { + _replySubscription = + EventBusManager().eventBus!.on().listen((reply) { if (reply is AddUserReply && state.ifCurrentScreen.value == true) { _replyAddUserKey(reply); } @@ -81,19 +82,19 @@ class SaveLockLogic extends BaseGetXController { startDate: DateTime.now().millisecondsSinceEpoch, expireDate: 0x11223344, useCountLimit: 0xFFFF, - isRound:0, + isRound: 0, weekRound: 0, - startHour: 0, + startHour: 0, startMin: 0, endHour: 0, - endMin: 0, + endMin: 0, role: 255, password: state.adminPassword, needAuthor: 1, publicKey: publicKeyDataList, privateKey: getPrivateKeyList, token: token, - isBeforeAddUser: true); + isBeforeAddUser: true); break; default: //失败 关闭loading @@ -195,7 +196,7 @@ class SaveLockLogic extends BaseGetXController { // 添加用户 Future addUserConnectBlue() async { // 进来之后首先连接 - if(state.sureBtnState.value == 1){ + if (state.sureBtnState.value == 1) { return; } state.sureBtnState.value = 1; @@ -203,15 +204,16 @@ class SaveLockLogic extends BaseGetXController { // showTitleEasyLoading("添加锁进行中 1/2"); showEasyLoading(); // 判断超时 - showBlueConnetctToastTimer(action: (){ + showBlueConnetctToastTimer(action: () { dismissEasyLoading(); state.sureBtnState.value = 0; - if(state.ifCurrentScreen.value == true){ + if (state.ifCurrentScreen.value == true) { showBlueConnetctToast(); } }); - BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { - if (deviceConnectionState == BluetoothConnectionState.connected){ + BlueManage().bludSendData(BlueManage().connectDeviceName, + (BluetoothConnectionState deviceConnectionState) async { + if (deviceConnectionState == BluetoothConnectionState.connected) { // 私钥 var privateKey = await Storage.getStringList(saveBluePrivateKey); List getPrivateKeyList = changeStringListToIntList(privateKey!); @@ -226,33 +228,33 @@ class SaveLockLogic extends BaseGetXController { } IoSenderManage.senderAddUser( lockID: BlueManage().connectDeviceName, - authUserID:await Storage.getUid(), - keyID:"1", - userID:await Storage.getUid(), - openMode:1, - keyType:1, - startDate:DateTime.now().millisecondsSinceEpoch, - expireDate:0x11223344, + authUserID: await Storage.getUid(), + keyID: "1", + userID: await Storage.getUid(), + openMode: 1, + keyType: 1, + startDate: DateTime.now().millisecondsSinceEpoch, + expireDate: 0x11223344, useCountLimit: 0xFFFF, - isRound:0, + isRound: 0, weekRound: 0, - startHour: 0, + startHour: 0, startMin: 0, endHour: 0, - endMin: 0, - role:255, - password:state.adminPassword, - needAuthor:1, - publicKey:publicKeyDataList, - privateKey:getPrivateKeyList, + endMin: 0, + role: 255, + password: state.adminPassword, + needAuthor: 1, + publicKey: publicKeyDataList, + privateKey: getPrivateKeyList, token: getTokenList, - isBeforeAddUser: true - ); - } else if (deviceConnectionState == BluetoothConnectionState.disconnected) { + isBeforeAddUser: true); + } else if (deviceConnectionState == + BluetoothConnectionState.disconnected) { dismissEasyLoading(); cancelBlueConnetctToastTimer(); state.sureBtnState.value = 0; - if(state.ifCurrentScreen.value == true){ + if (state.ifCurrentScreen.value == true) { showBlueConnetctToast(); } } @@ -352,7 +354,7 @@ class SaveLockLogic extends BaseGetXController { // }, isAddEquipment: true); // } - void bindBlueAdmin() async{ + void bindBlueAdmin() async { state.lockInfo["adminPwd"] = state.adminPassword; var positionMap = {}; @@ -402,7 +404,7 @@ class SaveLockLogic extends BaseGetXController { // BlueManage().disconnect(BlueManage().connectDeviceMacAddress); // eventBus.fire(RefreshLockListInfoDataEvent()); // Get.close(state.isFromMap == 1 ? 5 : 6); - }else{ + } else { state.sureBtnState.value = 0; } } @@ -457,8 +459,8 @@ class SaveLockLogic extends BaseGetXController { // ); // } - void backAction(){ - eventBus.fire(RefreshLockListInfoDataEvent()); + void backAction() { + eventBus.fire(RefreshLockListInfoDataEvent(clearScanDevices: true)); BlueManage().disconnect(); Get.close(state.isFromMap == 1 ? 5 : 6); } @@ -475,7 +477,6 @@ class SaveLockLogic extends BaseGetXController { void onInit() { // TODO: implement onInit super.onInit(); - } @override @@ -484,5 +485,4 @@ class SaveLockLogic extends BaseGetXController { _replySubscription.cancel(); super.onClose(); } - } diff --git a/star_lock/lib/tools/eventBusEventManage.dart b/star_lock/lib/tools/eventBusEventManage.dart index d77d5c48..99ed2e1a 100644 --- a/star_lock/lib/tools/eventBusEventManage.dart +++ b/star_lock/lib/tools/eventBusEventManage.dart @@ -7,13 +7,17 @@ EventBus eventBus = EventBus(); /// 刷新锁列表数据 class RefreshLockListInfoDataEvent { - RefreshLockListInfoDataEvent(); + //是否清除蓝牙设备列表缓存 + bool clearScanDevices; + + RefreshLockListInfoDataEvent({this.clearScanDevices = false}); } /// 蓝牙添加用户成功 class LockAddUserSucceedEvent { int type; // 0用户号更新成功 1token失效 List dataList; + LockAddUserSucceedEvent(this.dataList, this.type); } @@ -40,6 +44,7 @@ class RefreshCheckInListEvent { /// 传递当前锁信息 class PassCurrentLockInformationEvent { LockSetInfoData lockSetInfoData; + PassCurrentLockInformationEvent(this.lockSetInfoData); } @@ -51,12 +56,14 @@ class OtherTypeRefreshListEvent { /// 考情添加员工卡、指纹之后回调卡、指纹number class ChickInAddStaffCardAndFingerprintBlockNumberEvent { String number; + ChickInAddStaffCardAndFingerprintBlockNumberEvent(this.number); } /// 多语言 切换之后传值到上一级界面 class ChangeLanguageBlockLastLanguageEvent { String languageTitle; + ChangeLanguageBlockLastLanguageEvent(this.languageTitle); } @@ -69,36 +76,42 @@ class LockGroupEditGroupLockRefreshEvent { class LockSetChangeSetRefreshLockDetailWithType { int type; // 0 考勤 1开锁时是否需联网 2常开模式 3修改了锁名字 4修改了电量 5远程开锁 String setResult; + LockSetChangeSetRefreshLockDetailWithType(this.type, this.setResult); } /// 获取到视频流数据然后刷新界面 class GetTVDataRefreshUI { List tvList; + GetTVDataRefreshUI(this.tvList); } /// 获取到UDP接收状态然后刷新界面 class GetUDPStatusRefreshUI { int udpStatus; + GetUDPStatusRefreshUI(this.udpStatus); } /// 获取到UDP接收状态然后刷新监控界面 class GetUDPStatusMonitorUI { int udpStatus; + GetUDPStatusMonitorUI(this.udpStatus); } /// 获取到第一帧图片数据后跳转 class GetFirstFrameGoPush { bool isFirstFrame; + GetFirstFrameGoPush(this.isFirstFrame); } /// 获取到实时点击的密码类型更新typeIndex class GetPasswordTypeUpdateIndex { int passwordType; + GetPasswordTypeUpdateIndex(this.passwordType); } @@ -125,6 +138,7 @@ class AuthorizedAdminPageRefreshUI { /// 刷新门锁日志列表 class DoorLockLogListRefreshUI { DateTime getDoorLockLogTime; + DoorLockLogListRefreshUI(this.getDoorLockLogTime); } @@ -141,4 +155,4 @@ class AuthorizedAdministratorListPageRefreshUI { /// 个人信息修改时刷新我的界面的头像昵称等 class MineInfoChangeRefreshUI { MineInfoChangeRefreshUI(); -} \ No newline at end of file +}