import 'dart:async'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:star_lock/blue/io_protocol/io_addFace.dart'; import 'package:star_lock/login/login/entity/LoginEntity.dart'; import 'package:star_lock/main/lockDetail/fingerprint/fingerprintList/fingerprintListData_entity.dart'; import 'package:star_lock/main/lockDetail/iris/irisList/irisList_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import '../../../../blue/blue_manage.dart'; import '../../../../blue/io_reply.dart'; import '../../../../blue/io_tool/io_tool.dart'; import '../../../../blue/io_tool/manager_event_bus.dart'; import '../../../../network/api_repository.dart'; import '../../../../tools/eventBusEventManage.dart'; import '../../../../tools/storage.dart'; class IrisListLogic extends BaseGetXController { IrisListState state = IrisListState(); // 获取解析后的数据 late StreamSubscription _replySubscription; void _initReplySubscription() { _replySubscription = EventBusManager().eventBus!.on().listen((Reply reply) { // 添加人脸开始(此处用作删除人脸) if ((reply is SenderAddFaceReply) && (state.isDeletFaceData == true)) { _replyAddFaceBegin(reply); } }); } // 添加人脸开始---这里用作删除人脸 Future _replyAddFaceBegin(Reply reply) async { final int status = reply.data[2]; switch (status) { case 0x00: //成功 state.isDeletFaceData = false; cancelBlueConnetctToastTimer(); dismissEasyLoading(); if (state.isDeletAll == false) { deletFacesData(); } else { clearAllFacesData(); } break; case 0x06: //无权限 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!); // IoSenderManage.senderAddFaceCommand( // keyID:state.deletKeyID, // userID:state.deletUserID, // faceNo:state.deletFaceNo, // useCountLimit:0, // isForce:0, // 是否是胁迫 // isRound:0, // 是否是循环 // weekRound:0, // 周循环 // startDate: 0x11223344, // endDate: 0x11223344, // startTime:"0", // endTime:"0", // needAuthor:1, // signKey:signKeyDataList, // privateKey:getPrivateKeyList, // token: getTokenList, // ); break; default: //失败 break; } } // 获取卡片状态 Future _replyReferEventRecordNumber(Reply reply) async { final int status = reply.data[2]; switch (status) { case 0x00: //成功 // _getLockStatus(); break; case 0x06: //无权限 break; default: //失败 break; } } // 获取人脸状态 Future senderQueryingFaceStatus() 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? token = await Storage.getStringList(saveBlueToken); final List getTokenList = changeStringListToIntList(token!); final List? publicKey = await Storage.getStringList(saveBluePublicKey); final List getPublicKeyList = changeStringListToIntList(publicKey!); // IoSenderManage.senderQueryingFaceStatusCommand( // keyID: BlueManage().connectDeviceName, // userID: await Storage.getUid(), // role: 0xff, // faceCount: 20, // faceNo: 1, // token: getTokenList, // needAuthor: 1, // publicKey: getPublicKeyList, // privateKey: getPrivateKeyList, // ); } }); } // 查询用户、指纹、密码、卡片数量(用于判断是否同步) Future senderCheckingUserInfoCount() 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? token = await Storage.getStringList(saveBlueToken); final List getTokenList = changeStringListToIntList(token!); final List? publicKey = await Storage.getStringList(saveBluePublicKey); final List getPublicKeyList = changeStringListToIntList(publicKey!); // IoSenderManage.senderCheckingUserInfoCountCommand( // keyID: BlueManage().connectDeviceName, // userID: await Storage.getUid(), // role: 0xff, // nowTime: DateTime.now().millisecondsSinceEpoch ~/ 1000, // token: getTokenList, // needAuthor: 1, // publicKey: getPublicKeyList, // privateKey: getPrivateKeyList, // ); } }); } // 删除人脸 Future senderAddIris() async { showEasyLoading(); showBlueConnetctToastTimer(action: () { dismissEasyLoading(); }); BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { if (deviceConnectionState == BluetoothConnectionState.connected) { 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.senderAddFaceCommand( // keyID:state.deletKeyID, // userID:state.deletUserID, // faceNo:state.deletFaceNo, // useCountLimit:0, // isForce:0, // 是否是胁迫 // isRound:0, // 是否是循环 // weekRound:0, // 周循环 // startDate: 0x11223344, // endDate: 0x11223344, // startTime:"0", // endTime:"0", // needAuthor:1, // signKey:signKeyDataList, // privateKey:getPrivateKeyList, // token: getTokenList, // ); } else if (deviceConnectionState == BluetoothConnectionState.disconnected) { dismissEasyLoading(); cancelBlueConnetctToastTimer(); if (state.ifCurrentScreen.value == true) { showBlueConnetctToast(); } } }); } // 获取虹膜列表 Future getIrisListData() async { final FingerprintListDataEntity entity = await ApiRepository.to.getFaceListData( lockId: state.lockId.value.toString(), pageNo: '1', pageSize: '20', searchStr: state.searchController.text, ); if (entity.errorCode!.codeIsSuccessful) { state.faceItemListData.value = entity.data!.list!; } } // 删除的人脸 Future deletFacesData() async { String faceId = ''; String type = '1'; if (state.isDeletAll == false) { faceId = state.deletKeyID; type = '0'; } final LoginEntity entity = await ApiRepository.to.deleteFaceData( faceId: int.parse(faceId), lockId: state.lockId.value, ); if (entity.errorCode!.codeIsSuccessful) { showToast('删除成功'); state.isDeletFaceData = false; getIrisListData(); } } // 重置所有的人脸 Future clearAllFacesData() async { String faceId = ''; String type = '1'; if (state.isDeletAll == false) { faceId = state.deletKeyID; type = '0'; } final LoginEntity entity = await ApiRepository.to.clearFaceData( lockId: state.lockId.value, ); if (entity.errorCode!.codeIsSuccessful) { showToast('重置成功'); state.isDeletFaceData = false; getIrisListData(); } } // 监听修改完详情之后刷新列表 late StreamSubscription _teamEvent; void _initRefreshAction() { _teamEvent = eventBus .on() .listen((OtherTypeRefreshListEvent event) { getIrisListData(); }); } @override Future onReady() async { super.onReady(); // 获取是否是演示模式 演示模式不获取接口 final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { // _initReplySubscription(); // _initRefreshAction(); // getFaceListData(); } } @override Future onInit() async { super.onInit(); final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { // senderQueryingFingerprintStatus(); // senderCheckingCardStatus(); // senderCheckingUserInfoCount(); } } @override Future onClose() async { super.onClose(); final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { // _replySubscription.cancel(); // _teamEvent.cancel(); } } }