From 1210ad9110b7fa5a68cae0885e8e453e561845f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com> Date: Wed, 3 Jan 2024 15:33:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/ios/Podfile.lock | 72 ++++++++++-- star_lock/ios/Runner/Info.plist | 4 + star_lock/lib/blue/blue_manage.dart | 56 +++------ .../configuringWifi_logic.dart | 21 ++-- .../lcokSet/lockSet/lockSet_logic.dart | 109 +++++++----------- .../lockDetail/lockDetail_logic.dart | 26 ++--- .../lockDetail/lockDetail_page.dart | 3 +- .../monitoring/lockMonitoring_logic.dart | 4 +- .../addLock/nearbyLock/nearbyLock_logic.dart | 17 +-- .../mine/addLock/saveLock/saveLock_logic.dart | 6 +- .../mine/addLock/saveLock/saveLock_page.dart | 1 + star_lock/lib/network/api.dart | 5 +- star_lock/lib/tools/eventBusEventManage.dart | 6 - 13 files changed, 174 insertions(+), 156 deletions(-) diff --git a/star_lock/ios/Podfile.lock b/star_lock/ios/Podfile.lock index 54f7a852..eb3ce1b3 100644 --- a/star_lock/ios/Podfile.lock +++ b/star_lock/ios/Podfile.lock @@ -27,6 +27,10 @@ PODS: - AMapFoundation (1.8.2) - AMapLocation (2.10.0): - AMapFoundation (>= 1.8.0) + - audio_session (0.0.1): + - Flutter + - audioplayers_darwin (0.0.1): + - Flutter - auto_orientation (0.0.1): - Flutter - camera_avfoundation (0.0.1): @@ -37,22 +41,38 @@ PODS: - Flutter (1.0.0) - flutter_native_contact_picker (0.0.1): - Flutter + - flutter_pcm_sound (0.0.1): + - Flutter + - flutter_sound (9.2.13): + - Flutter + - flutter_sound_core (= 9.2.13) + - flutter_sound_core (9.2.13) + - flutter_voice_processor (1.1.0): + - Flutter + - ios-voice-processor (~> 1.1.0) - fluttertoast (0.0.2): - Flutter - Toast - FMDB (2.7.5): - FMDB/standard (= 2.7.5) - FMDB/standard (2.7.5) + - g711_flutter (0.0.1): + - Flutter - google_maps_flutter_ios (0.0.1): - Flutter - GoogleMaps (< 9.0) - - GoogleMaps (5.2.0): - - GoogleMaps/Maps (= 5.2.0) - - GoogleMaps/Base (5.2.0) - - GoogleMaps/Maps (5.2.0): + - GoogleMaps (6.2.1): + - GoogleMaps/Maps (= 6.2.1) + - GoogleMaps/Base (6.2.1) + - GoogleMaps/Maps (6.2.1): - GoogleMaps/Base + - image_gallery_saver (2.0.2): + - Flutter - image_picker_ios (0.0.1): - Flutter + - ios-voice-processor (1.1.0) + - just_audio (0.0.1): + - Flutter - network_info_plus (0.0.1): - Flutter - package_info_plus (0.4.5): @@ -73,7 +93,7 @@ PODS: - sqflite (0.0.3): - Flutter - FMDB (>= 2.7.5) - - SwiftProtobuf (1.25.1) + - SwiftProtobuf (1.25.2) - Toast (4.0.0) - url_launcher_ios (0.0.1): - Flutter @@ -88,14 +108,22 @@ DEPENDENCIES: - aliyun_push (from `.symlinks/plugins/aliyun_push/ios`) - amap_flutter_location (from `.symlinks/plugins/amap_flutter_location/ios`) - amap_flutter_map (from `.symlinks/plugins/amap_flutter_map/ios`) + - audio_session (from `.symlinks/plugins/audio_session/ios`) + - audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/ios`) - auto_orientation (from `.symlinks/plugins/auto_orientation/ios`) - camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - Flutter (from `Flutter`) - flutter_native_contact_picker (from `.symlinks/plugins/flutter_native_contact_picker/ios`) + - flutter_pcm_sound (from `.symlinks/plugins/flutter_pcm_sound/ios`) + - flutter_sound (from `.symlinks/plugins/flutter_sound/ios`) + - flutter_voice_processor (from `.symlinks/plugins/flutter_voice_processor/ios`) - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) + - g711_flutter (from `.symlinks/plugins/g711_flutter/ios`) - google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`) + - image_gallery_saver (from `.symlinks/plugins/image_gallery_saver/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) + - 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`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) @@ -119,8 +147,10 @@ SPEC REPOS: - AMap3DMap - AMapFoundation - AMapLocation + - flutter_sound_core - FMDB - GoogleMaps + - ios-voice-processor - Protobuf - SwiftProtobuf - Toast @@ -134,6 +164,10 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/amap_flutter_location/ios" amap_flutter_map: :path: ".symlinks/plugins/amap_flutter_map/ios" + audio_session: + :path: ".symlinks/plugins/audio_session/ios" + audioplayers_darwin: + :path: ".symlinks/plugins/audioplayers_darwin/ios" auto_orientation: :path: ".symlinks/plugins/auto_orientation/ios" camera_avfoundation: @@ -144,12 +178,24 @@ EXTERNAL SOURCES: :path: Flutter flutter_native_contact_picker: :path: ".symlinks/plugins/flutter_native_contact_picker/ios" + flutter_pcm_sound: + :path: ".symlinks/plugins/flutter_pcm_sound/ios" + flutter_sound: + :path: ".symlinks/plugins/flutter_sound/ios" + flutter_voice_processor: + :path: ".symlinks/plugins/flutter_voice_processor/ios" fluttertoast: :path: ".symlinks/plugins/fluttertoast/ios" + g711_flutter: + :path: ".symlinks/plugins/g711_flutter/ios" google_maps_flutter_ios: :path: ".symlinks/plugins/google_maps_flutter_ios/ios" + image_gallery_saver: + :path: ".symlinks/plugins/image_gallery_saver/ios" image_picker_ios: :path: ".symlinks/plugins/image_picker_ios/ios" + just_audio: + :path: ".symlinks/plugins/just_audio/ios" network_info_plus: :path: ".symlinks/plugins/network_info_plus/ios" package_info_plus: @@ -184,17 +230,27 @@ SPEC CHECKSUMS: amap_flutter_map: 979e54d227cedac6c7504a2151bfbf3bcf96760a AMapFoundation: 9885c48fc3a78fdfb84a0299a2293e56ea3c9fec AMapLocation: 5248aec2455ebb5d104b367813c946430a2ee033 + audio_session: 4f3e461722055d21515cf3261b64c973c062f345 + audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40 auto_orientation: 102ed811a5938d52c86520ddd7ecd3a126b5d39d camera_avfoundation: 3125e8cd1a4387f6f31c6c63abb8a55892a9eeeb device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed EMASRest: 8df6f87836767a9415ad5cc4af739bc9d215b475 Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 flutter_native_contact_picker: bd430ba0fbf82768bb50c2c52a69a65759a8f907 + flutter_pcm_sound: de0572ca4f99091cc2abfcc31601b8a4ddd33c0e + flutter_sound: c60effa2a350fb977885f0db2fbc4c1ad5160900 + flutter_sound_core: 26c10e5832e76aaacfae252d8925232281c486ae + flutter_voice_processor: 53afbf59ad3feb82f4a379fea9ed8dc98495210f fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a + g711_flutter: 8f2769052d2cf3549f83d11e1c42d81d94441123 google_maps_flutter_ios: 590249c67f34f422122c232f2a626192adbc78ee - GoogleMaps: 025272d5876d3b32604e5c080dc25eaf68764693 + GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4 + image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5 + ios-voice-processor: 8e32d7f980a06d392d128ef1cd19cf6ddcaca3c1 + just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa network_info_plus: 6d0c3eb8367b8164fa3fb0c19875e3f59d49697f package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 @@ -203,12 +259,12 @@ SPEC CHECKSUMS: reactive_ble_mobile: 9ce6723d37ccf701dbffd202d487f23f5de03b4c shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a - SwiftProtobuf: 69f02cd54fb03201c5e6bf8b76f687c5ef7541a3 + SwiftProtobuf: 407a385e97fd206c4fbe880cc84123989167e0d1 Toast: 91b396c56ee72a5790816f40d3a94dd357abc196 url_launcher_ios: bf5ce03e0e2088bad9cc378ea97fa0ed5b49673b video_player_avfoundation: 81e49bb3d9fb63dccf9fa0f6d877dc3ddbeac126 webview_flutter_wkwebview: 2e2d318f21a5e036e2c3f26171342e95908bd60a -PODFILE CHECKSUM: adf6d8caf5faa9ea4ee2a2ea37f5aea37a6520d7 +PODFILE CHECKSUM: 42aa7ffc6134b996f93caa6a9b6a2b5b580ff28a COCOAPODS: 1.14.3 diff --git a/star_lock/ios/Runner/Info.plist b/star_lock/ios/Runner/Info.plist index 2014a808..b94c2bf8 100644 --- a/star_lock/ios/Runner/Info.plist +++ b/star_lock/ios/Runner/Info.plist @@ -65,6 +65,10 @@ UIMainStoryboardFile Main UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight diff --git a/star_lock/lib/blue/blue_manage.dart b/star_lock/lib/blue/blue_manage.dart index 4c7daa90..36c245ed 100644 --- a/star_lock/lib/blue/blue_manage.dart +++ b/star_lock/lib/blue/blue_manage.dart @@ -58,10 +58,7 @@ class BlueManage { } void _initSendStreamSubscription() { - _sendStreamSubscription ??= EventBusManager() - .eventBus! - .on() - .listen((EventSendModel model) { + _sendStreamSubscription ??= EventBusManager().eventBus!.on().listen((EventSendModel model) { if (model.sendChannel == DataChannel.ble) { // managerAppWriteData(model.data); writeCharacteristicWithResponse(model.data); @@ -72,21 +69,15 @@ class BlueManage { /// 开始扫描蓝牙设备 void startScan({List? idList}) { scanDevices.clear(); - _scanSubscription = _flutterReactiveBle! - .scanForDevices(withServices: idList ?? []) - .listen((device) { + _scanSubscription = _flutterReactiveBle!.scanForDevices(withServices: idList ?? []).listen((device) { // 判断名字为空的直接剔除 if (device.name.isEmpty) { return; } // print("startScanDevice:$device"); - if (((device.serviceUuids.isNotEmpty ? device.serviceUuids[0] : "") - .toString() - .contains("758824")) && - (device.rssi >= -100)) { + if (((device.serviceUuids.isNotEmpty ? device.serviceUuids[0] : "").toString().contains("758824")) && (device.rssi >= -100)) { // 查询id相同的元素 - final knownDeviceIndex = - scanDevices.indexWhere((d) => d.id == device.id); + final knownDeviceIndex = scanDevices.indexWhere((d) => d.id == device.id); // 不存在的时候返回-1 if (knownDeviceIndex >= 0) { scanDevices[knownDeviceIndex] = device; @@ -115,9 +106,7 @@ class BlueManage { Future _connect(String deviceName, ConnectStateCallBack connectStateCallBack) async { connectDeviceName = deviceName; // 判断数组列表里面是否有这个设备 - final knownDeviceIndex = - scanDevices.indexWhere((d) => d.name == deviceName); - + final knownDeviceIndex = scanDevices.indexWhere((d) => d.name == deviceName); if (knownDeviceIndex >= 0) { // 存在的时候赋值 connectDeviceMacAddress = scanDevices[knownDeviceIndex].id; @@ -156,21 +145,17 @@ class BlueManage { // 等待Completer完成 await completer.future; } - print( - "connectDeviceId:$connectDeviceMacAddress connectDeviceName:$connectDeviceName"); + print("connectDeviceId:$connectDeviceMacAddress connectDeviceName:$connectDeviceName"); if (connectDeviceMacAddress.isEmpty) { return; } - _currentConnectionStream = _flutterReactiveBle!.connectToDevice(id: connectDeviceMacAddress, connectionTimeout: const Duration(seconds: 10)).listen((connectionStateUpdate) async { // 获取状态 deviceConnectionState = connectionStateUpdate.connectionState; - print( - 'deviceConnectionState:$deviceConnectionState connectionStateUpdate.connectionState:${connectionStateUpdate.connectionState}'); - if (connectionStateUpdate.connectionState == - DeviceConnectionState.connected) { + print('deviceConnectionState:$deviceConnectionState connectionStateUpdate.connectionState:${connectionStateUpdate.connectionState}'); + if (connectionStateUpdate.connectionState == DeviceConnectionState.connected) { // 如果状态是连接的开始发现服务 try { _subScribeToCharacteristic(QualifiedCharacteristic(characteristicId: characteristicIdSubscription, serviceId: serviceIdConnect, deviceId: connectDeviceMacAddress)); @@ -188,13 +173,11 @@ class BlueManage { deviceConnectionState = connectionStateUpdate.connectionState; connectStateCallBack(deviceConnectionState!); } - print( - 'ConnectionState for device $connectDeviceMacAddress : ${connectionStateUpdate.connectionState}'); + print('ConnectionState for device $connectDeviceMacAddress : ${connectionStateUpdate.connectionState}'); }, onError: (Object e) { deviceConnectionState = DeviceConnectionState.disconnected; connectStateCallBack(deviceConnectionState!); - print( - 'Connecting to device $connectDeviceMacAddress resulted in error $e'); + print('Connecting to device $connectDeviceMacAddress resulted in error $e'); }); } @@ -202,26 +185,21 @@ class BlueManage { var allData = []; int? dataLen; _subScribeToCharacteristic(QualifiedCharacteristic characteristic) { - _flutterReactiveBle!.subscribeToCharacteristic(characteristic).listen( - (data) { + _flutterReactiveBle!.subscribeToCharacteristic(characteristic).listen((data) { // code to handle incoming data - print( - "subscribeToCharacteristic: deviceId = ${characteristic.deviceId} characteristicId =${characteristic.characteristicId}---上报来的数据data = $data"); - if ((data[0] == 0xEF) && - (data[1] == 0x01) && - (data[2] == 0xEE) && - (data[3] == 0x02)) { + // print("subscribeToCharacteristic: deviceId = ${characteristic.deviceId} characteristicId =${characteristic.characteristicId}---上报来的数据data = $data"); + if ((data[0] == 0xEF) && (data[1] == 0x01) && (data[2] == 0xEE) && (data[3] == 0x02)) { // 当包有头时 // 判断是否需要分包 dataLen = data[8] * 256 + data[9]; // 高16位用来指示后面数据块内容的长度 - print("dataLen1111:$dataLen getDataLength:${data.length}"); + // print("dataLen1111:$dataLen getDataLength:${data.length}"); if (dataLen! + 12 > data.length) { // 当前包的长度小于实际的包时 分包添加 不解析 allData.addAll(data); } else { // 当前包的长度小于实际的包时 不分包 解析 allData.addAll(data); - print("dataLen2222:$dataLen getDataLength:${data.length}"); + // print("dataLen2222:$dataLen getDataLength:${data.length}"); CommandReciverManager.appDataReceive(allData); // 发送完解析初始化数组 allData = []; @@ -230,9 +208,9 @@ class BlueManage { // 当包没有头时 是分包的包 直接添加 allData.addAll(data); // var len = allData[8] * 256 + allData[9]; - print("dataLen3333:$dataLen"); + // print("dataLen3333:$dataLen"); if ((dataLen! + 14) <= allData.length) { - print("44444数据被解析了"); + // print("44444数据被解析了"); // 当长度小于等于当前包的数据时 直接解析数据 CommandReciverManager.appDataReceive(allData); // 发送完解析初始化数组 diff --git a/star_lock/lib/main/lockDetail/lcokSet/configuringWifi/configuringWifi_logic.dart b/star_lock/lib/main/lockDetail/lcokSet/configuringWifi/configuringWifi_logic.dart index 8fefc5eb..2fda5d7e 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/configuringWifi/configuringWifi_logic.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/configuringWifi/configuringWifi_logic.dart @@ -128,6 +128,10 @@ class ConfiguringWifiLogic extends BaseGetXController{ // 权限校验错误 print("${reply.commandType}校验错误"); + break; + case 0xff: + //成功 + Toast.show(msg: "配网失败"); break; default: //失败 @@ -141,8 +145,8 @@ class ConfiguringWifiLogic extends BaseGetXController{ Future senderConfiguringWifiAction() async { showEasyLoading(); BlueManage().judgeReconnect(BlueManage().connectDeviceName, (DeviceConnectionState connectionState) async { - dismissEasyLoading(); if (connectionState == DeviceConnectionState.connected){ + dismissEasyLoading(); var privateKey = await Storage.getStringList(saveBluePrivateKey); List getPrivateKeyList = changeStringListToIntList(privateKey!); @@ -169,13 +173,13 @@ class ConfiguringWifiLogic extends BaseGetXController{ serversList.add(int.parse(element)); } print('Resolved google.com to address: ${addresses.first.address} serversList:${serversList}'); - - double typeDouble = int.parse(item.port!) / 256; - int type1 = typeDouble.toInt(); - int type2 = int.parse(item.port!) % 256; - serversList.add(type1); - serversList.add(type2); } + + double typeDouble = int.parse(item.port!) / 256; + int type1 = typeDouble.toInt(); + int type2 = int.parse(item.port!) % 256; + serversList.add(type1); + serversList.add(type2); } String? phone = ''; @@ -200,6 +204,9 @@ class ConfiguringWifiLogic extends BaseGetXController{ publicKey: publicKeyDataList, privateKey: getPrivateKeyList, ); + } else if (connectionState == DeviceConnectionState.disconnected) { + dismissEasyLoading(); + showBlueConnetctToast(); } }); } diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart b/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart index e6526123..42d89d22 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart @@ -27,9 +27,7 @@ import 'checkingInInfoData_entity.dart'; import 'lockSet_state.dart'; typedef BlockSetStateCallback = void Function(); -typedef BlockSetCheckInCallback = void Function( - CheckingInInfoDataEntity checkingInInfoDataEntity); -typedef BlockDeletNumberCheckPasswordCallback = void Function(); +typedef BlockSetCheckInCallback = void Function(CheckingInInfoDataEntity checkingInInfoDataEntity); class LockSetLogic extends BaseGetXController { final LockSetState state = LockSetState(); @@ -258,9 +256,10 @@ class LockSetLogic extends BaseGetXController { // 删除用户 Future deletUserAction() async { - BlueManage().judgeReconnect(BlueManage().connectDeviceName, - (DeviceConnectionState connectionState) async { + showEasyLoading(); + BlueManage().judgeReconnect(BlueManage().connectDeviceName, (DeviceConnectionState connectionState) async { if (connectionState == DeviceConnectionState.connected) { + dismissEasyLoading(); var privateKey = await Storage.getStringList(saveBluePrivateKey); List getPrivateKeyList = changeStringListToIntList(privateKey!); @@ -283,6 +282,7 @@ class LockSetLogic extends BaseGetXController { privateKey: getPrivateKeyList, token: getTokenList); } else if (connectionState == DeviceConnectionState.disconnected) { + dismissEasyLoading(); showDeletAlertTipDialog(Get.context!); } }); @@ -291,8 +291,7 @@ class LockSetLogic extends BaseGetXController { // 恢复出厂设置 Future factoryDataResetAction() async { showEasyLoading(); - BlueManage().judgeReconnect(BlueManage().connectDeviceName, - (DeviceConnectionState connectionState) async { + BlueManage().judgeReconnect(BlueManage().connectDeviceName, (DeviceConnectionState connectionState) async { if (connectionState == DeviceConnectionState.connected) { dismissEasyLoading(); var privateKey = await Storage.getStringList(saveBluePrivateKey); @@ -348,8 +347,7 @@ class LockSetLogic extends BaseGetXController { // 设置支持功能(带参数) Future sendBurglarAlarm(int type) async { showEasyLoading(); - BlueManage().judgeReconnect(BlueManage().connectDeviceName, - (DeviceConnectionState connectionState) async { + BlueManage().judgeReconnect(BlueManage().connectDeviceName, (DeviceConnectionState connectionState) async { if (connectionState == DeviceConnectionState.connected) { dismissEasyLoading(); var privateKey = await Storage.getStringList(saveBluePrivateKey); @@ -473,41 +471,32 @@ class LockSetLogic extends BaseGetXController { password: state.passwordTF.text, ); if (entity.errorCode!.codeIsSuccessful) { - // blockDeletNumberCheckPasswordCallback(); Get.back(); - // if(state.currentDeviceUUid.value[31] == "1"){ - - // 判断是否是锁的拥有者 - if (state.lockSetInfoData.value.lockBasicInfo!.isLockOwner == 1) { - // 判断是否扫描到当前设备 调用删除锁协议 - factoryDataResetAction(); - } else { - // 判断是否扫描到当前设备 - if (BlueManage().connectDeviceMacAddress.isNotEmpty) { - // 调用删除钥匙协议 - deletUserAction(); - } else { + if(state.currentDeviceUUid.value.isEmpty){ + // 扫描到的设备列表里面灭有 直接弹窗调用删除锁接口 + showDeletAlertTipDialog(Get.context!); + }else{ + // 当扫描的数组里面是否有当前设备 + if(state.currentDeviceUUid.value[31] == "1"){ + // 已配对 表示这把锁未被初始化,还处于被添加状态 + if (state.lockSetInfoData.value.lockBasicInfo!.isLockOwner == 1) { + // 如果是锁拥有者直接删除锁,调用初始化协议 + factoryDataResetAction(); + } else { + // 不是锁拥有者,调用删除钥匙协议 + deletUserAction(); + } + }else if(state.currentDeviceUUid.value[31] == "0"){ + // 未配对 表示这把锁已被强制初始化 处于可添加状态 直接弹窗删除即可 showDeletAlertTipDialog(Get.context!); } } - - // }else if(state.currentDeviceUUid.value[31] == "0"){ - // // 未配对 - // if(state.getKeyInfosData.value.isLockOwner == 1){ - // // 直接调用删除锁接口 - // deletLockInfoData(); - // }else{ - // // 直接调用删除要是接口 - // deletKeyData(); - // } - // } } } // 开启考勤获取是否有公司 - void openCheckingInData( - BlockSetCheckInCallback blockSetCheckInCallback) async { + void openCheckingInData(BlockSetCheckInCallback blockSetCheckInCallback) async { var entity = await ApiRepository.to.openCheckingInData( lockId: state.lockSetInfoData.value.lockId.toString(), ); @@ -528,10 +517,8 @@ class LockSetLogic extends BaseGetXController { state.isAttendance.value = (state.isAttendance.value == 1 ? 0 : 1); state.lockSettingInfo.value.attendance = state.isAttendance.value; - eventBus.fire(LockSetChangeSetRefreshLockDetailWithType( - 0, state.lockSettingInfo.value.attendance!)); - print( - "state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}"); + eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(0, state.lockSettingInfo.value.attendance!)); + print("state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}"); Toast.show(msg: "设置成功"); } } @@ -545,10 +532,8 @@ class LockSetLogic extends BaseGetXController { if (entity.errorCode!.codeIsSuccessful) { eventBus.fire(RefreshLockListInfoDataEvent()); - state.isLockPickingReminder.value = - (state.isLockPickingReminder.value == 1 ? 0 : 1); - state.lockSettingInfo.value.unlockReminderPush = - state.isLockPickingReminder.value; + state.isLockPickingReminder.value = (state.isLockPickingReminder.value == 1 ? 0 : 1); + state.lockSettingInfo.value.unlockReminderPush = state.isLockPickingReminder.value; Toast.show(msg: "设置成功"); } else {} } @@ -562,15 +547,11 @@ class LockSetLogic extends BaseGetXController { if (entity.errorCode!.codeIsSuccessful) { eventBus.fire(RefreshLockListInfoDataEvent()); - state.isOpenLockNeedOnline.value = - (state.isOpenLockNeedOnline.value == 1 ? 0 : 1); - state.lockSettingInfo.value.appUnlockOnline = - state.isOpenLockNeedOnline.value; + state.isOpenLockNeedOnline.value = (state.isOpenLockNeedOnline.value == 1 ? 0 : 1); + state.lockSettingInfo.value.appUnlockOnline = state.isOpenLockNeedOnline.value; - eventBus.fire(LockSetChangeSetRefreshLockDetailWithType( - 0, state.lockSettingInfo.value.appUnlockOnline!)); - print( - "state.lockSettingInfo.value.appUnlockOnline:${state.lockSettingInfo.value.appUnlockOnline}"); + eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(0, state.lockSettingInfo.value.appUnlockOnline!)); + print("state.lockSettingInfo.value.appUnlockOnline:${state.lockSettingInfo.value.appUnlockOnline}"); Toast.show(msg: "设置成功"); } } @@ -579,21 +560,20 @@ class LockSetLogic extends BaseGetXController { StreamSubscription? _passCurrentLockInformationEvent; void initLoadDataAction(BlockSetStateCallback blockSetStateCallback) { // 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus - _passCurrentLockInformationEvent = - eventBus.on().listen((event) { + _passCurrentLockInformationEvent = eventBus.on().listen((event) { // state.lockSetInfoData.value = event.keyInfo; blockSetStateCallback(); }); } - // Uuid删除当前锁时 有可能锁被初始化了 但后台没被初始化 当打开APP的时候扫描如果未被连接就传uuid过去 判断直接删除数据 - StreamSubscription? _scanAllDeviceFindCurrentDeviceConnectedEvent; - void initLoadDataScanAllDeviceFindCurrentDeviceAction() { - // 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus - _scanAllDeviceFindCurrentDeviceConnectedEvent = eventBus - .on() - .listen((event) { - state.currentDeviceUUid.value = event.uuid; + late StreamSubscription>_scanListDiscoveredDeviceSubscription; + void _scanListDiscoveredDeviceSubscriptionAction() { + _scanListDiscoveredDeviceSubscription = EventBusManager().eventBus!.on>().listen((List list) { + final knownDeviceIndex = list.indexWhere((d) => d.name == BlueManage().connectDeviceName); + if (knownDeviceIndex >= 0) { + // 存在的时候赋值 + state.currentDeviceUUid.value = (list[knownDeviceIndex].serviceUuids.isNotEmpty ? list[knownDeviceIndex].serviceUuids[0] : "").toString(); + } }); } @@ -615,8 +595,7 @@ class LockSetLogic extends BaseGetXController { child: Text(TranslationLoader.lanKeys!.sure!.tr), onPressed: () { Navigator.pop(context); - if (state.lockSetInfoData.value.lockBasicInfo!.isLockOwner == - 1) { + if (state.lockSetInfoData.value.lockBasicInfo!.isLockOwner == 1) { // 直接调用删除锁接口 deletLockInfoData(); } else { @@ -640,7 +619,7 @@ class LockSetLogic extends BaseGetXController { getLockSettingInfoData(); _initReplySubscription(); - initLoadDataScanAllDeviceFindCurrentDeviceAction(); + _scanListDiscoveredDeviceSubscriptionAction(); } @override @@ -655,6 +634,6 @@ class LockSetLogic extends BaseGetXController { // TODO: implement onClose _replySubscription.cancel(); _passCurrentLockInformationEvent!.cancel(); - _scanAllDeviceFindCurrentDeviceConnectedEvent!.cancel(); + _scanListDiscoveredDeviceSubscription.cancel(); } } diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart index 1c7d69c2..0d9c6136 100644 --- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart +++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart @@ -65,11 +65,6 @@ class LockDetailLogic extends BaseGetXController { // 开门数据解析 Future _replyOpenLock(Reply reply) async { - var tokenData = reply.data.sublist(2, 6); - var saveStrList = changeIntListToStringList(tokenData); - print("openDoorToken:$tokenData"); - Storage.setStringList(saveBlueToken, saveStrList); - int status = reply.data[6]; print("status:$status"); @@ -98,6 +93,11 @@ class LockDetailLogic extends BaseGetXController { var signKey = await Storage.getStringList(saveBlueSignKey); List signKeyDataList = changeStringListToIntList(signKey!); + var tokenData = reply.data.sublist(2, 6); + var saveStrList = changeIntListToStringList(tokenData); + Storage.setStringList(saveBlueToken, saveStrList); + print("openDoorToken:$tokenData"); + IoSenderManage.senderOpenLock( keyID: BlueManage().connectDeviceName, userID: await Storage.getUid(), @@ -353,14 +353,9 @@ class LockDetailLogic extends BaseGetXController { var signKey = await Storage.getStringList(saveBlueSignKey); List signKeyDataList = changeStringListToIntList(signKey!); - bool isHave = await Storage.ifHaveKey(saveBlueToken); - List getTokenList; - if (isHave) { - var token = await Storage.getStringList(saveBlueToken); - getTokenList = changeStringListToIntList(token!); - } else { - getTokenList = [0, 0, 0, 0]; - } + var token = await Storage.getStringList(saveBlueToken); + List getTokenList = changeStringListToIntList(token!); + print("openDoorTokenPubToken:$getTokenList getPrivateKeyList:$getPrivateKeyList"); IoSenderManage.senderOpenLock( keyID: BlueManage().connectDeviceName, @@ -374,7 +369,10 @@ class LockDetailLogic extends BaseGetXController { privateKey: getPrivateKeyList, ); }else if (deviceConnectionState == DeviceConnectionState.disconnected){ - Toast.show(msg: "连接设备失败,请确保在设备附近,设备未被连接,设备已打开"); + if(state.lockState.value != 2){ + // 2的状态是从已经连接上了 然后没有进行任何操作 锁板主动断开了 所以只需要改变开锁按钮状态不需要弹出toast + Toast.show(msg: "连接设备失败,请确保在设备附近,设备未被连接,设备已打开"); + } state.lockState.value = 4; state.animationController.reset(); state.animationController.forward(); diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart index 988bceab..d2fa3b12 100644 --- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart +++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart @@ -66,7 +66,8 @@ class _LockDetailPageState extends State with TickerProviderStat var saveSignKeyList = changeIntListToStringList(signKeyData); Storage.setStringList(saveBlueSignKey, saveSignKeyList); - Storage.setStringList(saveBlueToken, [0, 0, 0, 0]); + var saveTokenList = changeIntListToStringList([0, 0, 0, 0]); + Storage.setStringList(saveBlueToken, saveTokenList); // logic.startScanAction(); listeningAnimations(); diff --git a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart index 09c52a9f..02528936 100644 --- a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart +++ b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart @@ -396,7 +396,9 @@ class LockMonitoringLogic extends BaseGetXController { print("锁详情界面销毁了"); _getTVDataRefreshUIEvent!.cancel(); _getUDPStatusRefreshUIEvent!.cancel(); - state.oneMinuteTimeTimer.cancel(); + if(state.oneMinuteTimeTimer != null){ + state.oneMinuteTimeTimer.cancel(); + } stopProcessing(); } } diff --git a/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart b/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart index 185ccd34..faa911f8 100644 --- a/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart +++ b/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart @@ -33,7 +33,7 @@ class NearbyLockLogic extends BaseGetXController { IoSenderManage.getPublicKey(lockId: deviceName); }else if (state == DeviceConnectionState.disconnected) { dismissEasyLoading(); - showBlueConnetctToast(); + // showBlueConnetctToast(); } }); } @@ -181,8 +181,7 @@ class NearbyLockLogic extends BaseGetXController { var serialNum0 = reply.data.sublist(84, 100); var serialNum0Str = utf8String(serialNum0); // state.lockInfo["serialNum0"] = serialNum0Str; - state.lockInfo["serialNum0"] = - "${DateTime.now().millisecondsSinceEpoch ~/ 10}"; + state.lockInfo["serialNum0"] = "${DateTime.now().millisecondsSinceEpoch ~/ 10}"; // print("serialNum0Str:$serialNum0Str serialNum0Str:${serialNum0Str.length}"); // 成品商序列号 @@ -345,19 +344,13 @@ class NearbyLockLogic extends BaseGetXController { }); } - late StreamSubscription> - _scanListDiscoveredDeviceSubscription; + late StreamSubscription>_scanListDiscoveredDeviceSubscription; void _scanListDiscoveredDeviceSubscriptionAction() { - _scanListDiscoveredDeviceSubscription = EventBusManager() - .eventBus! - .on>() - .listen((List list) { + _scanListDiscoveredDeviceSubscription = EventBusManager().eventBus!.on>().listen((List list) { state.devices.clear(); for (int i = 0; i < list.length; i++) { DiscoveredDevice device = list[i]; - if (((device.serviceUuids.isNotEmpty ? device.serviceUuids[0] : "") - .toString()[31] != - "1")) { + if (((device.serviceUuids.isNotEmpty ? device.serviceUuids[0] : "").toString()[31] != "1")) { state.devices.add(list[i]); } } diff --git a/star_lock/lib/mine/addLock/saveLock/saveLock_logic.dart b/star_lock/lib/mine/addLock/saveLock/saveLock_logic.dart index 7120ab18..3b203e5b 100644 --- a/star_lock/lib/mine/addLock/saveLock/saveLock_logic.dart +++ b/star_lock/lib/mine/addLock/saveLock/saveLock_logic.dart @@ -103,10 +103,13 @@ class SaveLockLogic extends BaseGetXController { // 添加用户 Future addUserConnectBlue() async { + // print("111111"); // 进来之后首先连接 showEasyLoading(); BlueManage().judgeReconnect(BlueManage().connectDeviceName, (DeviceConnectionState state) async { + // print("222222"); if (state == DeviceConnectionState.connected){ + // print("333333"); dismissEasyLoading(); // 私钥 var privateKey = await Storage.getStringList(saveBluePrivateKey); @@ -138,6 +141,7 @@ class SaveLockLogic extends BaseGetXController { token: getTokenList ); } else if (state == DeviceConnectionState.disconnected) { + print("444444"); dismissEasyLoading(); showBlueConnetctToast(); } @@ -212,7 +216,7 @@ class SaveLockLogic extends BaseGetXController { @override void onClose() { // TODO: implement onClose - super.onClose(); _replySubscription.cancel(); + super.onClose(); } } diff --git a/star_lock/lib/mine/addLock/saveLock/saveLock_page.dart b/star_lock/lib/mine/addLock/saveLock/saveLock_page.dart index 0f3e8311..f2999cee 100644 --- a/star_lock/lib/mine/addLock/saveLock/saveLock_page.dart +++ b/star_lock/lib/mine/addLock/saveLock/saveLock_page.dart @@ -1,3 +1,4 @@ + import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; diff --git a/star_lock/lib/network/api.dart b/star_lock/lib/network/api.dart index a150c7c7..00bb99ef 100644 --- a/star_lock/lib/network/api.dart +++ b/star_lock/lib/network/api.dart @@ -1,6 +1,7 @@ abstract class Api { - static String baseAddress = "https://pre.lock.star-lock.cn:8093"; //预发布环境 - // static String baseAddress = "http://192.168.56.101:8099"; //联调环境 + // static String baseAddress = "https://pre.lock.star-lock.cn:8093"; //预发布环境 + static String baseAddress = "http://192.168.56.101:8099"; //联调环境 + // static String baseAddress = "http://192.168.1.15:8022"; //谢总本地 final String baseUrl = "$baseAddress/api"; diff --git a/star_lock/lib/tools/eventBusEventManage.dart b/star_lock/lib/tools/eventBusEventManage.dart index 5bb02c60..eb2a6e51 100644 --- a/star_lock/lib/tools/eventBusEventManage.dart +++ b/star_lock/lib/tools/eventBusEventManage.dart @@ -32,12 +32,6 @@ class ChickInAddStaffCardAndFingerprintBlockNumberEvent { ChickInAddStaffCardAndFingerprintBlockNumberEvent(this.number); } -/// Uuid删除当前锁时 有可能锁被初始化了 但后台没被初始化 当打开APP的时候扫描如果未被连接就传uuid过去 判断直接删除数据 -class ScanAllDeviceFindCurrentDeviceConnectedEvent { - String uuid; - ScanAllDeviceFindCurrentDeviceConnectedEvent(this.uuid); -} - /// 多语言 切换之后传值到上一级界面 class ChangeLanguageBlockLastLanguageEvent { String languageTitle;