From b8e6c52afeee29022b8c9c6095bc23b214c16eb6 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, 7 Oct 2024 09:16:21 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=89=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 86ff92ca..27ff15dc 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -93,8 +93,9 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # 1.0.79+2024083001:测试所有国家国际化功能 # 1.0.79+2024083001:测试开完锁数据上传功能 # 1.0.81+2024092901:添加开锁数据收集功能 +# 1.0.82+2024093001:优化开锁数据收集功能 -version: 1.0.81+2024090201 +version: 1.0.82+2024093001 environment: sdk: '>=2.12.0 <3.0.0' From 07aa8a720c3d86367e3478da94119f2b66654040 Mon Sep 17 00:00:00 2001 From: Liuyf Date: Sat, 12 Oct 2024 11:27:01 +0800 Subject: [PATCH 02/13] =?UTF-8?q?feat:=20Android=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E9=A6=96=E6=AC=A1=E7=9B=B4=E8=BF=9E=E5=BC=80=E9=94=81=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E5=90=8E=E6=8D=85=E8=BF=87=E6=89=AB=E6=8F=8F=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=BC=80=E9=94=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/blue/blue_manage.dart | 244 ++++++++++++++++++++++---------------- 1 file changed, 144 insertions(+), 100 deletions(-) diff --git a/lib/blue/blue_manage.dart b/lib/blue/blue_manage.dart index 805b7a79..e2581afb 100755 --- a/lib/blue/blue_manage.dart +++ b/lib/blue/blue_manage.dart @@ -73,6 +73,7 @@ class BlueManage { List lastTimeData = []; int? dataLen; Timer? scanSingleTimer; + bool needScanSingle = false; static BlueManage? _manager; @@ -141,7 +142,8 @@ class BlueManage { } /// 开始指定设备名称的扫描蓝牙设备 - Future startScanSingle(String deviceName, int timeout, ScanDevicesCallBack scanDevicesCallBack) async { + Future startScanSingle(String deviceName, int timeout, + ScanDevicesCallBack scanDevicesCallBack) async { final DateTime start = DateTime.now(); FlutterBluePlus.isSupported.then((bool isAvailable) async { if (isAvailable) { @@ -151,8 +153,7 @@ class BlueManage { BuglyTool.uploadException( message: '开始指定设备名称的扫描蓝牙设备', detail: '调用方法是:startScanSingle 指定设备名称是:$deviceName', - upload: false - ); + upload: false); //android 扫描比较慢,取样只要 3 分之一 final int divisor = Platform.isAndroid ? 3 : 1; FlutterBluePlus.startScan( @@ -172,9 +173,9 @@ class BlueManage { '扫描到的设备数:${results.length} 是否查找到 $isExit 以查找$milliseconds毫秒'); BuglyTool.uploadException( message: '指定设备名称的扫描蓝牙设备 监听扫描结果', - detail: 'startScanSingle$deviceName 监听扫描结果 是否查找到 $isExit 以查找$milliseconds毫秒 扫描到的设备数:${results.length} results:$results', - upload: false - ); + detail: + 'startScanSingle$deviceName 监听扫描结果 是否查找到 $isExit 以查找$milliseconds毫秒 扫描到的设备数:${results.length} results:$results', + upload: false); if (isExit) { for (final ScanResult scanResult in results) { if (((scanResult.advertisementData.serviceUuids.isNotEmpty @@ -198,21 +199,22 @@ class BlueManage { } BuglyTool.uploadException( message: '遍历扫描到的结果跟缓存的结果对比,如果有最新的就更新缓存', - detail: 'startScanSingle deviceName:$deviceName 查询到的结果scanResult:$scanResult', - upload: false - ); + detail: + 'startScanSingle deviceName:$deviceName 查询到的结果scanResult:$scanResult', + upload: false); } } completer.complete(); } }, onError: (e) { - BuglyTool.uploadException( - message: '指定设备名称的扫描蓝牙设备 监听扫描结果失败', - detail: '打印失败问题 e:${e.toString()}', - upload: false - ); - AppLog.log('扫描失败:$e',); + BuglyTool.uploadException( + message: '指定设备名称的扫描蓝牙设备 监听扫描结果失败', + detail: '打印失败问题 e:${e.toString()}', + upload: false); + AppLog.log( + '扫描失败:$e', + ); }); FlutterBluePlus.cancelWhenScanComplete(subscription); await completer.future; @@ -222,8 +224,7 @@ class BlueManage { BuglyTool.uploadException( message: '指定设备名称的扫描蓝牙设备 内部逻辑整形失败', detail: 'tartScanSingle内部逻辑整形失败 e:${e.toString()}', - upload: false - ); + upload: false); AppLog.log('扫描失败'); } } else { @@ -311,26 +312,26 @@ class BlueManage { if (bluetoothConnectionState != BluetoothConnectionState.connected) { BuglyTool.uploadException( message: '点击按钮 蓝牙未连接 下一步扫描连接蓝牙', - detail: 'blueSendData 蓝牙连接状态 bluetoothConnectionState:$bluetoothConnectionState deviceName:$deviceName', - upload: false - ); + detail: + 'blueSendData 蓝牙连接状态 bluetoothConnectionState:$bluetoothConnectionState deviceName:$deviceName', + upload: false); _connect(deviceName, (BluetoothConnectionState state) { stateCallBack(bluetoothConnectionState!); }, isAddEquipment: isAddEquipment); } else { BuglyTool.uploadException( message: '点击按钮 蓝牙已经连接 下一步扫描连接蓝牙', - detail: 'blueSendData 直接回调状态 蓝牙连接状态bluetoothConnectionState:$bluetoothConnectionState deviceName:$deviceName', - upload: false - ); + detail: + 'blueSendData 直接回调状态 蓝牙连接状态bluetoothConnectionState:$bluetoothConnectionState deviceName:$deviceName', + upload: false); stateCallBack(bluetoothConnectionState!); } } else { BuglyTool.uploadException( message: '点击按钮 蓝牙未打开', - detail: 'blueSendData 蓝牙未打开--_adapterState:${BluetoothAdapterState.on} deviceName:$deviceName', - upload: false - ); + detail: + 'blueSendData 蓝牙未打开--_adapterState:${BluetoothAdapterState.on} deviceName:$deviceName', + upload: false); try { stateCallBack(BluetoothConnectionState.disconnected); openBlue(); @@ -338,17 +339,16 @@ class BlueManage { AppLog.log('蓝牙打开失败'); BuglyTool.uploadException( message: '点击按钮 蓝牙未打开 然后蓝牙打开失败', - detail: 'blueSendData 蓝牙打开失败--_adapterState:${BluetoothAdapterState.on} deviceName:$deviceName', - upload: false - ); + detail: + 'blueSendData 蓝牙打开失败--_adapterState:${BluetoothAdapterState.on} deviceName:$deviceName', + upload: false); } } } else { BuglyTool.uploadException( message: '点击按钮 蓝牙状态不可用', detail: 'blueSendData 蓝牙状态不可用--isAvailable:$isAvailable', - upload: false - ); + upload: false); stateCallBack(BluetoothConnectionState.disconnected); AppLog.log('开始扫描 蓝牙不可用,不能进行蓝牙操作'); } @@ -365,38 +365,74 @@ class BlueManage { // 是否有缓存设备 true是有缓存设备 final bool isExistDevice = isExistScanDevices(connectDeviceName); // 是否是当前设备 - final bool isCurrentDevice = CommonDataManage().currentKeyInfo.lockName == deviceName; + final bool isCurrentDevice = + CommonDataManage().currentKeyInfo.lockName == deviceName; // mac地址 final String? mac = CommonDataManage().currentKeyInfo.mac; AppLog.log('开始连接 是否存在缓存:$isExistDevice 是否是当前设备:$isCurrentDevice mac:$mac'); - if (GetPlatform.isAndroid && !isExistDevice && isCurrentDevice && mac != null) { + if (GetPlatform.isAndroid && + !isExistDevice && + isCurrentDevice && + mac != null) { // 当是安卓设备 且不存在缓存设备 且是当前设备 且mac地址不为空 BuglyTool.uploadException( message: '开始连接 当是安卓设备 且不存在缓存设备 且是当前设备 且mac地址不为空 上传记录当前方法是:_connect', - detail: '调用方法_connect deviceName:$deviceName GetPlatform.isAndroid:${GetPlatform.isAndroid} isExistDevice:$isExistDevice mac:$mac', - upload: false - ); - scanSingleTimer?.cancel(); + detail: + '调用方法_connect deviceName:$deviceName GetPlatform.isAndroid:${GetPlatform.isAndroid} isExistDevice:$isExistDevice mac:$mac needScanSingle:$needScanSingle', + upload: false); + // scanSingleTimer?.cancel(); // 兼容android 的低配手机 - await doNotSearchBLE(mac, connectStateCallBack, isAddEquipment: isAddEquipment); - // - scanSingleTimer = Timer(3.seconds, () { - scanSingleTimer?.cancel(); + try { + if (!needScanSingle) { + BuglyTool.uploadException( + message: + '开始连接 当是安卓设备 且不存在缓存设备 且是当前设备 且mac地址不为空 上传记录当前方法是:_connect', + detail: '调用方法doNotSearchBLE,直接连接,needScanSingle:$needScanSingle', + upload: false); + await doNotSearchBLE(mac, connectStateCallBack, + isAddEquipment: isAddEquipment); + } else { + BuglyTool.uploadException( + message: + '开始连接 当是安卓设备 且不存在缓存设备 且是当前设备 且mac地址不为空 上传记录当前方法是:_connect', + detail: + '调用方法startScanSingle,执行扫描函数,needScanSingle:$needScanSingle', + upload: false); + startScanSingle(deviceName, 15, (List scanDevices) { + _connectDevice(scanDevices, deviceName, connectStateCallBack, + isAddEquipment: isAddEquipment); + }); + } + } catch (e) { BuglyTool.uploadException( - message: '开始连接 当是安卓设备 且不存在缓存设备 且是当前设备 且mac地址不为空 3秒以后调用startScanSingle 上传记录当前方法是:_connect', - detail: '_connect deviceName:$deviceName scanSingleTimer调用startScanSingle', - upload: false - ); - startScanSingle(deviceName, 15, (List scanDevices) => null); - }); + message: '开始连接 当是安卓设备 且不存在缓存设备 且是当前设备 且mac地址不为空 上传记录当前方法是:_connect', + detail: '调用方法doNotSearchBLE发生异常,执行扫描函数 startScanSingle,异常信息:$e', + upload: false); + startScanSingle(deviceName, 15, (List scanDevices) { + _connectDevice(scanDevices, deviceName, connectStateCallBack, + isAddEquipment: isAddEquipment); + }); + } + // + // scanSingleTimer = Timer(3.seconds, () { + // scanSingleTimer?.cancel(); + // BuglyTool.uploadException( + // message: + // '开始连接 当是安卓设备 且不存在缓存设备 且是当前设备 且mac地址不为空 3秒以后调用startScanSingle 上传记录当前方法是:_connect', + // detail: + // '_connect deviceName:$deviceName scanSingleTimer调用startScanSingle', + // upload: false); + // startScanSingle(deviceName, 15, (List scanDevices) => null); + // });ƒ } else if (isAddEquipment == false && isExistDevice == false) { // 取消缓存直接使用,存在配对场景设备信息会更变 BuglyTool.uploadException( - message: '取消缓存直接使用,存在配对场景设备信息会更变 然后开始指定设备名称的扫描蓝牙设备 上传记录当前方法是:_connect', - detail: '符合条件(isAddEquipment == false && isExistDevice == false) 下一步调用startScanSingle', - upload: false - ); + message: + '取消缓存直接使用,存在配对场景设备信息会更变 然后开始指定设备名称的扫描蓝牙设备 上传记录当前方法是:_connect', + detail: + '符合条件(isAddEquipment == false && isExistDevice == false) 下一步调用startScanSingle', + upload: false); // AppLog.log('无存在设备需要扫描 deviceName:$deviceName isAddEquipment:$isAddEquipment'); startScanSingle(deviceName, 15, (List scanDevices) { @@ -406,9 +442,9 @@ class BlueManage { } else { BuglyTool.uploadException( message: '没有扫描直接调用连接设备 上传记录当前方法是:_connect', - detail: '走这个方法是有缓存或者添加设备的时候以及不符合(GetPlatform.isAndroid && !isExistDevice && isCurrentDevice && mac != null) deviceName:$deviceName 直接调用_connectDevice', - upload: false - ); + detail: + '走这个方法是有缓存或者添加设备的时候以及不符合(GetPlatform.isAndroid && !isExistDevice && isCurrentDevice && mac != null) deviceName:$deviceName 直接调用_connectDevice', + upload: false); // AppLog.log('安卓或者iOS 存在设备不需要扫描 deviceName:$deviceName isAddEquipment:$isAddEquipment'); _connectDevice(devicesList, deviceName, connectStateCallBack, isAddEquipment: isAddEquipment); @@ -417,18 +453,19 @@ class BlueManage { //查找缓存里面是否有设备 bool isExistScanDevices(String connectDeviceName) { - final bool isExistDevice = scanDevices.any((ScanResult element) => element.device.platformName == connectDeviceName || element.advertisementData.advName == connectDeviceName); + final bool isExistDevice = scanDevices.any((ScanResult element) => + element.device.platformName == connectDeviceName || + element.advertisementData.advName == connectDeviceName); return isExistDevice; } Future _connectDevice( List devicesList, String deviceName, - ConnectStateCallBack connectStateCallBack, - { - bool isAddEquipment = false, // 是否是添加设备之前 - bool isReconnect = true, // 是否是重连 - }) async { + ConnectStateCallBack connectStateCallBack, { + bool isAddEquipment = false, // 是否是添加设备之前 + bool isReconnect = true, // 是否是重连 + }) async { // 判断数组列表里面是否有这个设备 // AppLog.log("devicesList:$devicesList"); @@ -453,25 +490,27 @@ class BlueManage { } if (scanResult == null || connectDeviceMacAddress.isEmpty) { BuglyTool.uploadException( - message: '扫描结果scanResult == null || connectDeviceMacAddress.isEmpty不往下执行 return 上传记录当前方法是:_connectDevice', - detail: 'scanResult:$scanResult connectDeviceMacAddress:$connectDeviceMacAddress', - upload: false - ); + message: + '扫描结果scanResult == null || connectDeviceMacAddress.isEmpty不往下执行 return 上传记录当前方法是:_connectDevice', + detail: + 'scanResult:$scanResult connectDeviceMacAddress:$connectDeviceMacAddress', + upload: false); return; } AppLog.log('调用了停止扫描的方法'); await stopScan(); - if ((scanResult.advertisementData.serviceUuids[0].toString()[31] == '0') && isAddEquipment == false) { + if ((scanResult.advertisementData.serviceUuids[0].toString()[31] == '0') && + isAddEquipment == false) { // 添加这个判断是因为有些苹果设备或者安卓等性能比较好的设备时,添加完锁之后,锁板未改变为已添加状态之前,就进行了蓝牙连接,导致添加完锁就失败,这里进行了判断,如果第一次连接失败,就清除缓存重新扫描连接 if (isReconnect == true) { AppLog.log('该锁已被重置, 重新发送扫描命令'); BuglyTool.uploadException( message: '该锁已被重置, 重新发送扫描命令startScanSingle 上传记录当前方法是:_connectDevice', - detail: '添加这个判断是因为有些苹果设备或者安卓等性能比较好的设备时,添加完锁之后,锁板未改变为已添加状态之前,就进行了蓝牙连接,导致添加完锁就失败,这里进行了判断,如果第一次连接失败,就清除缓存重新扫描连接 该锁已被重置, 重新发送扫描命令 serviceUuids:${scanResult.advertisementData.serviceUuids[0].toString()}', - upload: false - ); + detail: + '添加这个判断是因为有些苹果设备或者安卓等性能比较好的设备时,添加完锁之后,锁板未改变为已添加状态之前,就进行了蓝牙连接,导致添加完锁就失败,这里进行了判断,如果第一次连接失败,就清除缓存重新扫描连接 该锁已被重置, 重新发送扫描命令 serviceUuids:${scanResult.advertisementData.serviceUuids[0].toString()}', + upload: false); scanDevices.clear(); startScanSingle(deviceName, 15, (List scanDevices) { @@ -485,18 +524,18 @@ class BlueManage { BuglyTool.uploadException( message: '提示该锁已被重置, 回调断开连接, 清除缓存,上传记录当前方法是:_connectDevice', - detail: 'isReconnect:$isReconnect serviceUuids:${scanResult.advertisementData.serviceUuids[0].toString()}', - upload: false - ); + detail: + 'isReconnect:$isReconnect serviceUuids:${scanResult.advertisementData.serviceUuids[0].toString()}', + upload: false); } return; } BuglyTool.uploadException( message: '从devicesList里面查到了设备 下一步连接设备 上传记录当前方法是:_connectDevice', - detail: 'devicesList:$devicesList scanResult:${scanResult.toString()} bluetoothConnectDevice:${bluetoothConnectDevice.toString()} connectDeviceMacAddress:$connectDeviceMacAddress', - upload: false - ); + detail: + 'devicesList:$devicesList scanResult:${scanResult.toString()} bluetoothConnectDevice:${bluetoothConnectDevice.toString()} connectDeviceMacAddress:$connectDeviceMacAddress', + upload: false); //连接设备 await bluetoothDeviceConnect(bluetoothConnectDevice!, connectStateCallBack); @@ -516,14 +555,13 @@ class BlueManage { BuglyTool.uploadException( message: '直接给蓝牙设备写入 上传记录当前方法是:doNotSearchBLE', detail: '直接给蓝牙设备写入 通过fromId方法创建一个BluetoothDevice masAdds:$masAdds', - upload: false - ); - }else{ + upload: false); + } else { BuglyTool.uploadException( message: '直接给蓝牙设备写入 上传记录当前方法是:doNotSearchBLE', - detail: '直接给蓝牙设备写入 用传入的bluetoothConnectDevice:${bluetoothConnectDevice.toString()}连接 masAdds:$masAdds', - upload: false - ); + detail: + '直接给蓝牙设备写入 用传入的bluetoothConnectDevice:${bluetoothConnectDevice.toString()}连接 masAdds:$masAdds', + upload: false); } //尝试连接设备 await bluetoothDeviceConnect(bluetoothConnectDevice!, connectStateCallBack, @@ -554,54 +592,60 @@ class BlueManage { AppLog.log('$maxAttempts次后尝试连接失败'); BuglyTool.uploadException( message: '连接三次超时断开连接 回调断开连接 上传记录当前方法是:bluetoothDeviceConnect', - detail: 'bluetoothDeviceConnect:${bluetoothConnectDevice.toString()} $maxAttempts次后尝试连接失败', - upload: false - ); + detail: + 'bluetoothDeviceConnect:${bluetoothConnectDevice.toString()} $maxAttempts次后尝试连接失败', + upload: false); + needScanSingle = true; connectStateCallBack(BluetoothConnectionState.disconnected); } if (bluetoothConnectionState == BluetoothConnectionState.connected) { try { - final List services = await bluetoothConnectDevice.discoverServices(); + needScanSingle = false; + final List services = + await bluetoothConnectDevice.discoverServices(); //循环判断服务 for (final BluetoothService service in services) { if (service.uuid == _serviceIdConnect) { - for (final BluetoothCharacteristic characteristic in service.characteristics) { - if (characteristic.characteristicUuid == _characteristicIdSubscription) { + for (final BluetoothCharacteristic characteristic + in service.characteristics) { + if (characteristic.characteristicUuid == + _characteristicIdSubscription) { _subScribeToCharacteristic(characteristic); bluetoothConnectionState = BluetoothConnectionState.connected; connectStateCallBack(bluetoothConnectionState!); BuglyTool.uploadException( message: '订阅成功 上传记录当前方法是:bluetoothDeviceConnect', - detail: '发现服务,连接成功,订阅数据 bluetoothDeviceConnect:${bluetoothConnectDevice.toString()} ', - upload: false - ); - } else{ + detail: + '发现服务,连接成功,订阅数据 bluetoothDeviceConnect:${bluetoothConnectDevice.toString()} ', + upload: false); + } else { BuglyTool.uploadException( message: '订阅失败 上传记录当前方法是:bluetoothDeviceConnect', - detail: '失败原因: characteristic.characteristicUuid:${characteristic.characteristicUuid} != _characteristicIdSubscription:$_characteristicIdSubscription bluetoothDeviceConnect:${bluetoothConnectDevice.toString()}', - upload: false - ); + detail: + '失败原因: characteristic.characteristicUuid:${characteristic.characteristicUuid} != _characteristicIdSubscription:$_characteristicIdSubscription bluetoothDeviceConnect:${bluetoothConnectDevice.toString()}', + upload: false); } } - }else{ + } else { BuglyTool.uploadException( message: '订阅失败 上传记录当前方法是:bluetoothDeviceConnect', - detail: '失败原因: service.uuid:${service.uuid} != _serviceIdConnect:$_serviceIdConnect bluetoothDeviceConnect:${bluetoothConnectDevice.toString()}', - upload: false - ); + detail: + '失败原因: service.uuid:${service.uuid} != _serviceIdConnect:$_serviceIdConnect bluetoothDeviceConnect:${bluetoothConnectDevice.toString()}', + upload: false); } } } on Exception catch (e) { + needScanSingle = true; bluetoothConnectionState = BluetoothConnectionState.disconnected; connectStateCallBack(bluetoothConnectionState!); AppLog.log( '发现设备时失败 e:$e bluetoothConnectionState:$bluetoothConnectionState'); BuglyTool.uploadException( message: '发现服务时失败', - detail: '发现服务时报错原因e:$e bluetoothDeviceConnect:${bluetoothConnectDevice.toString()}', - upload: false - ); + detail: + '发现服务时报错原因e:$e bluetoothDeviceConnect:${bluetoothConnectDevice.toString()}', + upload: false); rethrow; } } From 93b24fec2ed02069c8d971569de7571261c423e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com> Date: Sat, 19 Oct 2024 18:26:41 +0800 Subject: [PATCH 03/13] =?UTF-8?q?1=E3=80=81=E6=B7=BB=E5=8A=A0=E5=8F=8B?= =?UTF-8?q?=E7=9B=9F=E7=BB=9F=E8=AE=A1=202=E3=80=81=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=9F=8B=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 4 ++ android/app/proguard-rules-sky.pro | 7 +++- android/app/proguard-rules-xhj.pro | 7 +++- android/app/proguard-rules.pro | 7 +++- android/app/src/main/AndroidManifest.xml | 15 ++++++++ android/app/src/main/assets/umeng_config.xml | 5 +++ .../kotlin/com/skychip/lock/MainActivity.kt | 6 +++ ios/Podfile | 3 ++ ios/Podfile.lock | 19 +++++++++- ios/Runner/AppDelegate.m | 4 +- .../starLock_forgetPassword_logic.dart | 14 +++++++ lib/login/login/starLock_login_logic.dart | 16 +++++++- .../register/starLock_register_logic.dart | 14 +++++++ lib/main.dart | 5 +++ .../card/addICCard/addICCard_logic.dart | 15 +++++++- .../doorLockLog/doorLockLog_logic.dart | 29 +++++++++++++- .../view/sendElectronicKeyView_logic.dart | 18 +++++++++ .../lockDetail/lockDetail_logic.dart | 30 ++++++++++++++- .../lockSet/lockSet/lockSet_logic.dart | 38 ++++++++++++++++++- lib/mine/addLock/saveLock/saveLock_logic.dart | 18 ++++++++- lib/mine/mineSet/mineSet/mineSet_logic.dart | 17 +++++++++ pubspec.yaml | 3 +- 22 files changed, 281 insertions(+), 13 deletions(-) create mode 100644 android/app/src/main/assets/umeng_config.xml diff --git a/android/app/build.gradle b/android/app/build.gradle index 68d0a18d..9cdae46d 100755 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -259,4 +259,8 @@ dependencies { // implementation(name: 'HiPushSDK-7.0.61.303', ext: 'aar') //接入 VIVO 厂商 implementation 'cn.jiguang.sdk.plugin:vivo:5.2.3' + + // Umeng统计 + implementation 'com.umeng.umsdk:common:9.3.7' + implementation 'com.umeng.umsdk:asms:1.4.1' } diff --git a/android/app/proguard-rules-sky.pro b/android/app/proguard-rules-sky.pro index d8df8d76..92eda14c 100644 --- a/android/app/proguard-rules-sky.pro +++ b/android/app/proguard-rules-sky.pro @@ -131,4 +131,9 @@ -keep class com.tencent.mm.opensdk.** { *; } -dontwarn com.tencent.bugly.** --keep public class com.tencent.bugly.**{*;} \ No newline at end of file +-keep public class com.tencent.bugly.**{*;} + +-keep class com.umeng.** { *; } +-keep class com.umeng.**$* { *; } +-keep class com.umeng.message.** { *; } +-keep class com.umeng.message.**$* { *; } \ No newline at end of file diff --git a/android/app/proguard-rules-xhj.pro b/android/app/proguard-rules-xhj.pro index 78db18c1..b48710ff 100644 --- a/android/app/proguard-rules-xhj.pro +++ b/android/app/proguard-rules-xhj.pro @@ -131,4 +131,9 @@ -keep class com.tencent.mm.opensdk.** { *; } -dontwarn com.tencent.bugly.** --keep public class com.tencent.bugly.**{*;} \ No newline at end of file +-keep public class com.tencent.bugly.**{*;} + +-keep class com.umeng.** { *; } +-keep class com.umeng.**$* { *; } +-keep class com.umeng.message.** { *; } +-keep class com.umeng.message.**$* { *; } \ No newline at end of file diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index de19f619..3934e6aa 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -128,4 +128,9 @@ } -keep class com.tencent.mm.sdk.** { *; } --keep class com.tencent.mm.opensdk.** { *; } \ No newline at end of file +-keep class com.tencent.mm.opensdk.** { *; } + +-keep class com.umeng.** { *; } +-keep class com.umeng.**$* { *; } +-keep class com.umeng.message.** { *; } +-keep class com.umeng.message.**$* { *; } \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index cbd0e27b..8415ede5 100755 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -58,6 +58,12 @@ + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/umeng_config.xml b/android/app/src/main/assets/umeng_config.xml new file mode 100644 index 00000000..28e1002b --- /dev/null +++ b/android/app/src/main/assets/umeng_config.xml @@ -0,0 +1,5 @@ + + + 671244cf80464b33f6df9648 + RD_test + \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/skychip/lock/MainActivity.kt b/android/app/src/main/kotlin/com/skychip/lock/MainActivity.kt index dcd984c1..520179ea 100755 --- a/android/app/src/main/kotlin/com/skychip/lock/MainActivity.kt +++ b/android/app/src/main/kotlin/com/skychip/lock/MainActivity.kt @@ -12,10 +12,16 @@ import android.bluetooth.BluetoothAdapter; import androidx.core.content.FileProvider import java.io.File +import com.umeng.commonsdk.UMConfigure + class MainActivity : FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) GeneratedPluginRegistrant.registerWith(flutterEngine!!) + + // 初始化 Umeng SDK + UMConfigure.init(this, "671244cf80464b33f6df9648", "RD_test", UMConfigure.DEVICE_TYPE_PHONE, null) + MethodChannel(flutterEngine?.dartExecutor!!.binaryMessenger, "starLockFlutterSend").setMethodCallHandler { call, result -> if (call.method == "loadNativeShare") { val map = call.arguments as Map diff --git a/ios/Podfile b/ios/Podfile index f60e3f48..76407fa5 100755 --- a/ios/Podfile +++ b/ios/Podfile @@ -30,6 +30,9 @@ flutter_ios_podfile_setup target 'Runner' do flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + + pod 'UMCommon' + pod 'UMDevice' end # Plugin Pods diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 9952b79e..b8e2e0f3 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -148,6 +148,13 @@ PODS: - system_settings (0.0.1): - Flutter - Toast (4.1.1) + - UMCommon (7.4.7): + - UMDevice + - UMDevice (3.4.0) + - umeng_common_sdk (0.0.1): + - Flutter + - UMCommon + - UMDevice - url_launcher_ios (0.0.1): - Flutter - video_player_avfoundation (0.0.1): @@ -194,6 +201,9 @@ DEPENDENCIES: - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - sqflite (from `.symlinks/plugins/sqflite/darwin`) - system_settings (from `.symlinks/plugins/system_settings/ios`) + - UMCommon + - UMDevice + - umeng_common_sdk (from `.symlinks/plugins/umeng_common_sdk/ios`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`) @@ -221,6 +231,8 @@ SPEC REPOS: - SDWebImage - SwiftyGif - Toast + - UMCommon + - UMDevice - WechatOpenSDK-XCFramework EXTERNAL SOURCES: @@ -292,6 +304,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/sqflite/darwin" system_settings: :path: ".symlinks/plugins/system_settings/ios" + umeng_common_sdk: + :path: ".symlinks/plugins/umeng_common_sdk/ios" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" video_player_avfoundation: @@ -354,11 +368,14 @@ SPEC CHECKSUMS: SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 system_settings: 8f5cdbfa72c677fc8d665b863bcc20d393d87e9d Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e + UMCommon: 8b4cd0423297c39bca6eea1ec896558b40e5bcf7 + UMDevice: dcdf7ec167387837559d149fbc7d793d984faf82 + umeng_common_sdk: a8abd7f86dfd013dbbeeae587ee143760c6582f2 url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3 webview_flutter_wkwebview: 2a23822e9039b7b1bc52e5add778e5d89ad488d1 WechatOpenSDK-XCFramework: 36fb2bea0754266c17184adf4963d7e6ff98b69f -PODFILE CHECKSUM: 317f9473a5705c6fe4d79d95e81676f248048fdc +PODFILE CHECKSUM: a4d4747e9f246a7c5b9d643d5efa33799112963a COCOAPODS: 1.14.3 diff --git a/ios/Runner/AppDelegate.m b/ios/Runner/AppDelegate.m index 086a7d55..1c0be45e 100755 --- a/ios/Runner/AppDelegate.m +++ b/ios/Runner/AppDelegate.m @@ -5,7 +5,7 @@ #import "XSFlutterManager.h" #import - +#import @interface AppDelegate() @@ -19,6 +19,8 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + [UMConfigure initWithAppkey:@"671244ae80464b33f6df9646" channel:@"RD_test"]; + XSFlutterManager *VC = [[XSFlutterManager alloc] init]; self.window.rootViewController = VC; [self.window makeKeyAndVisible]; diff --git a/lib/login/forgetPassword/starLock_forgetPassword_logic.dart b/lib/login/forgetPassword/starLock_forgetPassword_logic.dart index c9119cdf..3566ba34 100755 --- a/lib/login/forgetPassword/starLock_forgetPassword_logic.dart +++ b/lib/login/forgetPassword/starLock_forgetPassword_logic.dart @@ -6,9 +6,11 @@ import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/login/forgetPassword/starLock_forgetPassword_state.dart'; import 'package:star_lock/login/login/entity/LoginEntity.dart'; import 'package:star_lock/login/register/entity/SendValidationCodeEntity.dart'; +import 'package:umeng_common_sdk/umeng_common_sdk.dart'; import '../../network/api_repository.dart'; import '../../tools/baseGetXController.dart'; +import '../../tools/dateTool.dart'; import '../../tools/regularExpression.dart'; import '../../tools/showTipView.dart'; import '../register/entity/checkIP_entity.dart'; @@ -53,8 +55,20 @@ class StarLockForgetPasswordLogic extends BaseGetXController { 'B748F838-94EE-4BDB-A0E6-7B2D16849792', state.verificationCode.value); if (entity.errorCode!.codeIsSuccessful) { + UmengCommonSdk.onEvent('resetPassword_result', { + 'account':state.phoneStr.value, + 'date':DateTool().getNowDateWithType(1), + 'resetPassword_res':'成功', + }); + showToast('重置成功'.tr); Get.back(); + }else{ + UmengCommonSdk.onEvent('resetPassword_result', { + 'account':state.phoneStr.value, + 'date':DateTool().getNowDateWithType(1), + 'resetPassword_res':'${entity.errorCode}--${entity.errorMsg}', + }); } } diff --git a/lib/login/login/starLock_login_logic.dart b/lib/login/login/starLock_login_logic.dart index a5e2fa90..2b5e797e 100755 --- a/lib/login/login/starLock_login_logic.dart +++ b/lib/login/login/starLock_login_logic.dart @@ -1,4 +1,3 @@ -import 'dart:io'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -9,11 +8,12 @@ import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart'; import 'package:star_lock/login/login/entity/LoginEntity.dart'; import 'package:star_lock/mine/mine/starLockMine_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; -import 'package:star_lock/tools/push/xs_jPhush.dart'; +import 'package:umeng_common_sdk/umeng_common_sdk.dart'; import '../../main/lockMian/lockMain/lockMain_logic.dart'; import '../../mine/mine/starLockMine_logic.dart'; import '../../network/api_repository.dart'; +import '../../tools/dateTool.dart'; import '../../tools/eventBusEventManage.dart'; import '../../tools/showTipView.dart'; import '../../tools/storage.dart'; @@ -51,6 +51,12 @@ class StarLockLoginLogic extends BaseGetXController { username: state.emailOrPhone.value, deviceInfo: state.deviceInfoMap); if (entity.errorCode!.codeIsSuccessful) { + UmengCommonSdk.onEvent('login_result', { + 'account':state.emailOrPhone.value, + 'date':DateTool().getNowDateWithType(1), + 'login_res':'成功', + }); + Storage.saveLoginData(entity.data); Storage.setBool(saveIsVip, entity.data!.isVip == 1); eventBus.fire(MineInfoChangeRefreshUI()); @@ -59,6 +65,12 @@ class StarLockLoginLogic extends BaseGetXController { } Get.offNamedUntil(Routers.starLockMain, (Route route) => false); BlueManage().scanDevices.clear(); //清除设备缓存 + }else{ + UmengCommonSdk.onEvent('login_result', { + 'account':state.emailOrPhone.value, + 'date':DateTool().getNowDateWithType(1), + 'login_res':'${entity.errorCode}--${entity.errorMsg}', + }); } } diff --git a/lib/login/register/starLock_register_logic.dart b/lib/login/register/starLock_register_logic.dart index 22d05cab..ac6f76c0 100755 --- a/lib/login/register/starLock_register_logic.dart +++ b/lib/login/register/starLock_register_logic.dart @@ -11,9 +11,11 @@ import 'package:star_lock/login/register/entity/SendValidationCodeEntity.dart'; import 'package:star_lock/tools/eventBusEventManage.dart'; import 'package:star_lock/tools/push/xs_jPhush.dart'; import 'package:star_lock/tools/storage.dart'; +import 'package:umeng_common_sdk/umeng_common_sdk.dart'; import '../../network/api_repository.dart'; import '../../tools/baseGetXController.dart'; +import '../../tools/dateTool.dart'; import '../../tools/regularExpression.dart'; import '../../tools/showTipView.dart'; import 'entity/checkIP_entity.dart'; @@ -58,12 +60,24 @@ class StarLockRegisterLogic extends BaseGetXController { verificationCode: state.verificationCode.value, deviceInfo: state.deviceInfoMap.value); if (entity.errorCode!.codeIsSuccessful) { + UmengCommonSdk.onEvent('register_result', { + 'account':state.phoneOrEmailStr.value, + 'date':DateTool().getNowDateWithType(1), + 'register_res':'成功', + }); + Storage.saveLoginData(entity.data); Storage.setBool(saveIsVip, entity.data!.isVip == 1); eventBus.fire(MineInfoChangeRefreshUI()); XSJPushProvider().initLocalNotification(isCancelLocalPush: false); Get.offNamedUntil(Routers.starLockMain, (Route route) => false); BlueManage().scanDevices.clear(); //清除设备缓存 + }else{ + UmengCommonSdk.onEvent('register_result', { + 'account':state.phoneOrEmailStr.value, + 'date':DateTool().getNowDateWithType(1), + 'register_res':'${entity.errorCode}--${entity.errorMsg}', + }); } } diff --git a/lib/main.dart b/lib/main.dart index a72682a4..a20f0449 100755 --- a/lib/main.dart +++ b/lib/main.dart @@ -17,6 +17,7 @@ import 'package:star_lock/tools/platform_info_services.dart'; import 'package:star_lock/tools/push/xs_jPhush.dart'; import 'package:star_lock/tools/storage.dart'; import 'package:star_lock/translations/trans_lib.dart'; +import 'package:umeng_common_sdk/umeng_common_sdk.dart'; import 'app.dart'; import 'app_settings/app_settings.dart'; @@ -24,6 +25,10 @@ import 'tools/store_service.dart'; // 该文件不可作为编译入口,请查看 flavorizr.yaml 中的说明 FutureOr main() async { + + UmengCommonSdk.initCommon('671244cf80464b33f6df9648', ' 671244ae80464b33f6df9646 Store', 'RD_test'); + UmengCommonSdk.setPageCollectionModeManual(); + FlutterBugly.postCatchedException(() async { WidgetsFlutterBinding.ensureInitialized(); diff --git a/lib/main/lockDetail/card/addICCard/addICCard_logic.dart b/lib/main/lockDetail/card/addICCard/addICCard_logic.dart index 9884cbd3..26945a8a 100755 --- a/lib/main/lockDetail/card/addICCard/addICCard_logic.dart +++ b/lib/main/lockDetail/card/addICCard/addICCard_logic.dart @@ -7,6 +7,7 @@ import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/login/login/entity/LoginEntity.dart'; import 'package:star_lock/main/lockDetail/card/addICCard/addICCard_entity.dart'; import 'package:star_lock/tools/baseGetXController.dart'; +import 'package:umeng_common_sdk/umeng_common_sdk.dart'; import '../../../../blue/blue_manage.dart'; import '../../../../blue/io_protocol/io_addICCardWithTimeCycleCoercion.dart'; @@ -101,10 +102,16 @@ class AddICCardLogic extends BaseGetXController{ Future _replyAddICCardConfirmation(Reply reply) async { final int status = reply.data[2]; state.ifAddState.value = false; + final String getMobile = (await Storage.getMobile())!; switch(status){ case 0x00: //成功 - //成功 + UmengCommonSdk.onEvent('add_card', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_card_result':'成功', + }); switch(reply.data[5]){ case 0xff: // 注册指纹失败 @@ -139,6 +146,12 @@ class AddICCardLogic extends BaseGetXController{ break; default: //失败 + UmengCommonSdk.onEvent('add_card', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_card_result':reply.data[2], + }); break; } } diff --git a/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart b/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart index a04750a8..b3c66aa7 100755 --- a/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart +++ b/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart @@ -7,7 +7,9 @@ import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_entity.dart'; import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_state.dart'; import 'package:star_lock/main/lockDetail/lockOperatingRecord/lockOperatingRecordGetLastRecordTime_entity.dart'; import 'package:star_lock/tools/commonDataManage.dart'; +import 'package:star_lock/tools/dateTool.dart'; import 'package:star_lock/tools/eventBusEventManage.dart'; +import 'package:umeng_common_sdk/umeng_common_sdk.dart'; import '../../../blue/blue_manage.dart'; import '../../../blue/io_protocol/io_referEventRecordTime.dart'; @@ -39,6 +41,7 @@ class DoorLockLogLogic extends BaseGetXController { Future _replyReferEventRecordTime(Reply reply) async { cancelBlueConnetctToastTimer(); final int status = reply.data[2]; + switch (status) { case 0x00: //成功 @@ -106,8 +109,16 @@ class DoorLockLogLogic extends BaseGetXController { // 查询事件记录(时间查询) Future senderReferEventRecordTime() async { showEasyLoading(); - showBlueConnetctToastTimer(action: () { + showBlueConnetctToastTimer(action: () async { dismissEasyLoading(); + + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('check_doorLockLog', { + 'lockName':state.keyInfos.value.lockName!, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'open_lock_result':'超时', + }); }); BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionStateState) async { @@ -141,6 +152,15 @@ class DoorLockLogLogic extends BaseGetXController { BluetoothConnectionState.disconnected) { dismissEasyLoading(); cancelBlueConnetctToastTimer(); + + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('check_doorLockLog', { + 'lockName':state.keyInfos.value.lockName!, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'open_lock_result':'断开连接', + }); + if (state.ifCurrentScreen.value == true) { showBlueConnetctToast(); } @@ -225,6 +245,13 @@ class DoorLockLogLogic extends BaseGetXController { if (state.ifHaveNext == true) { getLockRecordLastUploadDataTime(); } else { + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('check_doorLockLog', { + 'lockName':state.keyInfos.value.lockName!, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'open_lock_result':'成功', + }); mockNetworkDataRequest(isRefresh: true); } } diff --git a/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_logic.dart b/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_logic.dart index 0f5ef873..eb6792c1 100755 --- a/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_logic.dart +++ b/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_logic.dart @@ -17,6 +17,9 @@ import 'package:star_lock/tools/regularExpression.dart'; import 'package:star_lock/tools/showCupertinoAlertView.dart'; import 'package:star_lock/tools/showTipView.dart'; import 'package:star_lock/tools/storage.dart'; +import 'package:umeng_common_sdk/umeng_common_sdk.dart'; + +import '../../../../../../blue/blue_manage.dart'; class SendElectronicKeyViewLogic extends BaseGetXController { SendElectronicKeyViewLogic(this.type); @@ -180,7 +183,15 @@ class SendElectronicKeyViewLogic extends BaseGetXController { idCardNumber: state.isRequireAuth.value == true ? state.idCardController.text : ''); + final String getMobile = (await Storage.getMobile())!; if (entity.errorCode!.codeIsSuccessful) { + UmengCommonSdk.onEvent('add_electronic_key', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_electronic_key_result':'成功', + }); + emailOrPhone = state.emailOrPhoneController.text; state.createUser.value = 0; state.isSendSuccess = true; @@ -190,6 +201,13 @@ class SendElectronicKeyViewLogic extends BaseGetXController { update(); eventBus.fire(ElectronicKeyListRefreshUI()); } else { + UmengCommonSdk.onEvent('add_electronic_key', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_electronic_key_result':'${entity.errorCode}--${entity.errorMsg}', + }); + emailOrPhone = null; if (entity.errorCode == 425) { //用户未注册 diff --git a/lib/main/lockDetail/lockDetail/lockDetail_logic.dart b/lib/main/lockDetail/lockDetail/lockDetail_logic.dart index 6b8cdfde..9b72bfde 100755 --- a/lib/main/lockDetail/lockDetail/lockDetail_logic.dart +++ b/lib/main/lockDetail/lockDetail/lockDetail_logic.dart @@ -13,6 +13,7 @@ import 'package:star_lock/main/lockMian/entity/lockListInfo_entity.dart'; import 'package:star_lock/tools/bugly/bugly_tool.dart'; import 'package:star_lock/tools/throttler.dart'; import 'package:star_lock/widget/permission/permission_dialog.dart'; +import 'package:umeng_common_sdk/umeng_common_sdk.dart'; import '../../../app_settings/app_settings.dart'; import '../../../blue/blue_manage.dart'; @@ -25,6 +26,7 @@ import '../../../blue/sender_manage.dart'; import '../../../network/api_repository.dart'; import '../../../tools/baseGetXController.dart'; import '../../../tools/commonDataManage.dart'; +import '../../../tools/dateTool.dart'; import '../../../tools/eventBusEventManage.dart'; import '../../../tools/storage.dart'; import '../lockOperatingRecord/keyOperationRecord_entity.dart'; @@ -67,6 +69,16 @@ class LockDetailLogic extends BaseGetXController { upload: true ); + if(status != 6){ + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('open_lock', { + 'lock_name':state.keyInfos.value.lockName!, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'open_lock_result':'${reply.data}', + }); + } + switch (status) { case 0x00: //成功 @@ -360,7 +372,15 @@ class LockDetailLogic extends BaseGetXController { showBlueConnetctToastTimer( outTimer: 20, - action: () { + action: () async { + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('open_lock', { + 'lock_name':state.keyInfos.value.lockName!, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'open_lock_result':'超时', + }); + resetOpenDoorState(); blueManageDisconnect(); BuglyTool.uploadException( @@ -396,6 +416,14 @@ class LockDetailLogic extends BaseGetXController { detail: '蓝牙连接失败,断开连接, 开锁失败--OpenLockCommand:$command', upload: true ); + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('open_lock', { + 'lock_name':state.keyInfos.value.lockName!, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'open_lock_result':'断开连接', + }); + if (state.ifCurrentScreen.value == true) { showBlueConnetctToast(); } diff --git a/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart b/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart index 2a38d64c..3ccbe408 100755 --- a/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart +++ b/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart @@ -1,3 +1,4 @@ + import 'dart:async'; import 'package:flutter/scheduler.dart'; @@ -5,7 +6,7 @@ import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:get/get.dart'; import 'package:star_lock/login/login/entity/LoginEntity.dart'; import 'package:star_lock/main/lockMian/entity/lockListInfo_entity.dart'; -import 'package:star_lock/tools/showTipView.dart'; +import 'package:umeng_common_sdk/umeng_common_sdk.dart'; import '../../../../blue/blue_manage.dart'; import '../../../../blue/io_protocol/io_factoryDataReset.dart'; @@ -19,6 +20,7 @@ import '../../../../blue/sender_manage.dart'; import '../../../../network/api_repository.dart'; import '../../../../tools/baseGetXController.dart'; import '../../../../tools/commonDataManage.dart'; +import '../../../../tools/dateTool.dart'; import '../../../../tools/eventBusEventManage.dart'; import '../../../../tools/storage.dart'; import 'checkingInInfoData_entity.dart'; @@ -568,7 +570,16 @@ class LockSetLogic extends BaseGetXController { final LockListInfoEntity entity = await ApiRepository.to.deletOwnerLockData( lockId: state.lockSetInfoData.value.lockId!, ); + final String getMobile = (await Storage.getMobile())!; if (entity.errorCode!.codeIsSuccessful) { + UmengCommonSdk.onEvent('delet_lock', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'delet_type':'lock', + 'delet_lock_result':'成功', + }); + BlueManage().connectDeviceMacAddress = ''; final bool isOnlyOneData = state.isOnlyOneData.value == true; await Future.delayed(const Duration(milliseconds: 200)) @@ -578,6 +589,14 @@ class LockSetLogic extends BaseGetXController { SchedulerBinding.instance.addPostFrameCallback((_) { eventBus.fire(RefreshLockListInfoDataEvent()); }); + }else{ + UmengCommonSdk.onEvent('delet_lock', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'delet_type':'lock', + 'delet_lock_result':'${entity.errorCode}--${entity.errorMsg}', + }); } } @@ -588,7 +607,16 @@ class LockSetLogic extends BaseGetXController { keyId: state.lockSetInfoData.value.lockBasicInfo!.keyId.toString(), includeUnderlings: state.deleteAdministratorIsHaveAllData.value == true ? 1 : 0); + final String getMobile = (await Storage.getMobile())!; if (entity.errorCode!.codeIsSuccessful) { + UmengCommonSdk.onEvent('delet_lock', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'delet_type':'key', + 'delet_lock_result':'成功', + }); + BlueManage().connectDeviceMacAddress = ''; final bool isOnlyOneData = state.isOnlyOneData.value == true; await Future.delayed(const Duration(milliseconds: 200)) @@ -598,6 +626,14 @@ class LockSetLogic extends BaseGetXController { SchedulerBinding.instance.addPostFrameCallback((_) { eventBus.fire(RefreshLockListInfoDataEvent()); }); + }else{ + UmengCommonSdk.onEvent('delet_lock', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'delet_type':'key', + 'delet_lock_result':'${entity.errorCode}--${entity.errorMsg}', + }); } } diff --git a/lib/mine/addLock/saveLock/saveLock_logic.dart b/lib/mine/addLock/saveLock/saveLock_logic.dart index 68232ed1..2074d793 100755 --- a/lib/mine/addLock/saveLock/saveLock_logic.dart +++ b/lib/mine/addLock/saveLock/saveLock_logic.dart @@ -6,6 +6,7 @@ import 'package:get/get.dart'; import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_logic.dart'; import 'package:star_lock/mine/addLock/saveLock/entity/SaveLockEntity.dart'; +import 'package:umeng_common_sdk/umeng_common_sdk.dart'; import '../../../app_settings/app_settings.dart'; import '../../../blue/blue_manage.dart'; @@ -17,6 +18,7 @@ import '../../../blue/sender_manage.dart'; import '../../../network/api_repository.dart'; import '../../../tools/baseGetXController.dart'; import '../../../tools/commonDataManage.dart'; +import '../../../tools/dateTool.dart'; import '../../../tools/eventBusEventManage.dart'; import '../../../tools/storage.dart'; import 'saveLock_state.dart'; @@ -404,8 +406,14 @@ class SaveLockLogic extends BaseGetXController { if (entity.errorCode!.codeIsSuccessful) { state.lockId = entity.data!.lockId!; + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('save_lock_result', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'save_lock_result':'成功', + }); backAction(); - // await senderCustomPasswords(); // BlueManage().disconnect(BlueManage().connectDeviceMacAddress); @@ -413,6 +421,14 @@ class SaveLockLogic extends BaseGetXController { // Get.close(state.isFromMap == 1 ? 5 : 6); } else { state.sureBtnState.value = 0; + + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('save_lock_result', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'save_lock_result':'${entity.errorCode}--${entity.errorMsg}', + }); } } diff --git a/lib/mine/mineSet/mineSet/mineSet_logic.dart b/lib/mine/mineSet/mineSet/mineSet_logic.dart index d5da7a22..80449534 100755 --- a/lib/mine/mineSet/mineSet/mineSet_logic.dart +++ b/lib/mine/mineSet/mineSet/mineSet_logic.dart @@ -13,12 +13,14 @@ import 'package:star_lock/tools/push/xs_jPhush.dart'; import 'package:star_lock/tools/showCupertinoAlertView.dart'; import 'package:star_lock/tools/storage.dart'; import 'package:star_lock/versionUndate/versionUndate_entity.dart'; +import 'package:umeng_common_sdk/umeng_common_sdk.dart'; import '../../../../network/api_repository.dart'; import '../../../../tools/baseGetXController.dart'; import '../../../app_settings/app_settings.dart'; import '../../../blue/blue_manage.dart'; import '../../../talk/udp/udp_help.dart'; +import '../../../tools/dateTool.dart'; import '../../../tools/eventBusEventManage.dart'; import '../../../tools/store_service.dart'; import '../../../translations/app_dept.dart'; @@ -128,7 +130,15 @@ class MineSetLogic extends BaseGetXController { } }); final LoginEntity entity = await ApiRepository.to.userLogout(deviceld: getPushDeviceID); + final String getMobile = (await Storage.getMobile())!; if (entity.errorCode!.codeIsSuccessful) { + UmengCommonSdk.onEvent('logout', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'logout_result':'成功', + }); + UdpHelp().closeUDP(); logOut(); @@ -138,6 +148,13 @@ class MineSetLogic extends BaseGetXController { BlueManage().disconnect(); XSJPushProvider().initLocalNotification(isCancelLocalPush: true); Get.offNamedUntil(Routers.starLockLoginPage, (Route route) => false); + }else{ + UmengCommonSdk.onEvent('logout', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'logout_result':'${entity.errorCode}--${entity.errorMsg}', + }); } } diff --git a/pubspec.yaml b/pubspec.yaml index 27ff15dc..eeaf352d 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -230,7 +230,7 @@ dependencies: # audio_service: ^0.18.12 app_settings: ^5.1.1 flutter_local_notifications: ^17.0.0 - fluwx: ^4.5.5 + fluwx: 4.5.5 system_settings: ^2.0.0 expandable: ^5.0.1 colorfilter_generator: ^0.0.8 @@ -240,6 +240,7 @@ dependencies: flutter_bugly: ^1.0.2 open_filex: ^4.4.0 + umeng_common_sdk: 1.2.7 dependency_overrides: #强制设置google_maps_flutter_ios 为 2.5.2 From fc18ca5614d101020300366ddff1d8e46dd62034 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, 21 Oct 2024 11:07:17 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=8B=E7=9B=9F?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index a20f0449..e2490742 100755 --- a/lib/main.dart +++ b/lib/main.dart @@ -26,7 +26,7 @@ import 'tools/store_service.dart'; // 该文件不可作为编译入口,请查看 flavorizr.yaml 中的说明 FutureOr main() async { - UmengCommonSdk.initCommon('671244cf80464b33f6df9648', ' 671244ae80464b33f6df9646 Store', 'RD_test'); + UmengCommonSdk.initCommon('671244cf80464b33f6df9648', '671244ae80464b33f6df9646', 'RD_test'); UmengCommonSdk.setPageCollectionModeManual(); FlutterBugly.postCatchedException(() async { From e4eaa97046deca09291bbecbd971384b9a3b362f 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, 21 Oct 2024 16:18:53 +0800 Subject: [PATCH 05/13] =?UTF-8?q?1=E3=80=81=E6=B7=BB=E5=8A=A0=E5=8D=A1?= =?UTF-8?q?=E6=8C=87=E7=BA=B9bugly=E7=BB=9F=E8=AE=A1=202=E3=80=81=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=8E=88=E6=9D=83=E7=AE=A1=E7=90=86=E5=91=98=E3=80=81?= =?UTF-8?q?=E5=8D=A1=E3=80=81=E8=AE=B0=E5=BD=95=E3=80=81=E6=8C=87=E7=BA=B9?= =?UTF-8?q?=E3=80=81=E5=AF=86=E7=A0=81=E3=80=81=E5=88=A0=E9=99=A4=E9=94=81?= =?UTF-8?q?=E3=80=81=E5=8F=8B=E7=9B=9F=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/src/main/assets/umeng_config.xml | 2 +- .../kotlin/com/skychip/lock/MainActivity.kt | 2 +- lib/main.dart | 7 +- .../authorizedAdmin_logic.dart | 174 ++++++++++-------- .../card/addICCard/addICCard_logic.dart | 85 ++++++++- .../doorLockLog/doorLockLog_logic.dart | 9 +- .../addFingerprint/addFingerprint_logic.dart | 123 ++++++++++++- .../lockSet/lockSet/lockSet_logic.dart | 20 +- .../passwordKey_perpetual_logic.dart | 36 +++- lib/tools/bugly/bugly_tool.dart | 3 +- 10 files changed, 353 insertions(+), 108 deletions(-) diff --git a/android/app/src/main/assets/umeng_config.xml b/android/app/src/main/assets/umeng_config.xml index 28e1002b..1ba6cc4c 100644 --- a/android/app/src/main/assets/umeng_config.xml +++ b/android/app/src/main/assets/umeng_config.xml @@ -1,5 +1,5 @@ 671244cf80464b33f6df9648 - RD_test + Product \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/skychip/lock/MainActivity.kt b/android/app/src/main/kotlin/com/skychip/lock/MainActivity.kt index 520179ea..741b150f 100755 --- a/android/app/src/main/kotlin/com/skychip/lock/MainActivity.kt +++ b/android/app/src/main/kotlin/com/skychip/lock/MainActivity.kt @@ -20,7 +20,7 @@ class MainActivity : FlutterActivity() { GeneratedPluginRegistrant.registerWith(flutterEngine!!) // 初始化 Umeng SDK - UMConfigure.init(this, "671244cf80464b33f6df9648", "RD_test", UMConfigure.DEVICE_TYPE_PHONE, null) + UMConfigure.init(this, "671244cf80464b33f6df9648", "Product", UMConfigure.DEVICE_TYPE_PHONE, null) MethodChannel(flutterEngine?.dartExecutor!!.binaryMessenger, "starLockFlutterSend").setMethodCallHandler { call, result -> if (call.method == "loadNativeShare") { diff --git a/lib/main.dart b/lib/main.dart index e2490742..49457cbd 100755 --- a/lib/main.dart +++ b/lib/main.dart @@ -25,10 +25,6 @@ import 'tools/store_service.dart'; // 该文件不可作为编译入口,请查看 flavorizr.yaml 中的说明 FutureOr main() async { - - UmengCommonSdk.initCommon('671244cf80464b33f6df9648', '671244ae80464b33f6df9646', 'RD_test'); - UmengCommonSdk.setPageCollectionModeManual(); - FlutterBugly.postCatchedException(() async { WidgetsFlutterBinding.ensureInitialized(); @@ -82,6 +78,9 @@ Future _setCommonServices() async { //关于隐私协议的初始化 Future privacySDKInitialization() async { + UmengCommonSdk.initCommon('671244cf80464b33f6df9648', '671244ae80464b33f6df9646', 'Product'); + UmengCommonSdk.setPageCollectionModeManual(); + await Get.putAsync(() => PlatformInfoService().init()); await BuglyTool.init(); // 初始化JPush服务 diff --git a/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart b/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart index 1719a67f..6c7d3748 100755 --- a/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart +++ b/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart @@ -12,6 +12,7 @@ import 'package:star_lock/mine/valueAddedServices/valueAddedServicesHighFunction import 'package:star_lock/tools/NativeInteractionTool.dart'; import 'package:star_lock/tools/dateTool.dart'; import 'package:star_lock/tools/showCupertinoAlertView.dart'; +import 'package:umeng_common_sdk/umeng_common_sdk.dart'; import '../../../../blue/blue_manage.dart'; import '../../../../blue/io_protocol/io_transferPermissions.dart'; @@ -33,86 +34,84 @@ class AuthorizedAdminLogic extends BaseGetXController { int? keyId; // 监听设备返回的数据 - late StreamSubscription _replySubscription; - - void _initReplySubscription() { - _replySubscription = - EventBusManager().eventBus!.on().listen((Reply reply) async { - // 转移权限 - if (reply is TransferPermissionsReply) { - final List token = reply.data.sublist(2, 6); - final List saveStrList = changeIntListToStringList(token); - Storage.setStringList(saveBlueToken, saveStrList); - - final int status = reply.data[6]; - - switch (status) { - case 0x00: - //成功 - break; - case 0x06: - //无权限 - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); - final List getPrivateKeyList = - changeStringListToIntList(privateKey!); - - final List? publicKey = - await Storage.getStringList(saveBluePublicKey); - final List publicKeyDataList = - changeStringListToIntList(publicKey!); - - final List? token = - await Storage.getStringList(saveBlueToken); - final List getTokenList = changeStringListToIntList(token!); - - IoSenderManage.senderFactoryDataReset( - lockID: BlueManage().connectDeviceName, - userID: await Storage.getUid(), - keyID: '1', - needAuthor: 1, - publicKey: publicKeyDataList, - privateKey: getPrivateKeyList, - token: getTokenList); - break; - default: - break; - } - } - }); - } + // late StreamSubscription _replySubscription; + // void _initReplySubscription() { + // _replySubscription = + // EventBusManager().eventBus!.on().listen((Reply reply) async { + // // 转移权限 + // if (reply is TransferPermissionsReply) { + // final List token = reply.data.sublist(2, 6); + // final List saveStrList = changeIntListToStringList(token); + // Storage.setStringList(saveBlueToken, saveStrList); + // + // final int status = reply.data[6]; + // switch (status) { + // case 0x00: + // //成功 + // break; + // case 0x06: + // //无权限 + // final List? privateKey = + // await Storage.getStringList(saveBluePrivateKey); + // final List getPrivateKeyList = + // changeStringListToIntList(privateKey!); + // + // final List? publicKey = + // await Storage.getStringList(saveBluePublicKey); + // final List publicKeyDataList = + // changeStringListToIntList(publicKey!); + // + // final List? token = + // await Storage.getStringList(saveBlueToken); + // final List getTokenList = changeStringListToIntList(token!); + // + // IoSenderManage.senderFactoryDataReset( + // lockID: BlueManage().connectDeviceName, + // userID: await Storage.getUid(), + // keyID: '1', + // needAuthor: 1, + // publicKey: publicKeyDataList, + // privateKey: getPrivateKeyList, + // token: getTokenList); + // break; + // default: + // break; + // } + // } + // }); + // } // 转移权限 - Future transferPermissionsAction() async { - BlueManage().blueSendData(BlueManage().connectDeviceName, - (BluetoothConnectionState state) async { - if (state == BluetoothConnectionState.connected) { - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); - final List getPrivateKeyList = - changeStringListToIntList(privateKey!); - - final List? publicKey = - await Storage.getStringList(saveBluePublicKey); - final List publicKeyDataList = - changeStringListToIntList(publicKey!); - - final List? token = await Storage.getStringList(saveBlueToken); - final List getTokenList = changeStringListToIntList(token!); - - IoSenderManage.senderTransferPermissions( - lockID: BlueManage().connectDeviceName, - authUserID: await Storage.getUid(), - keyID: '1', - oldUserID: await Storage.getUid(), - newUserID: '100002', - needAuthor: 1, - publicKey: publicKeyDataList, - privateKey: getPrivateKeyList, - token: getTokenList); - } - }); - } + // Future transferPermissionsAction() async { + // BlueManage().blueSendData(BlueManage().connectDeviceName, + // (BluetoothConnectionState state) async { + // if (state == BluetoothConnectionState.connected) { + // final List? privateKey = + // await Storage.getStringList(saveBluePrivateKey); + // final List getPrivateKeyList = + // changeStringListToIntList(privateKey!); + // + // final List? publicKey = + // await Storage.getStringList(saveBluePublicKey); + // final List publicKeyDataList = + // changeStringListToIntList(publicKey!); + // + // final List? token = await Storage.getStringList(saveBlueToken); + // final List getTokenList = changeStringListToIntList(token!); + // + // IoSenderManage.senderTransferPermissions( + // lockID: BlueManage().connectDeviceName, + // authUserID: await Storage.getUid(), + // keyID: '1', + // oldUserID: await Storage.getUid(), + // newUserID: '100002', + // needAuthor: 1, + // publicKey: publicKeyDataList, + // privateKey: getPrivateKeyList, + // token: getTokenList); + // } + // }); + // } //发送授权管理员列表请求 Future sendElectronicKeyRequest() async { @@ -222,7 +221,15 @@ class AuthorizedAdminLogic extends BaseGetXController { idCardNumber: state.isRequireAuth.value == true ? state.idCardController.text : ''); + final String getMobile = (await Storage.getMobile())!; if (entity.errorCode!.codeIsSuccessful) { + UmengCommonSdk.onEvent('add_authorizedAdmin', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_password_result':'添加授权管理员成功', + }); + state.createUser.value = 0; state.isSendSuccess.value = true; state.addUserId.value = entity.data!.receiverUser!.id.toString(); @@ -237,6 +244,13 @@ class AuthorizedAdminLogic extends BaseGetXController { state.createUser.value = 1; sendElectronicKeyRequest(); }); + }else{ + UmengCommonSdk.onEvent('add_authorizedAdmin', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_password_result':'添加授权管理员失败:${entity.errorMsg}', + }); } } } @@ -327,11 +341,11 @@ class AuthorizedAdminLogic extends BaseGetXController { void onReady() { super.onReady(); - _initReplySubscription(); + // _initReplySubscription(); } @override void onClose() { - _replySubscription.cancel(); + // _replySubscription.cancel(); } } diff --git a/lib/main/lockDetail/card/addICCard/addICCard_logic.dart b/lib/main/lockDetail/card/addICCard/addICCard_logic.dart index 26945a8a..4f4f3475 100755 --- a/lib/main/lockDetail/card/addICCard/addICCard_logic.dart +++ b/lib/main/lockDetail/card/addICCard/addICCard_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/bugly/bugly_tool.dart'; import '../../../../tools/dateTool.dart'; import '../../../../tools/eventBusEventManage.dart'; import '../../../../tools/storage.dart'; @@ -42,6 +43,11 @@ class AddICCardLogic extends BaseGetXController{ Future _replyAddICCardBegin(Reply reply) async { final int status = reply.data[2]; + BuglyTool.uploadException( + message: '添加卡开始,解析数据', + detail: '添加卡开始,解析数据 _replyAddICCardBegin:${reply.data}', + upload: false + ); switch(status){ case 0x00: @@ -102,6 +108,14 @@ class AddICCardLogic extends BaseGetXController{ Future _replyAddICCardConfirmation(Reply reply) async { final int status = reply.data[2]; state.ifAddState.value = false; + + BuglyTool.uploadException( + message: '添加卡结果,解析数据', + detail: '添加卡结果,解析数据 _replyAddICCardConfirmation:${reply.data}', + eventStr: '添加卡事件', + upload: true + ); + final String getMobile = (await Storage.getMobile())!; switch(status){ case 0x00: @@ -158,22 +172,58 @@ class AddICCardLogic extends BaseGetXController{ // 添加卡片 Future senderAddICCard() async { - showBlueConnetctToastTimer(action: (){ + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); + + final String command = SenderAddICCardWithTimeCycleCoercionCommand( + keyID:'1', + userID:await Storage.getUid(), + cardNo:0, + useCountLimit:0xffff, + operate:0, // 0:注册 1:修改 2:删除 3:删除全部 + isAdmin:state.isAdministrator.value == '2' ? 1 : 0, + isForce:state.isCoerced.value == '1' ? 1 : 0, // 是否是胁迫 + isRound:state.selectType.value == '2' ? 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.effectiveDateTime.value), + endTime:DateTool().dateToHNString(state.failureDateTime.value), + needAuthor:1, + signKey:signKeyDataList, + privateKey:getPrivateKeyList, + token: getTokenList, + ).toString(); + + + showBlueConnetctToastTimer(action: () async { + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('add_card', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_card_result':'添加卡超时', + }); + + BuglyTool.uploadException( + message: '添加卡超时处理-添加卡失败', + detail: '添加卡超时处理,断开连接,添加卡失败--SenderAddICCardWithTimeCycleCoercionCommand:$command', + eventStr: '添加卡事件', + upload: true + ); + Get.close(1); }); BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { if (deviceConnectionState == BluetoothConnectionState.connected){ cancelBlueConnetctToastTimer(); - final List? signKey = await Storage.getStringList(saveBlueSignKey); - final List signKeyDataList = changeStringListToIntList(signKey!); - - final List? privateKey = await Storage.getStringList(saveBluePrivateKey); - final List getPrivateKeyList = changeStringListToIntList(privateKey!); - - final List? token = await Storage.getStringList(saveBlueToken); - final List getTokenList = changeStringListToIntList(token!); - IoSenderManage.senderAddCardWithTimeCycleCoercionCommand( keyID:'1', userID:await Storage.getUid(), @@ -195,6 +245,21 @@ class AddICCardLogic extends BaseGetXController{ isBeforeAddUser: false ); } else if (deviceConnectionState == BluetoothConnectionState.disconnected){ + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('add_card', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_card_result':'添加卡断开连接', + }); + + BuglyTool.uploadException( + message: '添加卡超时处理-添加卡失败', + detail: '添加卡超时处理,断开连接,添加卡失败--SenderAddICCardWithTimeCycleCoercionCommand:$command', + eventStr: '添加卡事件', + upload: true + ); + if(state.ifCurrentScreen.value == true){ showBlueConnetctToast(); } diff --git a/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart b/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart index b3c66aa7..84ee56af 100755 --- a/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart +++ b/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart @@ -241,11 +241,11 @@ class DoorLockLogLogic extends BaseGetXController { final KeyOperationRecordEntity entity = await ApiRepository.to .lockRecordUploadData( lockId: state.keyInfos.value.lockId.toString(), records: list); + final String getMobile = (await Storage.getMobile())!; if (entity.errorCode!.codeIsSuccessful) { if (state.ifHaveNext == true) { getLockRecordLastUploadDataTime(); } else { - final String getMobile = (await Storage.getMobile())!; UmengCommonSdk.onEvent('check_doorLockLog', { 'lockName':state.keyInfos.value.lockName!, 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, @@ -254,6 +254,13 @@ class DoorLockLogLogic extends BaseGetXController { }); mockNetworkDataRequest(isRefresh: true); } + }else{ + UmengCommonSdk.onEvent('check_doorLockLog', { + 'lockName':state.keyInfos.value.lockName!, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'open_lock_result':'上传数据接口失败', + }); } } diff --git a/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart b/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart index 72dfe924..3e0ddb62 100755 --- a/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart +++ b/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart @@ -3,9 +3,11 @@ import 'dart:async'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:get/get.dart'; +import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/login/login/entity/LoginEntity.dart'; import 'package:star_lock/main/lockDetail/fingerprint/addFingerprint/addFingerprint_entity.dart'; import 'package:star_lock/tools/dateTool.dart'; +import 'package:umeng_common_sdk/umeng_common_sdk.dart'; import '../../../../../blue/blue_manage.dart'; import '../../../../../blue/io_reply.dart'; @@ -17,6 +19,7 @@ import '../../../../../tools/baseGetXController.dart'; import '../../../../../tools/eventBusEventManage.dart'; import '../../../../../tools/storage.dart'; import '../../../../blue/io_protocol/io_addFingerprintWithTimeCycleCoercion.dart'; +import '../../../../tools/bugly/bugly_tool.dart'; import 'addFingerprint_state.dart'; class AddFingerprintLogic extends BaseGetXController { @@ -44,8 +47,13 @@ class AddFingerprintLogic extends BaseGetXController { } Future _replyAddFingerprintBegin(Reply reply) async { - final int status = reply.data[2]; + BuglyTool.uploadException( + message: '添加指纹开始,解析数据', + detail: '添加指纹开始,解析数据 _replyAddFingerprintBegin:${reply.data}', + upload: false + ); + final int status = reply.data[2]; switch(status){ case 0x00: //成功 @@ -102,8 +110,12 @@ class AddFingerprintLogic extends BaseGetXController { } Future _replyAddFingerprintProcess(Reply reply) async { + BuglyTool.uploadException( + message: '添加指纹过程,解析数据', + detail: '添加指纹过程,解析数据 _replyAddFingerprintProcess:${reply.data}', + upload: false + ); final int status = reply.data[2]; - switch(status){ case 0x00: //成功 @@ -154,13 +166,27 @@ class AddFingerprintLogic extends BaseGetXController { Future _replyAddFingerprintConfirmation(Reply reply) async { final int status = reply.data[2]; + final String getMobile = (await Storage.getMobile())!; switch(status){ case 0x00: //成功 // var fingerprintNum = listChangInt(reply.data.sublist(9, 11)).toString(); - final List fingerprintList = reply.data.sublist(reply.data.length - 2); - final String fingerprintNum = listChangInt(fingerprintList).toString(); - state.regIndex.value++; + UmengCommonSdk.onEvent('add_fingerprint', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_fingerprint_result':'成功', + }); + + BuglyTool.uploadException( + message: '添加指纹确认结果,解析数据', + detail: '添加指纹确认结果,解析数据 _replyAddFingerprintConfirmation:${reply.data}', + upload: false + ); + + final List fingerprintList = reply.data.sublist(reply.data.length - 2); + final String fingerprintNum = listChangInt(fingerprintList).toString(); + state.regIndex.value++; if(state.fingerprintNumber.value == fingerprintNum){ return; }else{ @@ -177,6 +203,19 @@ class AddFingerprintLogic extends BaseGetXController { break; default: //失败 + UmengCommonSdk.onEvent('add_fingerprint', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_fingerprint_result':'失败-${reply.data}', + }); + + BuglyTool.uploadException( + message: '添加指纹确认结果,解析数据', + detail: '添加指纹确认结果,解析数据 _replyAddFingerprintConfirmation:${reply.data}', + eventStr: '添加指纹事件', + upload: true + ); state.ifAddState.value = false; break; } @@ -184,7 +223,50 @@ class AddFingerprintLogic extends BaseGetXController { // 添加指纹开始 Future senderAddFingerprint() async { - showBlueConnetctToastTimer(action: (){ + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); + + final String command = SenderAddFingerprintWithTimeCycleCoercionCommand( + keyID:'1', + userID:await Storage.getUid(), + fingerNo:0, + useCountLimit:0xffff, + isForce:state.isCoerced.value == '1' ? 1 : 0, // 是否是胁迫 + isAdmin: state.isAdministrator.value == '2' ? 1 : 0, + operate: 0, + isRound:state.selectType.value == '2' ? 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.effectiveDateTime.value), + endTime:DateTool().dateToHNString(state.failureDateTime.value), + needAuthor:1, + signKey:signKeyDataList, + privateKey:getPrivateKeyList, + token: getTokenList, + ).toString(); + + showBlueConnetctToastTimer(action: () async { + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('add_fingerprint', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_fingerprint_result':'超时', + }); + + BuglyTool.uploadException( + message: '添加指纹超时处理-添加指纹失败', + detail: '添加指纹超时处理,断开连接,添加指纹失败--SenderAddFingerprintWithTimeCycleCoercionCommand:$command', + eventStr: '添加指纹事件', + upload: true + ); Get.close(1); }); BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { @@ -219,6 +301,21 @@ class AddFingerprintLogic extends BaseGetXController { isBeforeAddUser: false ); }else if (deviceConnectionState == BluetoothConnectionState.disconnected){ + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('add_fingerprint', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_fingerprint_result':'断开', + }); + + BuglyTool.uploadException( + message: '添加指纹断开连接-添加指纹失败', + detail: '添加指纹断开连接-添加指纹失败--SenderAddFingerprintWithTimeCycleCoercionCommand:$command', + eventStr: '添加指纹事件', + upload: true + ); + if(state.ifCurrentScreen.value == true){ showBlueConnetctToast(); } @@ -277,6 +374,20 @@ class AddFingerprintLogic extends BaseGetXController { ); if(entity.errorCode!.codeIsSuccessful){ updateFingerprintUserNoLoadData(entity.data!.fingerprintId.toString()); + BuglyTool.uploadException( + message: '添加指纹调用接口成功', + detail: '添加指纹调用接口成功 - ', + eventStr: '添加指纹事件', + upload: true + ); + }else{ + updateFingerprintUserNoLoadData(entity.data!.fingerprintId.toString()); + BuglyTool.uploadException( + message: '添加指纹调用接口失败', + detail: '添加指纹调用接口添加指纹调用接口失败 - ${entity.errorMsg}', + eventStr: '添加指纹事件', + upload: true + ); } } diff --git a/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart b/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart index 3ccbe408..0198879c 100755 --- a/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart +++ b/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart @@ -289,7 +289,16 @@ class LockSetLogic extends BaseGetXController { showEasyLoading(); showBlueConnetctToastTimer( isShowBlueConnetctToast: false, - action: () { + action: () async { + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('delet_lock', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'delet_type':'lock', + 'delet_lock_result':'删除锁超时', + }); + dismissEasyLoading(); showDeletAlertTipDialog(); }); @@ -318,6 +327,15 @@ class LockSetLogic extends BaseGetXController { privateKey: getPrivateKeyList, token: getTokenList); } else if (connectionState == BluetoothConnectionState.disconnected) { + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('delet_lock', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'delet_type':'lock', + 'delet_lock_result':'删除锁断开', + }); + dismissEasyLoading(); cancelBlueConnetctToastTimer(); if (state.ifCurrentScreen.value == true) { diff --git a/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart b/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart index 4b1357b2..a54021a0 100755 --- a/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart +++ b/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart @@ -6,6 +6,7 @@ import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/pass import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_state.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/eventBusEventManage.dart'; +import 'package:umeng_common_sdk/umeng_common_sdk.dart'; import '../../../../blue/blue_manage.dart'; import '../../../../blue/io_modelVendor.dart'; @@ -178,7 +179,15 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { endDate: getFailureDateTime, addType: '1', pwdRight: state.isAdministrator.value == true ? 1 : 0); + final String getMobile = (await Storage.getMobile())!; if (entity.errorCode!.codeIsSuccessful) { + UmengCommonSdk.onEvent('add_password', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_password_result':'成功', + }); + state.isSendSuccess.value = true; state.sendSucceedType.value = state.widgetType.value; state.pwdNameStr = state.nameController.text; @@ -189,6 +198,12 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { updatePWDNumberRequest(entity.data!.keyboardPwdId.toString()); } } else { + UmengCommonSdk.onEvent('add_password', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_password_result':'${entity.errorMsg}', + }); showToast('${entity.errorMsg}'); } } @@ -370,7 +385,15 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { state.sureBtnState.value = 1; showEasyLoading(); - showBlueConnetctToastTimer(action: () { + showBlueConnetctToastTimer(action: () async { + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('add_password', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_password_result':'添加自定义密码超时', + }); + dismissEasyLoading(); state.sureBtnState.value = 0; }); @@ -404,8 +427,15 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { signKey: signKeyDataList, privateKey: getPrivateKeyList, token: getTokenList); - } else if (deviceConnectionState == - BluetoothConnectionState.disconnected) { + } else if (deviceConnectionState == BluetoothConnectionState.disconnected) { + final String getMobile = (await Storage.getMobile())!; + UmengCommonSdk.onEvent('add_password', { + 'lock_name':BlueManage().connectDeviceName, + 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date':DateTool().getNowDateWithType(1), + 'add_password_result':'添加自定义密码断开', + }); + dismissEasyLoading(); cancelBlueConnetctToastTimer(); state.sureBtnState.value = 0; diff --git a/lib/tools/bugly/bugly_tool.dart b/lib/tools/bugly/bugly_tool.dart index 57f06c33..89d0ab94 100644 --- a/lib/tools/bugly/bugly_tool.dart +++ b/lib/tools/bugly/bugly_tool.dart @@ -65,6 +65,7 @@ class BuglyTool { required String message, required String detail, required bool upload, + String eventStr = '开门事件', bool begin = false, Map? data, }) async { @@ -80,7 +81,7 @@ class BuglyTool { // AppLog.log('message:${(await Storage.getMobile())!.isNotEmpty ? (await Storage.getMobile()) : (await Storage.getEmail())}+$time --- 开门事件 detail:$uploadStr'); // FlutterBugly.uploadException(message: '${(await Storage.getMobile())!.isNotEmpty ? (await Storage.getMobile()) : (await Storage.getEmail())}+$time --- 开门事件', detail: uploadStr, data: data); - BuglyTool.uploadExceptionWithEvent(eventStr:'开门事件', detail: uploadStr); + BuglyTool.uploadExceptionWithEvent(eventStr:eventStr, detail: uploadStr); } } From dbc5c0bfd5b3b79bd2ab1b840fb1b29039de7cfc 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, 21 Oct 2024 17:19:56 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=E5=AE=8C=E6=88=90bugly=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../card/addICCard/addICCard_logic.dart | 7 +-- .../doorLockLog/doorLockLog_logic.dart | 60 ++++++++++++++---- .../addFingerprint/addFingerprint_logic.dart | 14 ++--- .../passwordKey_perpetual_logic.dart | 63 ++++++++++++++++--- 4 files changed, 112 insertions(+), 32 deletions(-) diff --git a/lib/main/lockDetail/card/addICCard/addICCard_logic.dart b/lib/main/lockDetail/card/addICCard/addICCard_logic.dart index 4f4f3475..8512114b 100755 --- a/lib/main/lockDetail/card/addICCard/addICCard_logic.dart +++ b/lib/main/lockDetail/card/addICCard/addICCard_logic.dart @@ -112,7 +112,7 @@ class AddICCardLogic extends BaseGetXController{ BuglyTool.uploadException( message: '添加卡结果,解析数据', detail: '添加卡结果,解析数据 _replyAddICCardConfirmation:${reply.data}', - eventStr: '添加卡事件', + eventStr: '添加卡事件结果', upload: true ); @@ -201,7 +201,6 @@ class AddICCardLogic extends BaseGetXController{ token: getTokenList, ).toString(); - showBlueConnetctToastTimer(action: () async { final String getMobile = (await Storage.getMobile())!; UmengCommonSdk.onEvent('add_card', { @@ -214,7 +213,7 @@ class AddICCardLogic extends BaseGetXController{ BuglyTool.uploadException( message: '添加卡超时处理-添加卡失败', detail: '添加卡超时处理,断开连接,添加卡失败--SenderAddICCardWithTimeCycleCoercionCommand:$command', - eventStr: '添加卡事件', + eventStr: '添加卡事件超时', upload: true ); @@ -256,7 +255,7 @@ class AddICCardLogic extends BaseGetXController{ BuglyTool.uploadException( message: '添加卡超时处理-添加卡失败', detail: '添加卡超时处理,断开连接,添加卡失败--SenderAddICCardWithTimeCycleCoercionCommand:$command', - eventStr: '添加卡事件', + eventStr: '添加卡事件断开连接', upload: true ); diff --git a/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart b/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart index 84ee56af..cb2e84a4 100755 --- a/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart +++ b/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart @@ -19,6 +19,7 @@ import '../../../blue/io_tool/manager_event_bus.dart'; import '../../../blue/sender_manage.dart'; import '../../../network/api_repository.dart'; import '../../../tools/baseGetXController.dart'; +import '../../../tools/bugly/bugly_tool.dart'; import '../../../tools/storage.dart'; import '../lockOperatingRecord/keyOperationRecord_entity.dart'; @@ -39,6 +40,13 @@ class DoorLockLogLogic extends BaseGetXController { // 根据时间查解析数据 Future _replyReferEventRecordTime(Reply reply) async { + BuglyTool.uploadException( + message: '查询锁记录结果,解析数据', + detail: '查询锁记录结果,解析数据:${reply.data}', + eventStr: '查询锁记录事件结果', + upload: true + ); + cancelBlueConnetctToastTimer(); final int status = reply.data[2]; @@ -108,6 +116,28 @@ class DoorLockLogLogic extends BaseGetXController { // 查询事件记录(时间查询) Future senderReferEventRecordTime() async { + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); + + final List? publicKey = await Storage.getStringList(saveBluePublicKey); + final List getPublicKeyList = changeStringListToIntList(publicKey!); + + final String command = SenderReferEventRecordTimeCommand( + keyID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + logsCount: state.logCountPage, + // time:DateTime.now().millisecondsSinceEpoch~/1000, + time: state.operateDate, + currentDate: state.currentDate, + token: getTokenList, + needAuthor: 1, + publicKey: getPublicKeyList, + privateKey: getPrivateKeyList, + ).toString(); + showEasyLoading(); showBlueConnetctToastTimer(action: () async { dismissEasyLoading(); @@ -119,22 +149,26 @@ class DoorLockLogLogic extends BaseGetXController { 'date':DateTool().getNowDateWithType(1), 'open_lock_result':'超时', }); + + BuglyTool.uploadException( + message: '查询锁记录超时-查询锁记录失败', + detail: '添加密码超时,查询锁记录失败--senderReferEventRecordTimeCommand:$command', + eventStr: '查询锁记录事件超时', + upload: true + ); + }); BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionStateState) async { if (connectionStateState == BluetoothConnectionState.connected) { - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); - final List getPrivateKeyList = - changeStringListToIntList(privateKey!); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); final List? token = await Storage.getStringList(saveBlueToken); final List getTokenList = changeStringListToIntList(token!); - final List? publicKey = - await Storage.getStringList(saveBluePublicKey); - final List getPublicKeyList = - changeStringListToIntList(publicKey!); + final List? publicKey = await Storage.getStringList(saveBluePublicKey); + final List getPublicKeyList = changeStringListToIntList(publicKey!); IoSenderManage.senderReferEventRecordTimeCommand( keyID: BlueManage().connectDeviceName, @@ -161,6 +195,12 @@ class DoorLockLogLogic extends BaseGetXController { 'open_lock_result':'断开连接', }); + BuglyTool.uploadException( + message: '查询锁记录超时-查询锁记录失败', + detail: '添加密码超时,查询锁记录失败--senderReferEventRecordTimeCommand:$command', + eventStr: '查询锁记录事件断开连接', + upload: true + ); if (state.ifCurrentScreen.value == true) { showBlueConnetctToast(); } @@ -238,9 +278,7 @@ class DoorLockLogLogic extends BaseGetXController { if(list.isEmpty){ return; } - final KeyOperationRecordEntity entity = await ApiRepository.to - .lockRecordUploadData( - lockId: state.keyInfos.value.lockId.toString(), records: list); + final KeyOperationRecordEntity entity = await ApiRepository.to.lockRecordUploadData(lockId: state.keyInfos.value.lockId.toString(), records: list); final String getMobile = (await Storage.getMobile())!; if (entity.errorCode!.codeIsSuccessful) { if (state.ifHaveNext == true) { diff --git a/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart b/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart index 3e0ddb62..9457d4eb 100755 --- a/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart +++ b/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart @@ -212,8 +212,8 @@ class AddFingerprintLogic extends BaseGetXController { BuglyTool.uploadException( message: '添加指纹确认结果,解析数据', - detail: '添加指纹确认结果,解析数据 _replyAddFingerprintConfirmation:${reply.data}', - eventStr: '添加指纹事件', + detail: '添加指纹确认结果蓝牙返回失败结果,解析数据 _replyAddFingerprintConfirmation:${reply.data}', + eventStr: '添加指纹事件蓝牙返回失败结果', upload: true ); state.ifAddState.value = false; @@ -264,7 +264,7 @@ class AddFingerprintLogic extends BaseGetXController { BuglyTool.uploadException( message: '添加指纹超时处理-添加指纹失败', detail: '添加指纹超时处理,断开连接,添加指纹失败--SenderAddFingerprintWithTimeCycleCoercionCommand:$command', - eventStr: '添加指纹事件', + eventStr: '添加指纹事件超时', upload: true ); Get.close(1); @@ -312,7 +312,7 @@ class AddFingerprintLogic extends BaseGetXController { BuglyTool.uploadException( message: '添加指纹断开连接-添加指纹失败', detail: '添加指纹断开连接-添加指纹失败--SenderAddFingerprintWithTimeCycleCoercionCommand:$command', - eventStr: '添加指纹事件', + eventStr: '添加指纹事件断开连接', upload: true ); @@ -376,8 +376,8 @@ class AddFingerprintLogic extends BaseGetXController { updateFingerprintUserNoLoadData(entity.data!.fingerprintId.toString()); BuglyTool.uploadException( message: '添加指纹调用接口成功', - detail: '添加指纹调用接口成功 - ', - eventStr: '添加指纹事件', + detail: '添加指纹调用接口成功', + eventStr: '添加指纹事件用接口成功', upload: true ); }else{ @@ -385,7 +385,7 @@ class AddFingerprintLogic extends BaseGetXController { BuglyTool.uploadException( message: '添加指纹调用接口失败', detail: '添加指纹调用接口添加指纹调用接口失败 - ${entity.errorMsg}', - eventStr: '添加指纹事件', + eventStr: '添加指纹事件接口失败', upload: true ); } diff --git a/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart b/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart index a54021a0..5e82f258 100755 --- a/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart +++ b/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_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 '../../../../tools/baseGetXController.dart'; +import '../../../../tools/bugly/bugly_tool.dart'; import '../../../../tools/commonDataManage.dart'; import '../../../../tools/dateTool.dart'; import '../../../../tools/storage.dart'; @@ -243,11 +244,16 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { late StreamSubscription _replySubscription; void _initReplySubscription() { - _replySubscription = - EventBusManager().eventBus!.on().listen((Reply reply) async { + _replySubscription = EventBusManager().eventBus!.on().listen((Reply reply) async { // 设置自定义密码 - if ((reply is SenderCustomPasswordsReply) && - (state.ifCurrentScreen.value == true)) { + if ((reply is SenderCustomPasswordsReply) && (state.ifCurrentScreen.value == true)) { + BuglyTool.uploadException( + message: '添加密码结果,解析数据', + detail: '添加密码结果,解析数据:${reply.data}', + eventStr: '添加密码事件结果', + upload: true + ); + final int status = reply.data[2]; switch (status) { case 0x00: @@ -384,6 +390,32 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { } state.sureBtnState.value = 1; + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); + + final String command = SenderCustomPasswordsCommand( + keyID: '1', + userID: await Storage.getUid(), + pwdNo: 0, + pwd: state.pwdController.text, + operate: 0, + isAdmin: state.isAdministrator.value == true ? 1 : 0, + useCountLimit: 0xffff, + startTime: startDate ~/ 1000, + endTime: endDate ~/ 1000, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + token: getTokenList + ).toString(); + + showEasyLoading(); showBlueConnetctToastTimer(action: () async { final String getMobile = (await Storage.getMobile())!; @@ -394,20 +426,24 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { 'add_password_result':'添加自定义密码超时', }); + BuglyTool.uploadException( + message: '添加密码超时处理-添加密码失败', + detail: '添加密码超时,添加密码失败--senderCustomPasswordsCommand:$command', + eventStr: '添加密码事件超时', + upload: true + ); + dismissEasyLoading(); state.sureBtnState.value = 0; }); BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { if (deviceConnectionState == BluetoothConnectionState.connected) { - final List? signKey = - await Storage.getStringList(saveBlueSignKey); + final List? signKey = await Storage.getStringList(saveBlueSignKey); final List signKeyDataList = changeStringListToIntList(signKey!); - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); - final List getPrivateKeyList = - changeStringListToIntList(privateKey!); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); final List? token = await Storage.getStringList(saveBlueToken); final List getTokenList = changeStringListToIntList(token!); @@ -436,6 +472,13 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { 'add_password_result':'添加自定义密码断开', }); + BuglyTool.uploadException( + message: '添加密码断开-添加密码失败', + detail: '添加密码断开,添加密码失败--senderCustomPasswordsCommand:$command', + eventStr: '添加密码事件断开连接', + upload: true + ); + dismissEasyLoading(); cancelBlueConnetctToastTimer(); state.sureBtnState.value = 0; From 74d8cd57f670e5bb6f6b239dc320b252166bbb59 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, 21 Oct 2024 18:13:21 +0800 Subject: [PATCH 07/13] =?UTF-8?q?iOS=E5=AE=89=E5=8D=93=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=B9=B6=E5=88=87=E6=8D=A2Product=E6=B8=A0=E9=81=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/Runner/AppDelegate.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Runner/AppDelegate.m b/ios/Runner/AppDelegate.m index 1c0be45e..4b399780 100755 --- a/ios/Runner/AppDelegate.m +++ b/ios/Runner/AppDelegate.m @@ -19,7 +19,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - [UMConfigure initWithAppkey:@"671244ae80464b33f6df9646" channel:@"RD_test"]; + [UMConfigure initWithAppkey:@"671244ae80464b33f6df9646" channel:@"Product"]; XSFlutterManager *VC = [[XSFlutterManager alloc] init]; self.window.rootViewController = VC; From f12e49b9ca4ecbff14d513fc7b11c30dd1458498 Mon Sep 17 00:00:00 2001 From: Liuyf Date: Tue, 22 Oct 2024 10:53:51 +0800 Subject: [PATCH 08/13] =?UTF-8?q?other:=20=E5=BF=BD=E7=95=A5.DS=5FStore?= =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/ios/.gitignore b/ios/.gitignore index 7a7f9873..3f13ee83 100755 --- a/ios/.gitignore +++ b/ios/.gitignore @@ -7,6 +7,7 @@ **/*sync/ .sconsign.dblite .tags* +.DS_Store **/.vagrant/ **/DerivedData/ Icon? From 8f78b4d4853dbaf64810f082da0c4e81d8d8d23e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=87=95=E5=B3=B0?= Date: Tue, 22 Oct 2024 02:56:36 +0000 Subject: [PATCH 09/13] Delete .DS_Store --- ios/.DS_Store | Bin 8196 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 ios/.DS_Store diff --git a/ios/.DS_Store b/ios/.DS_Store deleted file mode 100755 index 5bf96258218105abc51a9663de3cc901e1668aea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHMy>8S%5S|Su?j$4>kciSCxuuD8(9q#T28jw3)6j+c;ehzO=91&5b3sSL6YvVW z1>z-m5Gwd)b`|g1hjO9dkeHQrKF2$=GyCn|jYCA{U^y8Q?Gn)dm2vwD#EQc0TsvjU zzqtW4uqQgDDJ>orc04LN+WJBnPzIC%Wk4BF2L1&GaA$KF{N~vQpDuea-qiRM!#H!aC#()kJ=PALIT>e8 z#(OqCLownVc8REyNgb+G29$v=1Dw0}=>ZkAMD`x!?{*pYbomd-j=ZI!TC1eRaL?5p) zqA8uwY0L9XcnuT4RcI-{gz3u;mOoe1vU>{b1DZ zFm7gbDkHP>Dvo1|?ZR0&*S?qy^Rb;*u){IE{~hvNo4L)hQ6a1kZr!nup5FV)v%iMj z7Riao>gVXij2HRV{b=4*$% z`uT6Y|Ahz@%D{#gxa9oqa{hlG$Gmali+Hz@i;Kxj~*4E$9FegQ{9A-@0s From 9ea328968ad6bee618b42ee6eaeb1976c797f181 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, 28 Oct 2024 11:53:57 +0800 Subject: [PATCH 10/13] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=93=9D?= =?UTF-8?q?=E7=89=99=E8=AE=B0=E5=BD=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../doorLockLog/doorLockLog_logic.dart | 20 +++++++------------ .../doorLockLog/doorLockLog_page.dart | 2 +- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart b/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart index cb2e84a4..c9733078 100755 --- a/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart +++ b/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart @@ -138,9 +138,8 @@ class DoorLockLogLogic extends BaseGetXController { privateKey: getPrivateKeyList, ).toString(); - showEasyLoading(); - showBlueConnetctToastTimer(action: () async { - dismissEasyLoading(); + showBlueConnetctToastTimer(isShowBlueConnetctToast:false, action: () async { + cancelBlueConnetctToastTimer(); final String getMobile = (await Storage.getMobile())!; UmengCommonSdk.onEvent('check_doorLockLog', { @@ -156,10 +155,8 @@ class DoorLockLogLogic extends BaseGetXController { eventStr: '查询锁记录事件超时', upload: true ); - }); - BlueManage().blueSendData(BlueManage().connectDeviceName, - (BluetoothConnectionState connectionStateState) async { + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionStateState) async { if (connectionStateState == BluetoothConnectionState.connected) { final List? privateKey = await Storage.getStringList(saveBluePrivateKey); final List getPrivateKeyList = changeStringListToIntList(privateKey!); @@ -182,9 +179,7 @@ class DoorLockLogLogic extends BaseGetXController { publicKey: getPublicKeyList, privateKey: getPrivateKeyList, ); - } else if (connectionStateState == - BluetoothConnectionState.disconnected) { - dismissEasyLoading(); + } else if (connectionStateState == BluetoothConnectionState.disconnected) { cancelBlueConnetctToastTimer(); final String getMobile = (await Storage.getMobile())!; @@ -201,9 +196,6 @@ class DoorLockLogLogic extends BaseGetXController { eventStr: '查询锁记录事件断开连接', upload: true ); - if (state.ifCurrentScreen.value == true) { - showBlueConnetctToast(); - } } }); } @@ -254,6 +246,7 @@ class DoorLockLogLogic extends BaseGetXController { .millisecondsSinceEpoch; pageNo = 1; + AppLog.log('_getDoorLockLogListRefreshUIAction'); mockNetworkDataRequest(isRefresh: true); }); } @@ -336,9 +329,10 @@ class DoorLockLogLogic extends BaseGetXController { // 获取是否是演示模式 演示模式不获取接口 final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { + mockNetworkDataRequest(isRefresh: true); + getLockRecordLastUploadDataTime(); _initReplySubscription(); - mockNetworkDataRequest(isRefresh: true); } } diff --git a/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart b/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart index 3221ec45..9775feda 100755 --- a/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart +++ b/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart @@ -124,7 +124,7 @@ class _DoorLockLogPageState extends State with RouteAware { switch (value) { case '读取记录': { - logic.mockNetworkDataRequest(isRefresh: true); + logic.getLockRecordLastUploadDataTime(); } break; case '清空记录': From 5deef39697e0ed9c3f994ce09fc1e64a1f9eacdc Mon Sep 17 00:00:00 2001 From: Liuyf Date: Thu, 31 Oct 2024 16:20:52 +0800 Subject: [PATCH 11/13] =?UTF-8?q?other:=20=E6=9C=AC=E5=9C=B0=E5=BC=80?= =?UTF-8?q?=E5=8F=91local=E5=9C=B0=E5=9B=BE=E5=AF=86=E9=92=A5=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/flavors.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/flavors.dart b/lib/flavors.dart index 75a93ebf..69464c10 100755 --- a/lib/flavors.dart +++ b/lib/flavors.dart @@ -133,6 +133,9 @@ class F { static StarLockAMapKey get aMapKey { switch (appFlavor) { case Flavor.local: + return const StarLockAMapKey( + androidKey: '9388ca47f9674b447a17eff82bc0e2ea', + iosKey: 'cdec0512564baa58be26b2e2ac5ef3b7'); case Flavor.dev: return const StarLockAMapKey( androidKey: 'b56b681ee89f4db43a5aa1879ae8cbfe', From ab1ab37cbdc143a3d98ced6551292a4a2881a218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com> Date: Thu, 31 Oct 2024 17:09:06 +0800 Subject: [PATCH 12/13] =?UTF-8?q?fix:=201=E3=80=81=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E9=94=81=E8=AF=A6=E6=83=85=E8=BF=9B=E5=85=A5=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E7=95=8C=E9=9D=A2=E5=B0=B1=E4=BB=8E=E9=94=81?= =?UTF-8?q?=E4=B8=8A=E9=9D=A2=E6=8B=89=E5=8F=96=E8=AE=B0=E5=BD=95=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E3=80=822=E3=80=81=E4=BF=AE=E5=A4=8D=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E8=AE=B0=E5=BD=95=E9=A2=91=E7=B9=81=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../doorLockLog/doorLockLog_logic.dart | 33 +- .../doorLockLog/doorLockLog_page.dart | 13 +- .../doorLockLog/doorLockLog_state.dart | 1 + .../lockOperatingRecord_logic.dart | 318 +++++++++--------- .../lockOperatingRecord_page.dart | 83 ++--- lib/tools/advancedCalendar/src/widget.dart | 6 +- 6 files changed, 236 insertions(+), 218 deletions(-) diff --git a/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart b/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart index c9733078..3634ad62 100755 --- a/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart +++ b/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_entity.dart'; @@ -47,6 +48,7 @@ class DoorLockLogLogic extends BaseGetXController { upload: true ); + state.isLockReceiveResponse = true; cancelBlueConnetctToastTimer(); final int status = reply.data[2]; @@ -86,8 +88,8 @@ class DoorLockLogLogic extends BaseGetXController { (0xff & indexList[4]) << 16 | (0xff & indexList[5]) << 8 | (0xFF & indexList[6]); - final operateDate = time * 1000; - final serverTime = state.currentDate; + final int operateDate = time * 1000; + final int serverTime = state.currentDate; if (DateTime.fromMillisecondsSinceEpoch(operateDate).isAfter( DateTime.fromMillisecondsSinceEpoch(serverTime*1000))) { // AppLog.log('operateDate:$operateDate state.currentDate:${state.currentDate}'); @@ -110,6 +112,7 @@ class DoorLockLogLogic extends BaseGetXController { break; default: //失败 + dismissEasyLoading(); break; } } @@ -138,7 +141,8 @@ class DoorLockLogLogic extends BaseGetXController { privateKey: getPrivateKeyList, ).toString(); - showBlueConnetctToastTimer(isShowBlueConnetctToast:false, action: () async { + showEasyLoading(); + showBlueConnetctToastTimer(isShowBlueConnetctToast:true, action: () async { cancelBlueConnetctToastTimer(); final String getMobile = (await Storage.getMobile())!; @@ -155,6 +159,9 @@ class DoorLockLogLogic extends BaseGetXController { eventStr: '查询锁记录事件超时', upload: true ); + if(state.isLockReceiveResponse == false){ + dismissEasyLoading(); + } }); BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionStateState) async { if (connectionStateState == BluetoothConnectionState.connected) { @@ -180,6 +187,9 @@ class DoorLockLogLogic extends BaseGetXController { privateKey: getPrivateKeyList, ); } else if (connectionStateState == BluetoothConnectionState.disconnected) { + if (state.ifCurrentScreen.value == true) { + showBlueConnetctToast(); + } cancelBlueConnetctToastTimer(); final String getMobile = (await Storage.getMobile())!; @@ -225,19 +235,18 @@ class DoorLockLogLogic extends BaseGetXController { /// 刷新门锁日志列表 StreamSubscription? _getDoorLockLogListRefreshUIEvent; - void _getDoorLockLogListRefreshUIAction() { - _getDoorLockLogListRefreshUIEvent = eventBus - .on() - .listen((DoorLockLogListRefreshUI event) { + _getDoorLockLogListRefreshUIEvent = eventBus.on().listen((DoorLockLogListRefreshUI event) { state.currentSelectDate.value = event.getDoorLockLogTime; -// 设置startDate为当天的0点 + + // 设置startDate为当天的0点 state.startDate.value = DateTime( state.currentSelectDate.value.year, state.currentSelectDate.value.month, state.currentSelectDate.value.day) .millisecondsSinceEpoch; -// 设置endDate为下一天的0点,然后减去1毫秒 + + // 设置endDate为下一天的0点,然后减去1毫秒 state.endDate.value = DateTime( state.currentSelectDate.value.year, state.currentSelectDate.value.month, @@ -246,7 +255,6 @@ class DoorLockLogLogic extends BaseGetXController { .millisecondsSinceEpoch; pageNo = 1; - AppLog.log('_getDoorLockLogListRefreshUIAction'); mockNetworkDataRequest(isRefresh: true); }); } @@ -275,6 +283,7 @@ class DoorLockLogLogic extends BaseGetXController { final String getMobile = (await Storage.getMobile())!; if (entity.errorCode!.codeIsSuccessful) { if (state.ifHaveNext == true) { + showEasyLoading(); getLockRecordLastUploadDataTime(); } else { UmengCommonSdk.onEvent('check_doorLockLog', { @@ -285,6 +294,7 @@ class DoorLockLogLogic extends BaseGetXController { }); mockNetworkDataRequest(isRefresh: true); } + dismissEasyLoading(); }else{ UmengCommonSdk.onEvent('check_doorLockLog', { 'lockName':state.keyInfos.value.lockName!, @@ -292,6 +302,7 @@ class DoorLockLogLogic extends BaseGetXController { 'date':DateTool().getNowDateWithType(1), 'open_lock_result':'上传数据接口失败', }); + dismissEasyLoading(); } } @@ -331,7 +342,7 @@ class DoorLockLogLogic extends BaseGetXController { if (isDemoMode == false) { mockNetworkDataRequest(isRefresh: true); - getLockRecordLastUploadDataTime(); + // getLockRecordLastUploadDataTime(); _initReplySubscription(); } } diff --git a/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart b/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart index 9775feda..ba3b94d9 100755 --- a/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart +++ b/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart @@ -1,3 +1,4 @@ + import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -19,7 +20,6 @@ import 'package:timelines/timelines.dart'; import '../../../app_settings/app_colors.dart'; import '../../../tools/appRouteObserver.dart'; import '../../../tools/titleAppBar.dart'; -import '../../../translations/trans_lib.dart'; class DoorLockLogPage extends StatefulWidget { const DoorLockLogPage({Key? key}) : super(key: key); @@ -88,7 +88,7 @@ class _DoorLockLogPageState extends State with RouteAware { body: Column( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ topAdvancedCalendarWidget(), Divider( height: 1, @@ -124,6 +124,7 @@ class _DoorLockLogPageState extends State with RouteAware { switch (value) { case '读取记录': { + state.isLockReceiveResponse = false; logic.getLockRecordLastUploadDataTime(); } break; @@ -177,7 +178,7 @@ class _DoorLockLogPageState extends State with RouteAware { disabledColor: Colors.grey, ), child: Stack( - children: [ + children: [ AdvancedCalendar( controller: state.calendarControllerCustom, events: state.events, @@ -338,7 +339,6 @@ class _DoorLockLogPageState extends State with RouteAware { @override void didChangeDependencies() { - // TODO: implement didChangeDependencies super.didChangeDependencies(); /// 路由订阅 @@ -347,7 +347,6 @@ class _DoorLockLogPageState extends State with RouteAware { @override void dispose() { - // TODO: implement dispose /// 取消路由订阅 AppRouteObserver().routeObserver.unsubscribe(this); super.dispose(); @@ -365,7 +364,9 @@ class _DoorLockLogPageState extends State with RouteAware { void didPop() { super.didPop(); logic.cancelBlueConnetctToastTimer(); - if (EasyLoading.isShow) EasyLoading.dismiss(animation: true); + if (EasyLoading.isShow) { + EasyLoading.dismiss(animation: true); + } state.ifCurrentScreen.value = false; } diff --git a/lib/main/lockDetail/doorLockLog/doorLockLog_state.dart b/lib/main/lockDetail/doorLockLog/doorLockLog_state.dart index e4ff3970..7f9e5534 100755 --- a/lib/main/lockDetail/doorLockLog/doorLockLog_state.dart +++ b/lib/main/lockDetail/doorLockLog/doorLockLog_state.dart @@ -67,4 +67,5 @@ class DoorLockLogState { bool ifHaveNext = false; // 页码 int logCountPage = 10; // 蓝牙记录一页多少个 Rx currentSelectDate = DateTime.now().obs; + bool isLockReceiveResponse = false; // 是否收到回复 } diff --git a/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_logic.dart b/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_logic.dart index 41b51807..c2d17472 100755 --- a/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_logic.dart +++ b/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_logic.dart @@ -21,129 +21,129 @@ class LockOperatingRecordLogic extends BaseGetXController { LockOperatingRecordState state = LockOperatingRecordState(); // 获取解析后的数据 - late StreamSubscription _replySubscription; + // late StreamSubscription _replySubscription; - void _initReplySubscription() { - _replySubscription = - EventBusManager().eventBus!.on().listen((Reply reply) { - if (reply is SenderReferEventRecordTimeReply) { - _replyReferEventRecordTime(reply); - } - }); - } + // void _initReplySubscription() { + // _replySubscription = + // EventBusManager().eventBus!.on().listen((Reply reply) { + // if (reply is SenderReferEventRecordTimeReply) { + // _replyReferEventRecordTime(reply); + // } + // }); + // } // 根据时间查解析数据 - Future _replyReferEventRecordTime(Reply reply) async { - cancelBlueConnetctToastTimer(); - final int status = reply.data[2]; - switch (status) { - case 0x00: - //成功 - final int dataLength = (reply.data[5] << 8) + reply.data[6]; - AppLog.log('dataLength:$dataLength'); - // var dataLength = reply.data[5]; - if (dataLength > 0) { - reply.data.removeRange(0, 7); - // 把得到的数据按8位分割成数组 然后塞进一个新的数组里面 - if (reply.data.length < 17) { - return; - } - final List> getList = splitList(reply.data, 17); - // AppLog.log("getList:$getList"); - final List uploadList = []; - for (int i = 0; i < getList.length; i++) { - final List indexList = getList[i]; - // AppLog.log("indexList:$indexList"); - final Map indexMap = {}; - - indexMap['type'] = indexList[0].toString(); - - final int userNo = (indexList[1] * 256) + indexList[2]; - indexMap['user'] = userNo.toString(); - AppLog.log('userNouserNouserNouserNo:$userNo'); - - final List passwordData = indexList.sublist(7, 17); - final String password = utf8String(passwordData); - indexMap['password'] = password.toString(); - AppLog.log('passwordpasswordpassword:$password'); - - indexMap['success'] = '1'; - - final int time = (0xff & indexList[3]) << 24 | - (0xff & indexList[4]) << 16 | - (0xff & indexList[5]) << 8 | - (0xFF & indexList[6]); - final operateDate = time * 1000; - final serverTime = state.currentDate; - if (DateTime.fromMillisecondsSinceEpoch(operateDate).isAfter( - DateTime.fromMillisecondsSinceEpoch(serverTime*1000))) { - continue; - } - indexMap['date'] = '$operateDate'; - uploadList.add(indexMap); - } - if (dataLength == state.logCountPage) { - state.ifHaveNext = true; - } else { - state.ifHaveNext = false; - } - lockRecordUploadData(uploadList); - } - break; - case 0x06: - //无权限 需要鉴权 - - break; - default: - //失败 - break; - } - } + // Future _replyReferEventRecordTime(Reply reply) async { + // cancelBlueConnetctToastTimer(); + // final int status = reply.data[2]; + // switch (status) { + // case 0x00: + // //成功 + // final int dataLength = (reply.data[5] << 8) + reply.data[6]; + // AppLog.log('dataLength:$dataLength'); + // // var dataLength = reply.data[5]; + // if (dataLength > 0) { + // reply.data.removeRange(0, 7); + // // 把得到的数据按8位分割成数组 然后塞进一个新的数组里面 + // if (reply.data.length < 17) { + // return; + // } + // final List> getList = splitList(reply.data, 17); + // // AppLog.log("getList:$getList"); + // final List uploadList = []; + // for (int i = 0; i < getList.length; i++) { + // final List indexList = getList[i]; + // // AppLog.log("indexList:$indexList"); + // final Map indexMap = {}; + // + // indexMap['type'] = indexList[0].toString(); + // + // final int userNo = (indexList[1] * 256) + indexList[2]; + // indexMap['user'] = userNo.toString(); + // AppLog.log('userNouserNouserNouserNo:$userNo'); + // + // final List passwordData = indexList.sublist(7, 17); + // final String password = utf8String(passwordData); + // indexMap['password'] = password.toString(); + // AppLog.log('passwordpasswordpassword:$password'); + // + // indexMap['success'] = '1'; + // + // final int time = (0xff & indexList[3]) << 24 | + // (0xff & indexList[4]) << 16 | + // (0xff & indexList[5]) << 8 | + // (0xFF & indexList[6]); + // final operateDate = time * 1000; + // final serverTime = state.currentDate; + // if (DateTime.fromMillisecondsSinceEpoch(operateDate).isAfter( + // DateTime.fromMillisecondsSinceEpoch(serverTime*1000))) { + // continue; + // } + // indexMap['date'] = '$operateDate'; + // uploadList.add(indexMap); + // } + // if (dataLength == state.logCountPage) { + // state.ifHaveNext = true; + // } else { + // state.ifHaveNext = false; + // } + // lockRecordUploadData(uploadList); + // } + // break; + // case 0x06: + // //无权限 需要鉴权 + // + // break; + // default: + // //失败 + // break; + // } + // } // 查询事件记录(时间查询) - Future senderReferEventRecordTime() async { - showEasyLoading(); - showBlueConnetctToastTimer(action: () { - dismissEasyLoading(); - }); - BlueManage().blueSendData(BlueManage().connectDeviceName, - (BluetoothConnectionState connectionStateState) async { - if (connectionStateState == BluetoothConnectionState.connected) { - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); - final List getPrivateKeyList = - changeStringListToIntList(privateKey!); - - final List? token = await Storage.getStringList(saveBlueToken); - final List getTokenList = changeStringListToIntList(token!); - - final List? publicKey = - await Storage.getStringList(saveBluePublicKey); - final List getPublicKeyList = - changeStringListToIntList(publicKey!); - - IoSenderManage.senderReferEventRecordTimeCommand( - keyID: BlueManage().connectDeviceName, - userID: await Storage.getUid(), - logsCount: state.logCountPage, - // time:DateTime.now().millisecondsSinceEpoch~/1000, - time: state.operateDate, - currentDate: state.currentDate, - token: getTokenList, - needAuthor: 1, - publicKey: getPublicKeyList, - privateKey: getPrivateKeyList, - ); - } else if (connectionStateState == - BluetoothConnectionState.disconnected) { - dismissEasyLoading(); - cancelBlueConnetctToastTimer(); - if (state.ifCurrentScreen.value == true) { - showBlueConnetctToast(); - } - } - }); - } + // Future senderReferEventRecordTime() async { + // showEasyLoading(); + // showBlueConnetctToastTimer(action: () { + // dismissEasyLoading(); + // }); + // BlueManage().blueSendData(BlueManage().connectDeviceName, + // (BluetoothConnectionState connectionStateState) async { + // if (connectionStateState == BluetoothConnectionState.connected) { + // final List? privateKey = + // await Storage.getStringList(saveBluePrivateKey); + // final List getPrivateKeyList = + // changeStringListToIntList(privateKey!); + // + // final List? token = await Storage.getStringList(saveBlueToken); + // final List getTokenList = changeStringListToIntList(token!); + // + // final List? publicKey = + // await Storage.getStringList(saveBluePublicKey); + // final List getPublicKeyList = + // changeStringListToIntList(publicKey!); + // + // IoSenderManage.senderReferEventRecordTimeCommand( + // keyID: BlueManage().connectDeviceName, + // userID: await Storage.getUid(), + // logsCount: state.logCountPage, + // // time:DateTime.now().millisecondsSinceEpoch~/1000, + // time: state.operateDate, + // currentDate: state.currentDate, + // token: getTokenList, + // needAuthor: 1, + // publicKey: getPublicKeyList, + // privateKey: getPrivateKeyList, + // ); + // } else if (connectionStateState == + // BluetoothConnectionState.disconnected) { + // dismissEasyLoading(); + // cancelBlueConnetctToastTimer(); + // if (state.ifCurrentScreen.value == true) { + // showBlueConnetctToast(); + // } + // } + // }); + // } //请求操作记录列表 Future mockNetworkDataRequest() async { @@ -180,48 +180,48 @@ class LockOperatingRecordLogic extends BaseGetXController { } // 查询锁记录最后时间 - Future getLockRecordLastUploadDataTime() async { - final LockOperatingRecordGetLastRecordTimeEntity entity = - await ApiRepository.to.getLockRecordLastUploadDataTime( - lockId: CommonDataManage().currentKeyInfo.lockId.toString()); - if (entity.errorCode!.codeIsSuccessful) { - state.operateDate = entity.data!.operateDate! ~/ 1000; - state.currentDate = entity.data!.currentDate! ~/ 1000; - senderReferEventRecordTime(); - } - } + // Future getLockRecordLastUploadDataTime() async { + // final LockOperatingRecordGetLastRecordTimeEntity entity = + // await ApiRepository.to.getLockRecordLastUploadDataTime( + // lockId: CommonDataManage().currentKeyInfo.lockId.toString()); + // if (entity.errorCode!.codeIsSuccessful) { + // state.operateDate = entity.data!.operateDate! ~/ 1000; + // state.currentDate = entity.data!.currentDate! ~/ 1000; + // senderReferEventRecordTime(); + // } + // } // 操作记录上传 - Future lockRecordUploadData(List list) async { - if(list.isEmpty){ - return; - } - final KeyOperationRecordEntity entity = await ApiRepository.to - .lockRecordUploadData( - lockId: CommonDataManage().currentKeyInfo.lockId.toString(), - records: list); - if (entity.errorCode!.codeIsSuccessful) { - if (state.ifHaveNext == true) { - getLockRecordLastUploadDataTime(); - } else { - pageNo = 1; - mockNetworkDataRequest(); - } - } - } + // Future lockRecordUploadData(List list) async { + // if(list.isEmpty){ + // return; + // } + // final KeyOperationRecordEntity entity = await ApiRepository.to + // .lockRecordUploadData( + // lockId: CommonDataManage().currentKeyInfo.lockId.toString(), + // records: list); + // if (entity.errorCode!.codeIsSuccessful) { + // if (state.ifHaveNext == true) { + // getLockRecordLastUploadDataTime(); + // } else { + // pageNo = 1; + // mockNetworkDataRequest(); + // } + // } + // } //清空操作记录 - Future clearOperationRecordRequest() async { - final KeyOperationRecordEntity entity = await ApiRepository.to - .clearOperationRecord( - CommonDataManage().currentKeyInfo.lockId.toString()); - if (entity.errorCode!.codeIsSuccessful) { - showToast('清除数据成功', something: () { - pageNo = 1; - mockNetworkDataRequest(); - }); - } - } + // Future clearOperationRecordRequest() async { + // final KeyOperationRecordEntity entity = await ApiRepository.to + // .clearOperationRecord( + // CommonDataManage().currentKeyInfo.lockId.toString()); + // if (entity.errorCode!.codeIsSuccessful) { + // showToast('清除数据成功', something: () { + // pageNo = 1; + // mockNetworkDataRequest(); + // }); + // } + // } @override Future onReady() async { @@ -244,10 +244,10 @@ class LockOperatingRecordLogic extends BaseGetXController { // 获取是否是演示模式 演示模式不获取接口 final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { - getLockRecordLastUploadDataTime(); + // getLockRecordLastUploadDataTime(); // senderReferEventRecordTime(); // senderReferEventRecordNumber(); - _initReplySubscription(); + // _initReplySubscription(); } } @@ -258,7 +258,7 @@ class LockOperatingRecordLogic extends BaseGetXController { //获取是否是演示模式 演示模式不获取接口 final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { - _replySubscription.cancel(); + // _replySubscription.cancel(); // _getDoorLockLogListRefreshUIEvent?.cancel(); } } diff --git a/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart b/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart index 17752fd5..57a246a4 100755 --- a/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart +++ b/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart @@ -1,7 +1,9 @@ + import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:star_lock/main/lockDetail/lockOperatingRecord/lockOperatingRecord_state.dart'; import '../../../app_settings/app_colors.dart'; import '../../../tools/EasyRefreshTool.dart'; @@ -25,11 +27,11 @@ class LockOperatingRecordPage extends StatefulWidget { } class _LockOperatingRecordPageState extends State with RouteAware{ - final logic = Get.put(LockOperatingRecordLogic()); - final state = Get.find().state; + final LockOperatingRecordLogic logic = Get.put(LockOperatingRecordLogic()); + final LockOperatingRecordState state = Get.find().state; Future getHttpData() async { - var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); + final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { logic.mockNetworkDataRequest().then((KeyOperationRecordEntity value){ if (mounted) { @@ -85,7 +87,7 @@ class _LockOperatingRecordPageState extends State with getHttpData(); }, child: Column( - children: [ + children: [ // (CommonDataManage().currentKeyInfo.isLockOwner == 1 || // CommonDataManage().currentKeyInfo.keyRight == 1) // ? Column( @@ -120,13 +122,13 @@ class _LockOperatingRecordPageState extends State with return Obx(() => state.lockOperatingRecordListData.value.isNotEmpty ? ListView.separated( itemCount: state.lockOperatingRecordListData.length, - itemBuilder: (c, index) { - KeyRecordDataItem dataItem = + itemBuilder: (BuildContext c, int index) { + final KeyRecordDataItem dataItem = state.lockOperatingRecordListData[index]; - int? operateDate = dataItem.operateDate; - DateTime dateStr = + final int? operateDate = dataItem.operateDate; + final DateTime dateStr = DateTime.fromMillisecondsSinceEpoch(operateDate!); - String operateDateStr = + final String operateDateStr = '${dateStr.toLocal().toString().substring(0, 16)} '; // return _operatingRecordItem(getTypeIcon(dataItem.recordType!), // dataItem.recordTypeName!, operateDateStr, () {}); @@ -181,7 +183,7 @@ class _LockOperatingRecordPageState extends State with ), child: Row( mainAxisAlignment: MainAxisAlignment.start, - children: [ + children: [ Icon(Icons.access_time, size: 35.w), SizedBox(width: 10.w,), Text( @@ -196,7 +198,7 @@ class _LockOperatingRecordPageState extends State with child:Container( margin: EdgeInsets.only(bottom: 3.w), child: Row( - children: [ + children: [ Flexible( child: Text( userNameStr, @@ -273,43 +275,40 @@ class _LockOperatingRecordPageState extends State with // ); // } - Future _openModalBottomSheet() async { - showModalBottomSheet( - context: context, - shape: RoundedRectangleBorder( - borderRadius: BorderRadiusDirectional.circular(10)), - builder: (BuildContext context) { - return AlertBottomWidget( - topTitle: '', - // items: const ['读取记录', '清空记录', '导出记录'], - items: const ['清空记录'], - chooseCallback: (value) { - int getSelectIndex = value; - // if (getSelectIndex == 0) { - // logic.mockNetworkDataRequest(); - // } else if (getSelectIndex == 1) { - // logic.clearOperationRecordRequest(); - // } - if (getSelectIndex == 0) { - logic.clearOperationRecordRequest(); - } - }, - ); - }); - } + // Future _openModalBottomSheet() async { + // showModalBottomSheet( + // context: context, + // shape: RoundedRectangleBorder( + // borderRadius: BorderRadiusDirectional.circular(10)), + // builder: (BuildContext context) { + // return AlertBottomWidget( + // topTitle: '', + // // items: const ['读取记录', '清空记录', '导出记录'], + // items: const ['清空记录'], + // chooseCallback: (value) { + // int getSelectIndex = value; + // // if (getSelectIndex == 0) { + // // logic.mockNetworkDataRequest(); + // // } else if (getSelectIndex == 1) { + // // logic.clearOperationRecordRequest(); + // // } + // if (getSelectIndex == 0) { + // logic.clearOperationRecordRequest(); + // } + // }, + // ); + // }); + // } @override void didChangeDependencies() { - // TODO: implement didChangeDependencies super.didChangeDependencies(); - /// 路由订阅 AppRouteObserver().routeObserver.subscribe(this, ModalRoute.of(context)!); } @override void dispose() { - // TODO: implement dispose /// 取消路由订阅 AppRouteObserver().routeObserver.unsubscribe(this); super.dispose(); @@ -327,7 +326,9 @@ class _LockOperatingRecordPageState extends State with void didPop() { super.didPop(); logic.cancelBlueConnetctToastTimer(); - if (EasyLoading.isShow) EasyLoading.dismiss(animation: true); + if (EasyLoading.isShow) { + EasyLoading.dismiss(animation: true); + } state.ifCurrentScreen.value = false; } @@ -343,7 +344,9 @@ class _LockOperatingRecordPageState extends State with void didPushNext() { super.didPushNext(); logic.cancelBlueConnetctToastTimer(); - if (EasyLoading.isShow) EasyLoading.dismiss(animation: true); + if (EasyLoading.isShow) { + EasyLoading.dismiss(animation: true); + } state.ifCurrentScreen.value = false; } diff --git a/lib/tools/advancedCalendar/src/widget.dart b/lib/tools/advancedCalendar/src/widget.dart index 468f8fe8..dff01e79 100755 --- a/lib/tools/advancedCalendar/src/widget.dart +++ b/lib/tools/advancedCalendar/src/widget.dart @@ -232,8 +232,7 @@ class _AdvancedCalendarState extends State child: ValueListenableBuilder( valueListenable: _controller, builder: (_, selectedDate, __) { - AppLog.log('****selectedDate: $selectedDate'); - eventBus.fire(DoorLockLogListRefreshUI(selectedDate)); + // AppLog.log('****selectedDate: $selectedDate'); return Stack( alignment: Alignment.center, children: [ @@ -252,6 +251,7 @@ class _AdvancedCalendarState extends State ); } _monthViewCurrentPage.value = pageIndex; + AppLog.log('调用onPageChanged'); }, controller: _monthPageController, physics: _animationController.value == 1.0 @@ -389,6 +389,8 @@ class _AdvancedCalendarState extends State void _handleDateChanged(DateTime date) { _controller.value = date; + AppLog.log('点击日期了'); + eventBus.fire(DoorLockLogListRefreshUI(date)); } void _handleFinishDrag() async { From 4cd38d56d2c92dc1f4e71a7b7a4c6e115eee3939 Mon Sep 17 00:00:00 2001 From: Liuyf Date: Sat, 2 Nov 2024 10:15:24 +0800 Subject: [PATCH 13/13] ci: fix ' ios-voice-processor (= 1.1.0, ~> 1.1.0)' issue --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index eeaf352d..523c181f 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -220,7 +220,7 @@ dependencies: intl: ^0.18.0 # flutter_audio_capture: <1.1.5 - flutter_voice_processor: ^1.1.1 + flutter_voice_processor: 1.1.1 #监听网络连接状态 connectivity_plus: ^5.0.2 #flutter_advanced_calendar: ^1.4.1