diff --git a/lib/blue/blue_manage.dart b/lib/blue/blue_manage.dart index dcbced19..30e39212 100755 --- a/lib/blue/blue_manage.dart +++ b/lib/blue/blue_manage.dart @@ -110,7 +110,7 @@ class BlueManage { _connectionStateSubscription = bluetoothConnectDevice!.connectionState .listen((BluetoothConnectionState state) async { bluetoothConnectionState = state; - // AppLog.log("蓝牙连接状态:$state"); + AppLog.log('蓝牙连接回调状态:$state'); }); } @@ -386,13 +386,33 @@ class BlueManage { EasyLoading.showToast('该锁已被重置'.tr, duration: 2000.milliseconds); return; } + //尝试连接设备 + await bluetoothDeviceConnect(bluetoothConnectDevice!, connectStateCallBack); + } + //直接给蓝牙设备写入 + Future doNotSearchBLE( + String masAdds, ConnectStateCallBack connectStateCallBack) async { + await FlutterBluePlus.stopScan(); + if (bluetoothConnectDevice == null || + bluetoothConnectDevice?.remoteId.str != masAdds) { + bluetoothConnectDevice = BluetoothDevice.fromId(masAdds); + _initGetMtuSubscription(); + _initListenConnectionState(); + } + //尝试连接设备 + await bluetoothDeviceConnect(bluetoothConnectDevice!, connectStateCallBack); + } + + //设备连接 + Future bluetoothDeviceConnect(BluetoothDevice bluetoothConnectDevice, + ConnectStateCallBack connectStateCallBack) async { // 重连三次 const int maxAttempts = 3; int attempt = 0; while (attempt < maxAttempts) { try { - await bluetoothConnectDevice!.connect(timeout: 5.seconds); + await bluetoothConnectDevice.connect(timeout: 5.seconds); break; // If the connection is successful, break the loop } catch (e) { AppLog.log('连接失败 重连了: $e'); @@ -437,52 +457,6 @@ class BlueManage { } } - //直接给蓝牙设备写入 - Future doNotSearchBLE( - String masAdds, ConnectStateCallBack connectStateCallBack) async { - await FlutterBluePlus.stopScan(); - final BluetoothDevice device = BluetoothDevice.fromId(masAdds); - // 重连三次 - const int maxAttempts = 3; - bool connected = false; - int attempt = 0; - while (attempt < maxAttempts && !connected) { - try { - await device.connect(); - connected = true; - } catch (e, s) { - AppLog.log('连接失败 重连了: ${e.toString()} ${s.toString()}'); - attempt++; // Increase the attempt count - if (attempt < maxAttempts) { - AppLog.log('重新尝试连接...'); - } - } - } - - if (!connected) { - connectStateCallBack(BluetoothConnectionState.disconnected); - return; - } - - bluetoothConnectDevice = device; - bluetoothConnectionState = BluetoothConnectionState.connected; - 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) { - _subScribeToCharacteristic(characteristic); - } - } - } - } - connectStateCallBack(BluetoothConnectionState.connected); - // writeCharacteristicWithResponse(value); - } - Future _subScribeToCharacteristic( BluetoothCharacteristic characteristic) async { final StreamSubscription> subscription = diff --git a/lib/main/lockDetail/card/addCardType/addCardType_logic.dart b/lib/main/lockDetail/card/addCardType/addCardType_logic.dart index 26d33526..c72b658a 100755 --- a/lib/main/lockDetail/card/addCardType/addCardType_logic.dart +++ b/lib/main/lockDetail/card/addCardType/addCardType_logic.dart @@ -1,6 +1,7 @@ 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/tools/baseGetXController.dart'; import '../../../../appRouters.dart'; @@ -12,31 +13,31 @@ class AddCardTypeLogic extends BaseGetXController{ AddCardTypeState state = AddCardTypeState(); // 添加卡数据 - void addCardData() async { - var carType = 0; // 永久:1;限时2,单次3,循环:4 - var startDate = ""; - var endDate = ""; - var startTime = ""; - var endTime = ""; - if (state.selectType.value == "0") { + Future addCardData() async { + int carType = 0; // 永久:1;限时2,单次3,循环:4 + String startDate = ''; + String endDate = ''; + String startTime = ''; + String endTime = ''; + if (state.selectType.value == '0') { carType = 1; - startDate = "0"; - endDate = "0"; - startTime = "0"; - endTime = "0"; - } else if (state.selectType.value == "1") { + startDate = '0'; + endDate = '0'; + startTime = '0'; + endTime = '0'; + } else if (state.selectType.value == '1') { carType = 2; startDate = DateTool().dateToTimestamp(state.timeLimitBeginTime.value, 1).toString(); endDate = DateTool().dateToTimestamp(state.timeLimitEndTime.value, 1).toString(); - startTime = "0"; - endTime = "0"; + startTime = '0'; + endTime = '0'; if (startDate.isEmpty) { - showToast("请选择开始时间".tr); + showToast('请选择开始时间'.tr); return; } if (endDate.isEmpty) { - showToast("请选择结束时间".tr); + showToast('请选择结束时间'.tr); return; } @@ -46,14 +47,14 @@ class AddCardTypeLogic extends BaseGetXController{ // } if (int.parse(startDate) >= int.parse(endDate)) { - showToast("失效时间要大于生效时间".tr); + showToast('失效时间要大于生效时间'.tr); return; } // AppLog.log("state.timeLimitBeginTime.value:${state.timeLimitBeginTime.value} startDate:$startDate"); // AppLog.log("state.timeLimitEndTime.value:${state.timeLimitEndTime.value} endDate:$endDate"); - } else if (state.selectType.value == "2") { + } else if (state.selectType.value == '2') { if (state.cycleBeginTime.value.isEmpty) { - showToast("请选择有效期".tr); + showToast('请选择有效期'.tr); return; } startDate = DateTool().dateToTimestamp(state.cycleBeginTime.value, 1).toString(); @@ -63,28 +64,27 @@ class AddCardTypeLogic extends BaseGetXController{ carType = 4; } - // var isCoerced = state.isStressFingerprint.value == false ? "1" : "2"; // 1:非胁迫卡 2:胁迫卡 - Get.toNamed(Routers.addICCardPage, arguments: { - "lockId": state.lockId.value, - "endDate": endDate, - "addType": "1", - "cardName": state.nameController.text, - "cardNumber": "123456", - "cardType": carType.toString(), - "isCoerced": state.isStressFingerprint.value == false ? "1" : "2", - "startDate": startDate, - "weekDay": state.weekdaysList.value, - "fromType": state.fromType.value, - "isAdministrator": state.isAdministrator.value == false ? "1" : "2", // 1:不是管理员 2:是管理员 - "effectiveTime": startTime, - "failureTime": endTime, - "selectType": state.selectType.value, + Get.toNamed(Routers.addICCardPage, arguments: { + 'lockId': state.lockId.value, + 'endDate': endDate, + 'addType': '1', + 'cardName': state.nameController.text, + 'cardNumber': '123456', + 'cardType': carType.toString(), + 'isCoerced': state.isStressFingerprint.value == false ? '2' : '1', + 'startDate': startDate, + 'weekDay': state.weekdaysList.value, + 'fromType': state.fromType.value, + 'isAdministrator': state.isAdministrator.value == false ? '1' : '2', // 1:不是管理员 2:是管理员 + 'effectiveTime': startTime, + 'failureTime': endTime, + 'selectType': state.selectType.value, }); } // 校验卡名字是否重复 - void checkCardNameDuplicated(String cardName) async{ - var entity = await ApiRepository.to.checkCardNameDuplicatedData( + Future checkCardNameDuplicated(String cardName) async{ + final LoginEntity entity = await ApiRepository.to.checkCardNameDuplicatedData( lockId: state.lockId.value.toString(), cardName: cardName, ); diff --git a/lib/main/lockDetail/card/addCardType/addCardType_page.dart b/lib/main/lockDetail/card/addCardType/addCardType_page.dart index e825d838..aa0ac540 100755 --- a/lib/main/lockDetail/card/addCardType/addCardType_page.dart +++ b/lib/main/lockDetail/card/addCardType/addCardType_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:star_lock/main/lockDetail/card/addCardType/addCardType_state.dart'; import 'package:star_lock/tools/commonDataManage.dart'; import 'package:star_lock/tools/pickers/pickers.dart'; import 'package:star_lock/tools/pickers/time_picker/model/date_mode.dart'; @@ -28,12 +29,11 @@ class AddCardPage extends StatefulWidget { class _AddCardPageState extends State with SingleTickerProviderStateMixin { - final logic = Get.put(AddCardTypeLogic()); - final state = Get.find().state; + final AddCardTypeLogic logic = Get.put(AddCardTypeLogic()); + final AddCardTypeState state = Get.find().state; @override void initState() { - // TODO: implement initState super.initState(); state.tabController = TabController( @@ -63,7 +63,7 @@ class _AddCardPageState extends State haveBack: true, backgroundColor: AppColors.mainColor), body: Column( - children: [ + children: [ _tabBar(), _pageWidget(), ], @@ -78,7 +78,7 @@ class _AddCardPageState extends State // 永久 return SingleChildScrollView( child: Column( - children: [ + children: [ perpetualKeyWidget( TranslationLoader.lanKeys!.name!.tr, TranslationLoader.lanKeys!.pleaseEnter!.tr, @@ -93,7 +93,7 @@ class _AddCardPageState extends State // 限时 return SingleChildScrollView( child: Column( - children: [ + children: [ perpetualKeyWidget( TranslationLoader.lanKeys!.name!.tr, TranslationLoader.lanKeys!.pleaseEnter!.tr, @@ -110,7 +110,7 @@ class _AddCardPageState extends State // 循环 return SingleChildScrollView( child: Column( - children: [ + children: [ perpetualKeyWidget( TranslationLoader.lanKeys!.name!.tr, TranslationLoader.lanKeys!.pleaseEnter!.tr, @@ -131,10 +131,10 @@ class _AddCardPageState extends State Widget perpetualKeyWidget( String titleStr, String rightTitle, TextEditingController controller) { return Column( - children: [ + children: [ CommonItem( leftTitel: titleStr, - rightTitle: "", + rightTitle: '', isHaveRightWidget: true, rightWidget: getTFWidget(rightTitle)), Container(height: 10.h), @@ -145,17 +145,17 @@ class _AddCardPageState extends State // 限时顶部选择日期 Widget keyTimeLimitWidget() { return Column( - children: [ + children: [ Obx(() => CommonItem( leftTitel: TranslationLoader.lanKeys!.effectiveTime!.tr, rightTitle: state.timeLimitBeginTime.value, isHaveLine: true, isHaveDirection: true, action: () async { - PDuration selectDate = PDuration.parse( + final PDuration selectDate = PDuration.parse( DateTime.parse(state.timeLimitBeginTime.value)); Pickers.showDatePicker(context, - selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (p) { + selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) { state.timeLimitBeginTime.value = DateTool().getYMDHNDateString(p, 1); }); @@ -165,10 +165,10 @@ class _AddCardPageState extends State rightTitle: state.timeLimitEndTime.value, isHaveDirection: true, action: () { - PDuration selectDate = + final PDuration selectDate = PDuration.parse(DateTime.tryParse(state.timeLimitEndTime.value)); Pickers.showDatePicker(context, - selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (p) { + selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) { state.timeLimitEndTime.value = DateTool().getYMDHNDateString(p, 1); }); @@ -181,16 +181,16 @@ class _AddCardPageState extends State // 循环顶部选择日期 Widget keyCyclicDate() { return Column( - children: [ + children: [ Obx(() => CommonItem( leftTitel: TranslationLoader.lanKeys!.periodValidity!.tr, rightTitle: - "${state.cycleBeginTime.value}\n${state.cycleEndTime.value}", + '${state.cycleBeginTime.value}\n${state.cycleEndTime.value}', isHaveDirection: true, isHaveLine: true, action: () async { - var result = - await Get.toNamed(Routers.seletKeyCyclicDatePage, arguments: { + final result = + await Get.toNamed(Routers.seletKeyCyclicDatePage, arguments: { 'validityValue': state.weekdaysList.value, 'starDate': state.cycleBeginTime.value, 'endDate': state.cycleEndTime.value, @@ -206,15 +206,15 @@ class _AddCardPageState extends State } })), Obx(() => Visibility( - visible: state.weekdaysList.isNotEmpty ? true : false, + visible: state.weekdaysList.isNotEmpty, child: CommonItem( - leftTitel: "有效日".tr, - rightTitle: state.weekdaysList.value.join(",").toString(), + leftTitel: '有效日'.tr, + rightTitle: state.weekdaysList.value.join(',').toString(), isHaveDirection: true, isHaveLine: true, action: () async { - var result = await Get.toNamed(Routers.seletKeyCyclicDatePage, - arguments: { + final result = await Get.toNamed(Routers.seletKeyCyclicDatePage, + arguments: { 'validityValue': state.weekdaysList.value, 'starDate': state.cycleBeginTime.value, 'endDate': state.cycleEndTime.value, @@ -232,13 +232,13 @@ class _AddCardPageState extends State Obx(() => Visibility( visible: state.effectiveDateTime.value.isNotEmpty, child: CommonItem( - leftTitel: "有效时间".tr, + leftTitel: '有效时间'.tr, rightTitle: - "${state.effectiveDateTime.value}-${state.failureDateTime.value}", + '${state.effectiveDateTime.value}-${state.failureDateTime.value}', isHaveDirection: true, action: () async { - var result = await Get.toNamed(Routers.seletKeyCyclicDatePage, - arguments: { + final result = await Get.toNamed(Routers.seletKeyCyclicDatePage, + arguments: { 'validityValue': state.weekdaysList.value, 'starDate': state.cycleBeginTime.value, 'endDate': state.cycleEndTime.value, @@ -259,14 +259,12 @@ class _AddCardPageState extends State Widget keyBottomWidget() { return Column( - children: [ + children: [ Obx(() => Visibility( - visible: CommonDataManage().currentKeyInfo.isLockOwner == 1 - ? true - : false, + visible: CommonDataManage().currentKeyInfo.isLockOwner == 1, child: CommonItem( - leftTitel: "是否为管理员".tr, - rightTitle: "", + leftTitel: '是否为管理员'.tr, + rightTitle: '', isTipsImg: false, isHaveRightWidget: true, rightWidget: @@ -274,7 +272,7 @@ class _AddCardPageState extends State SizedBox(height: 10.h), Obx(() => CommonItem( leftTitel: TranslationLoader.lanKeys!.stressCard!.tr, - rightTitle: "", + rightTitle: '', isTipsImg: false, isHaveRightWidget: true, rightWidget: SizedBox( @@ -291,17 +289,17 @@ class _AddCardPageState extends State SubmitBtn( btnName: TranslationLoader.lanKeys!.next!.tr, onClick: () async { - var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); + final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { if (state.nameController.text.isEmpty) { - logic.showToast("请输入姓名".tr); + logic.showToast('请输入姓名'.tr); return; } logic.checkCardNameDuplicated(state.nameController.text); } else { // Get.toNamed(Routers.selectLockTypePage); - logic.showToast("演示模式".tr); + logic.showToast('演示模式'.tr); } }), ], @@ -318,7 +316,7 @@ class _AddCardPageState extends State child: Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, - children: [ + children: [ Expanded( child: TextField( //输入框一行 @@ -368,7 +366,7 @@ class _AddCardPageState extends State trackColor: CupertinoColors.systemGrey5, thumbColor: CupertinoColors.white, value: state.isStressFingerprint.value, - onChanged: (value) { + onChanged: (bool value) { state.isStressFingerprint.value = value; }, ); @@ -381,34 +379,34 @@ class _AddCardPageState extends State trackColor: CupertinoColors.systemGrey5, thumbColor: CupertinoColors.white, value: state.isAdministrator.value, - onChanged: (value) { + onChanged: (bool value) { state.isAdministrator.value = value; }, ); } final List _itemTabs = [ - ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, selectType: "0"), - ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, selectType: "1"), + ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, selectType: '0'), + ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, selectType: '1'), ItemView( - title: TranslationLoader.lanKeys!.circulation!.tr, selectType: "2"), + title: TranslationLoader.lanKeys!.circulation!.tr, selectType: '2'), ]; final List _fromCheckInTypeItemTabs = [ - ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, selectType: "0"), - ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, selectType: "1"), + ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, selectType: '0'), + ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, selectType: '1'), ]; TabBar _tabBar() { return TabBar( controller: state.tabController, - onTap: (index) { + onTap: (int index) { FocusScope.of(context).requestFocus(FocusNode()); }, tabs: state.fromType.value == 1 - ? _itemTabs.map((ItemView item) => _tab(item)).toList() + ? _itemTabs.map(_tab).toList() : _fromCheckInTypeItemTabs - .map((ItemView item) => _tab(item)) + .map(_tab) .toList(), isScrollable: true, indicatorColor: Colors.red, @@ -443,10 +441,10 @@ class _AddCardPageState extends State controller: state.tabController, children: state.fromType.value == 1 ? _itemTabs - .map((ItemView item) => Obx(() => indexChangeWidget())) + .map((ItemView item) => Obx(indexChangeWidget)) .toList() : _fromCheckInTypeItemTabs - .map((ItemView item) => Obx(() => indexChangeWidget())) + .map((ItemView item) => Obx(indexChangeWidget)) .toList(), ), ); diff --git a/lib/main/lockDetail/card/addCardType/addCardType_state.dart b/lib/main/lockDetail/card/addCardType/addCardType_state.dart index 1c234082..43cbefe5 100755 --- a/lib/main/lockDetail/card/addCardType/addCardType_state.dart +++ b/lib/main/lockDetail/card/addCardType/addCardType_state.dart @@ -5,31 +5,31 @@ import 'package:get/get.dart'; import '../../../../tools/dateTool.dart'; class AddCardTypeState{ + AddCardTypeState() { + Map map = Get.arguments; + lockId.value = map['lockId']; + fromType.value = map['fromType']; + // 1从添加钥匙列表进入 2从考勤添加员工入口进入 + if(fromType.value == 2){ + fromTypeTwoStaffName.value = map['fromTypeTwoStaffName']; // 从添加员工进入 传入员工名字 + } + } - final lockId = 0.obs; - final selectType = "0".obs;// 0永久 1限时 2循环 - final fromType = 1.obs; // // 1从添加钥匙列表进入 2从考勤添加员工入口进入 - final isStressFingerprint = false.obs; - final isAdministrator = false.obs;// 是否是管理员 + final RxInt lockId = 0.obs; + final RxString selectType = '0'.obs;// 0永久 1限时 2循环 + final RxInt fromType = 1.obs; // // 1从添加钥匙列表进入 2从考勤添加员工入口进入 + final RxBool isStressFingerprint = false.obs; + final RxBool isAdministrator = false.obs;// 是否是管理员 - var timeLimitBeginTime = DateTool().dateToYMDHNString(DateTime.now().millisecondsSinceEpoch.toString()).obs;// 限时开始时间 - var timeLimitEndTime = DateTool().dateToYMDHNString(DateTime.now().millisecondsSinceEpoch.toString()).obs;// 限时结束时间 - var cycleBeginTime = "".obs;// 循环开始时间 - var cycleEndTime = "".obs;// 循环结束时间 - var effectiveDateTime = "".obs;// 生效时间 - var failureDateTime = "".obs;// 失效时间 - var weekdaysList = [].obs; - var fromTypeTwoStaffName = "".obs; // 从添加员工进入 传入员工名字 + RxString timeLimitBeginTime = DateTool().dateToYMDHNString(DateTime.now().millisecondsSinceEpoch.toString()).obs;// 限时开始时间 + RxString timeLimitEndTime = DateTool().dateToYMDHNString(DateTime.now().millisecondsSinceEpoch.toString()).obs;// 限时结束时间 + RxString cycleBeginTime = ''.obs;// 循环开始时间 + RxString cycleEndTime = ''.obs;// 循环结束时间 + RxString effectiveDateTime = ''.obs;// 生效时间 + RxString failureDateTime = ''.obs;// 失效时间 + RxList weekdaysList = [].obs; + RxString fromTypeTwoStaffName = ''.obs; // 从添加员工进入 传入员工名字 final TextEditingController nameController = TextEditingController(); late TabController tabController; - AddCardTypeState() { - Map map = Get.arguments; - lockId.value = map["lockId"]; - fromType.value = map["fromType"]; - // 1从添加钥匙列表进入 2从考勤添加员工入口进入 - if(fromType.value == 2){ - fromTypeTwoStaffName.value = map["fromTypeTwoStaffName"]; // 从添加员工进入 传入员工名字 - } - } } diff --git a/lib/main/lockDetail/card/addICCard/addICCard_logic.dart b/lib/main/lockDetail/card/addICCard/addICCard_logic.dart index 88f7c707..9884cbd3 100755 --- a/lib/main/lockDetail/card/addICCard/addICCard_logic.dart +++ b/lib/main/lockDetail/card/addICCard/addICCard_logic.dart @@ -77,7 +77,7 @@ class AddICCardLogic extends BaseGetXController{ useCountLimit:0xffff, operate:0, // 0:注册 1:修改 2:删除 3:删除全部 isAdmin:state.isAdministrator.value == '2' ? 1 : 0, - isForce:state.isCoerced.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, @@ -151,8 +151,6 @@ class AddICCardLogic extends BaseGetXController{ BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { if (deviceConnectionState == BluetoothConnectionState.connected){ cancelBlueConnetctToastTimer(); - // var publicKey = await Storage.getStringList(saveBluePublicKey); - // List publicKeyDataList = changeStringListToIntList(publicKey!); final List? signKey = await Storage.getStringList(saveBlueSignKey); final List signKeyDataList = changeStringListToIntList(signKey!); @@ -170,7 +168,7 @@ class AddICCardLogic extends BaseGetXController{ useCountLimit:0xffff, operate:0, // 0:注册 1:修改 2:删除 3:删除全部 isAdmin:state.isAdministrator.value == '2' ? 1 : 0, - isForce:state.isCoerced.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, diff --git a/lib/main/lockDetail/card/addICCard/addICCard_page.dart b/lib/main/lockDetail/card/addICCard/addICCard_page.dart index aa9f9df0..3e9014c3 100755 --- a/lib/main/lockDetail/card/addICCard/addICCard_page.dart +++ b/lib/main/lockDetail/card/addICCard/addICCard_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:star_lock/main/lockDetail/card/addICCard/addICCard_state.dart'; import '../../../../app_settings/app_colors.dart'; import '../../../../tools/appRouteObserver.dart'; @@ -18,8 +19,8 @@ class AddICCardPage extends StatefulWidget { } class _AddICCardPageState extends State with RouteAware { - final logic = Get.put(AddICCardLogic()); - final state = Get.find().state; + final AddICCardLogic logic = Get.put(AddICCardLogic()); + final AddICCardState state = Get.find().state; @override Widget build(BuildContext context) { @@ -31,7 +32,7 @@ class _AddICCardPageState extends State with RouteAware { backgroundColor: AppColors.mainColor, ), body: ListView( - children: [ + children: [ SizedBox(height: 200.h), Center( child: Image.asset( @@ -60,8 +61,8 @@ class _AddICCardPageState extends State with RouteAware { child: Center( child: Obx(() => Text( state.ifConnectScuess.value - ? "已连接到锁,请将卡靠近锁的读卡区".tr - : "尝试连接设备...".tr, + ? '已连接到锁,请将卡靠近锁的读卡区'.tr + : '尝试连接设备...'.tr, style: TextStyle(color: Colors.white, fontSize: 24.sp)))), ), ], @@ -71,7 +72,6 @@ class _AddICCardPageState extends State with RouteAware { @override void didChangeDependencies() { - // TODO: implement didChangeDependencies super.didChangeDependencies(); /// 路由订阅 @@ -80,7 +80,6 @@ class _AddICCardPageState extends State with RouteAware { @override void dispose() { - // TODO: implement dispose /// 取消路由订阅 AppRouteObserver().routeObserver.unsubscribe(this); super.dispose(); diff --git a/lib/main/lockDetail/card/addICCard/addICCard_state.dart b/lib/main/lockDetail/card/addICCard/addICCard_state.dart index 7129795f..8603e4ea 100755 --- a/lib/main/lockDetail/card/addICCard/addICCard_state.dart +++ b/lib/main/lockDetail/card/addICCard/addICCard_state.dart @@ -3,48 +3,48 @@ import 'package:get/get.dart'; import '../../../../tools/commonDataManage.dart'; -class AddICCardState{ - var ifConnectScuess = false.obs; - var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 - var ifAddState = false.obs;// 是否是添加状态,如果是添加状态,返回上级界面发送取消添加指令 - - var addFingerprintProcessNumber = 0.obs; - final lockId = 0.obs; - final endDate = "".obs; - final addType = "".obs; - final cardName = "".obs; - final cardNumber = "".obs; - final cardType = "".obs; - final isCoerced = "".obs; - final isAdministrator = "".obs; - final startDate = "".obs; - final weekDay = [].obs; - final fromType = 0.obs; - final effectiveDateTime = "".obs; // 生效时间 - final failureDateTime = "".obs; // 失效时间 - final selectType = "0".obs; // 0永久 1显示 2循环 +class AddICCardState{ // 0永久 1显示 2循环 AddICCardState() { Map map = Get.arguments; - lockId.value = map["lockId"]; - addType.value = map["addType"]; - cardName.value = map["cardName"]; - cardNumber.value = map["cardNumber"]; - cardType.value = map["cardType"]; - isCoerced.value = map["isCoerced"]; - isAdministrator.value = map["isAdministrator"]; - startDate.value = map["startDate"]; - weekDay.value = map["weekDay"]; - fromType.value = map["fromType"]; - effectiveDateTime.value = map["effectiveTime"]; - failureDateTime.value = map["failureTime"]; - selectType.value = map["selectType"]; + lockId.value = map['lockId']; + addType.value = map['addType']; + cardName.value = map['cardName']; + cardNumber.value = map['cardNumber']; + cardType.value = map['cardType']; + isCoerced.value = map['isCoerced']; + isAdministrator.value = map['isAdministrator']; + startDate.value = map['startDate']; + weekDay.value = map['weekDay']; + fromType.value = map['fromType']; + effectiveDateTime.value = map['effectiveTime']; + failureDateTime.value = map['failureTime']; + selectType.value = map['selectType']; //循环类型下,结束时间加一天 if (selectType.value == '2') { endDate.value = "${int.parse(map["endDate"]) + CommonDataManage().dayLatestTime}"; } else { - endDate.value = map["endDate"]; + endDate.value = map['endDate']; } } + RxBool ifConnectScuess = false.obs; + RxBool ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 + RxBool ifAddState = false.obs;// 是否是添加状态,如果是添加状态,返回上级界面发送取消添加指令 + + RxInt addFingerprintProcessNumber = 0.obs; + final RxInt lockId = 0.obs; + final RxString endDate = ''.obs; + final RxString addType = ''.obs; + final RxString cardName = ''.obs; + final RxString cardNumber = ''.obs; + final RxString cardType = ''.obs; + final RxString isCoerced = ''.obs; + final RxString isAdministrator = ''.obs; + final RxString startDate = ''.obs; + final RxList weekDay = [].obs; + final RxInt fromType = 0.obs; + final RxString effectiveDateTime = ''.obs; // 生效时间 + final RxString failureDateTime = ''.obs; // 失效时间 + final RxString selectType = '0'.obs; } diff --git a/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart b/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart index 47402368..9f6a85c7 100755 --- a/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart +++ b/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart @@ -4,6 +4,7 @@ import 'dart:async'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:get/get.dart'; import 'package:star_lock/blue/io_type.dart'; +import 'package:star_lock/login/login/entity/LoginEntity.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/eventBusEventManage.dart'; @@ -24,7 +25,7 @@ class CardDetailLogic extends BaseGetXController{ // 监听设备返回的数据 late StreamSubscription _replySubscription; void _initReplySubscription() { - _replySubscription = EventBusManager().eventBus!.on().listen((reply) async { + _replySubscription = EventBusManager().eventBus!.on().listen((Reply reply) async { // 添加卡片开始(重置锁里面所有卡) if((reply is SenderAddICCardWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) { _replyAddICCardBegin(reply); @@ -34,7 +35,7 @@ class CardDetailLogic extends BaseGetXController{ // 添加卡片开始(此处用作删除卡片) Future _replyAddICCardBegin(Reply reply) async { - int status = reply.data[2]; + final int status = reply.data[2]; switch(status){ case 0x00: @@ -49,17 +50,14 @@ class CardDetailLogic extends BaseGetXController{ break; case 0x06: //无权限 - var privateKey = await Storage.getStringList(saveBluePrivateKey); - List getPrivateKeyList = changeStringListToIntList(privateKey!); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); - var signKey = await Storage.getStringList(saveBlueSignKey); - List signKeyDataList = changeStringListToIntList(signKey!); + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); - // var publicKey = await Storage.getStringList(saveBluePublicKey); - // List publicKeyDataList = changeStringListToIntList(publicKey!); - - var token = reply.data.sublist(5, 9); - var saveStrList = changeIntListToStringList(token); + final List token = reply.data.sublist(5, 9); + final List saveStrList = changeIntListToStringList(token); Storage.setStringList(saveBlueToken, saveStrList); IoSenderManage.senderAddCardWithTimeCycleCoercionCommand( @@ -103,14 +101,14 @@ class CardDetailLogic extends BaseGetXController{ }); BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { if (deviceConnectionState == BluetoothConnectionState.connected){ - var signKey = await Storage.getStringList(saveBlueSignKey); - List signKeyDataList = changeStringListToIntList(signKey!); + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); - var privateKey = await Storage.getStringList(saveBluePrivateKey); - List getPrivateKeyList = changeStringListToIntList(privateKey!); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); - var token = await Storage.getStringList(saveBlueToken); - List getTokenList = changeStringListToIntList(token!); + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); IoSenderManage.senderAddCardWithTimeCycleCoercionCommand( keyID:state.keyId.value.toString(), @@ -144,39 +142,39 @@ class CardDetailLogic extends BaseGetXController{ } // 编辑iC卡 - void editICCardData() async{ - var entity = await ApiRepository.to.editICCardData( + Future editICCardData() async{ + final LoginEntity entity = await ApiRepository.to.editICCardData( cardId: state.keyId.value.toString(), lockId: state.fingerprintItemData.value.lockId.toString(), weekDay: state.weekDay.value, startDate: state.startDate.value, endDate: state.endDate.value, - isCoerced: state.isStressCard.value ? "2" : "1", + isCoerced: state.isStressCard.value ? '1' : '2', cardName: state.changeNameController.text, - changeType: "1", + changeType: '1', startTime: int.parse(state.starTime.value), endTime: int.parse(state.endTime.value), cardType:state.keyType.value, cardRight: state.isAdministrator.value ? 1 : 0, ); if(entity.errorCode!.codeIsSuccessful){ - showToast("修改成功".tr, something: (){ + showToast('修改成功'.tr, something: (){ eventBus.fire(OtherTypeRefreshListEvent()); }); } } // 删除IC卡 - void deletICCardData() async{ - var entity = await ApiRepository.to.deletIcCardData( + Future deletICCardData() async{ + final LoginEntity entity = await ApiRepository.to.deletIcCardData( cardId: state.fingerprintItemData.value.cardId.toString(), lockId: state.fingerprintItemData.value.lockId.toString(), - type: "0", - deleteType:"1" + type: '0', + deleteType:'1' ); if(entity.errorCode!.codeIsSuccessful){ - showToast("删除成功".tr, something: (){ - Get.back(result: "addScuess"); + showToast('删除成功'.tr, something: (){ + Get.back(result: 'addScuess'); }); } } @@ -184,33 +182,24 @@ class CardDetailLogic extends BaseGetXController{ String getKeyTypeShowDateTime(){ String useDateStr = ''; if(state.keyType.value == 1){ - useDateStr = "永久".tr; + useDateStr = '永久'.tr; }else if(state.keyType.value == 2){ - useDateStr = "${DateTool().dateToYMDHNString(state.startDate.value)}\n${DateTool().dateToYMDHNString(state.endDate.value)}"; + useDateStr = '${DateTool().dateToYMDHNString(state.startDate.value)}\n${DateTool().dateToYMDHNString(state.endDate.value)}'; } else if(state.keyType.value == 4){ - useDateStr = "${DateTool().dateToYMDString(state.startDate.value)}\n${DateTool().dateToYMDString(state.endDate.value)}"; + useDateStr = '${DateTool().dateToYMDString(state.startDate.value)}\n${DateTool().dateToYMDString(state.endDate.value)}'; } return useDateStr; } @override void onReady() { - // TODO: implement onReady super.onReady(); _initReplySubscription(); } - @override - void onInit() { - // TODO: implement onInit - super.onInit(); - - } - @override void onClose() { - // TODO: implement onClose super.onClose(); _replySubscription.cancel(); diff --git a/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart b/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart index d669b4b8..9f6ddb89 100755 --- a/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart +++ b/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart @@ -1,16 +1,16 @@ + import 'package:flutter/cupertino.dart'; 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/card/cardDetail/cardDetail_state.dart'; import '../../../../appRouters.dart'; import '../../../../app_settings/app_colors.dart'; -import '../../../../blue/blue_manage.dart'; import '../../../../tools/appRouteObserver.dart'; import '../../../../tools/commonItem.dart'; import '../../../../tools/dateTool.dart'; -import '../../../../tools/showTFView.dart'; import '../../../../tools/showTipView.dart'; import '../../../../tools/submitBtn.dart'; import '../../../../tools/titleAppBar.dart'; @@ -25,20 +25,20 @@ class CardDetailPage extends StatefulWidget { } class _CardDetailPageState extends State with RouteAware { - final logic = Get.put(CardDetailLogic()); - final state = Get.find().state; + final CardDetailLogic logic = Get.put(CardDetailLogic()); + final CardDetailState state = Get.find().state; @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.mainBackgroundColor, appBar: TitleAppBar( - barTitle: "卡详情".tr, + barTitle: '卡详情'.tr, haveBack: true, backgroundColor: AppColors.mainColor, ), body: ListView( - children: [ + children: [ Obx(() => CommonItem( leftTitel: "${TranslationLoader.lanKeys!.card!.tr}${TranslationLoader.lanKeys!.number!.tr}", @@ -54,9 +54,9 @@ class _CardDetailPageState extends State with RouteAware { ShowTipView().showTFViewAlertDialog( state.changeNameController, "${TranslationLoader.lanKeys!.amend!.tr}${TranslationLoader.lanKeys!.name!.tr}", - "", () { + '', () { if (state.changeNameController.text.isEmpty) { - logic.showToast("请输入姓名".tr); + logic.showToast('请输入姓名'.tr); return; } Get.back(); @@ -79,30 +79,30 @@ class _CardDetailPageState extends State with RouteAware { action: () async { if(state.keyType.value == 2 || state.keyType.value == 1){ // 限时 - var data = await Get.toNamed(Routers.otherTypeKeyChangeDatePage, arguments: { - "pushType": 0, - "fingerprintItemData": state.fingerprintItemData.value, + var data = await Get.toNamed(Routers.otherTypeKeyChangeDatePage, arguments: { + 'pushType': 0, + 'fingerprintItemData': state.fingerprintItemData.value, }); if(data != null) { setState(() { - state.startDate.value = data["beginTimeTimestamp"]; - state.endDate.value = data["endTimeTimestamp"]; + state.startDate.value = data['beginTimeTimestamp']; + state.endDate.value = data['endTimeTimestamp']; state.keyType.value = 2; }); } }else if(state.keyType.value == 4){ // 循环 - var data = await Get.toNamed(Routers.otherTypeKeyChangeValidityDatePage, arguments: { - "pushType": 0, - "fingerprintItemData": state.fingerprintItemData.value, + var data = await Get.toNamed(Routers.otherTypeKeyChangeValidityDatePage, arguments: { + 'pushType': 0, + 'fingerprintItemData': state.fingerprintItemData.value, }); if(data != null) { setState(() { - state.startDate.value = data["starDate"]; - state.endDate.value = data["endDate"]; - state.starTime.value = data["starTime"]; - state.endTime.value = data["endTime"]; - state.weekDay.value = data["weekDay"]; + state.startDate.value = data['starDate']; + state.endDate.value = data['endDate']; + state.starTime.value = data['starTime']; + state.endTime.value = data['endTime']; + state.weekDay.value = data['weekDay']; }); } @@ -116,38 +116,38 @@ class _CardDetailPageState extends State with RouteAware { isHaveDirection: true, isHaveLine: true, action: () async { - var data = await Get.toNamed(Routers.otherTypeKeyChangeValidityDatePage, arguments: { - "pushType": 0, - "fingerprintItemData": state.fingerprintItemData.value, + var data = await Get.toNamed(Routers.otherTypeKeyChangeValidityDatePage, arguments: { + 'pushType': 0, + 'fingerprintItemData': state.fingerprintItemData.value, }); if(data != null) { setState(() { - state.startDate.value = data["starDate"]; - state.endDate.value = data["endDate"]; - state.starTime.value = data["starTime"]; - state.endTime.value = data["endTime"]; - state.weekDay.value = data["weekDay"]; + state.startDate.value = data['starDate']; + state.endDate.value = data['endDate']; + state.starTime.value = data['starTime']; + state.endTime.value = data['endTime']; + state.weekDay.value = data['weekDay']; }); } })))), Obx(() => Visibility( visible: state.keyType.value == 4 ? true : false, child: Obx(() => CommonItem( - leftTitel: "有效时间".tr, - rightTitle: "${DateTool().dateToHNString(state.starTime.value)}-${DateTool().dateToHNString(state.endTime.value)}", + leftTitel: '有效时间'.tr, + rightTitle: '${DateTool().dateToHNString(state.starTime.value)}-${DateTool().dateToHNString(state.endTime.value)}', isHaveDirection: true, action: () async { - var data = await Get.toNamed(Routers.otherTypeKeyChangeValidityDatePage, arguments: { - "pushType": 0, - "fingerprintItemData": state.fingerprintItemData.value, + var data = await Get.toNamed(Routers.otherTypeKeyChangeValidityDatePage, arguments: { + 'pushType': 0, + 'fingerprintItemData': state.fingerprintItemData.value, }); if(data != null) { setState(() { - state.startDate.value = data["starDate"]; - state.endDate.value = data["endDate"]; - state.starTime.value = data["starTime"]; - state.endTime.value = data["endTime"]; - state.weekDay.value = data["validityValue"]; + state.startDate.value = data['starDate']; + state.endDate.value = data['endDate']; + state.starTime.value = data['starTime']; + state.endTime.value = data['endTime']; + state.weekDay.value = data['validityValue']; }); } })))), @@ -165,15 +165,15 @@ class _CardDetailPageState extends State with RouteAware { SizedBox(height: 10.h), Obx(() => CommonItem( leftTitel: TranslationLoader.lanKeys!.stressCard!.tr, - rightTitle: "", + rightTitle: '', isTipsImg: false, isHaveLine: true, isHaveRightWidget: true, rightWidget: SizedBox( width: 60.w, height: 50.h, child: _isStressFingerprint()))), Obx(() => CommonItem( - leftTitel: "是否为管理员".tr, - rightTitle: "", + leftTitel: '是否为管理员'.tr, + rightTitle: '', isTipsImg: false, isHaveRightWidget: true, rightWidget: @@ -181,10 +181,10 @@ class _CardDetailPageState extends State with RouteAware { Container(height: 10.h), CommonItem( leftTitel: TranslationLoader.lanKeys!.operatingRecord!.tr, - rightTitle: "", + rightTitle: '', isHaveDirection: true, action: () { - Get.toNamed(Routers.lockOperatingRecordPage, arguments: { + Get.toNamed(Routers.lockOperatingRecordPage, arguments: { 'type': 2, 'id': state.fingerprintItemData.value.cardId.toString(), 'recordName': state.fingerprintItemData.value.cardName @@ -200,7 +200,7 @@ class _CardDetailPageState extends State with RouteAware { margin: EdgeInsets.only(left: 30.w, right: 30.w, top: 30.w, bottom: 30.w), padding: EdgeInsets.only(top: 25.w, bottom: 25.w), onClick: () { - ShowTipView().showIosTipWithContentDialog("确定要删除吗?".tr, () async { + ShowTipView().showIosTipWithContentDialog('确定要删除吗?'.tr, () async { state.isDeletCard.value = true; logic.senderAddICCard(); }); @@ -217,7 +217,7 @@ class _CardDetailPageState extends State with RouteAware { trackColor: CupertinoColors.systemGrey5, thumbColor: CupertinoColors.white, value: state.isStressCard.value, - onChanged: (value) { + onChanged: (bool value) { setState(() { state.isStressCard.value = value; state.isDeletCard.value = false; @@ -234,7 +234,7 @@ class _CardDetailPageState extends State with RouteAware { trackColor: CupertinoColors.systemGrey5, thumbColor: CupertinoColors.white, value: state.isAdministrator.value, - onChanged: (value) { + onChanged: (bool value) { // state.isAdministrator.value = value; // state.isDeletCard.value = false; // logic.senderAddICCard(); @@ -244,16 +244,13 @@ class _CardDetailPageState extends State with RouteAware { @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(); @@ -271,7 +268,9 @@ class _CardDetailPageState 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; state.sureBtnState.value = 0; } @@ -288,7 +287,9 @@ class _CardDetailPageState extends State with RouteAware { void didPushNext() { super.didPushNext(); logic.cancelBlueConnetctToastTimer(); - if (EasyLoading.isShow) EasyLoading.dismiss(animation: true); + if (EasyLoading.isShow) { + EasyLoading.dismiss(animation: true); + } state.ifCurrentScreen.value = false; state.sureBtnState.value = 0; } diff --git a/lib/main/lockDetail/card/cardDetail/cardDetail_state.dart b/lib/main/lockDetail/card/cardDetail/cardDetail_state.dart index 279e92e2..d2d64fc7 100755 --- a/lib/main/lockDetail/card/cardDetail/cardDetail_state.dart +++ b/lib/main/lockDetail/card/cardDetail/cardDetail_state.dart @@ -4,32 +4,10 @@ import 'package:get/get.dart'; import '../../fingerprint/fingerprintList/fingerprintListData_entity.dart'; class CardDetailState { - final fingerprintItemData = FingerprintItemData().obs; - - final TextEditingController changeNameController = TextEditingController(); - - var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 - var sureBtnState = 0.obs; // 0普通状态(可用) 1连接中(不可用) - var isDeletCard = true.obs; // 是否删除卡 - var isStressCard = false.obs; // 是否胁迫 - var isAdministrator = false.obs; // 是否为管理员 - - final typeNumber = "".obs; // 指纹号 - final typeName = "".obs; // 指纹名字 - var startDate = "".obs; // 开始时间 - var endDate = "".obs; // 结束时间 - var starTime = "".obs; // 生效时间 - var endTime = "".obs; // 失效时间 - final keyType = 0.obs; // 永久:1;限时2,单次3,循环:4 - var weekDay = [].obs; // 有效日 - var adder = "".obs; // 添加者 - var addTime = 0.obs; // 添加时间 - var keyId = 0.obs; // 卡id - CardDetailState() { Map map = Get.arguments; - if ((map["fingerprintItemData"] != null)) { - fingerprintItemData.value = map["fingerprintItemData"]; + if (map['fingerprintItemData'] != null) { + fingerprintItemData.value = map['fingerprintItemData']; keyId.value = fingerprintItemData.value.cardId!; typeNumber.value = fingerprintItemData.value.cardNumber!; typeName.value = fingerprintItemData.value.cardName!; @@ -41,11 +19,30 @@ class CardDetailState { keyType.value = fingerprintItemData.value.cardType!; adder.value = fingerprintItemData.value.senderUsername!; addTime.value = fingerprintItemData.value.createDate!; - isStressCard.value = - fingerprintItemData.value.isCoerced! == 2 ? true : false; + isStressCard.value = fingerprintItemData.value.isCoerced! == 1; weekDay.value = fingerprintItemData.value.weekDay!; - isAdministrator.value = - fingerprintItemData.value.cardRight! == 1 ? true : false; + isAdministrator.value = fingerprintItemData.value.cardRight! == 1; } } + final Rx fingerprintItemData = FingerprintItemData().obs; + + final TextEditingController changeNameController = TextEditingController(); + + RxBool ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 + RxInt sureBtnState = 0.obs; // 0普通状态(可用) 1连接中(不可用) + RxBool isDeletCard = true.obs; // 是否删除卡 + RxBool isStressCard = false.obs; // 是否胁迫 + RxBool isAdministrator = false.obs; // 是否为管理员 + + final RxString typeNumber = ''.obs; // 指纹号 + final RxString typeName = ''.obs; // 指纹名字 + RxString startDate = ''.obs; // 开始时间 + RxString endDate = ''.obs; // 结束时间 + RxString starTime = ''.obs; // 生效时间 + RxString endTime = ''.obs; // 失效时间 + final RxInt keyType = 0.obs; // 永久:1;限时2,单次3,循环:4 + RxList weekDay = [].obs; // 有效日 + RxString adder = ''.obs; // 添加者 + RxInt addTime = 0.obs; // 添加时间 + RxInt keyId = 0.obs; // 卡id } diff --git a/lib/main/lockDetail/card/cardList/cardList_logic.dart b/lib/main/lockDetail/card/cardList/cardList_logic.dart index f3432d5e..0fa9ccfc 100755 --- a/lib/main/lockDetail/card/cardList/cardList_logic.dart +++ b/lib/main/lockDetail/card/cardList/cardList_logic.dart @@ -4,6 +4,7 @@ import 'dart:async'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:get/get.dart'; import 'package:star_lock/blue/io_type.dart'; +import 'package:star_lock/login/login/entity/LoginEntity.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/dateTool.dart'; import '../../../../blue/blue_manage.dart'; @@ -26,26 +27,18 @@ class CardListLogic extends BaseGetXController { // 获取解析后的数据 late StreamSubscription _replySubscription; void _initReplySubscription() { - _replySubscription = EventBusManager().eventBus!.on().listen((reply) { + _replySubscription = EventBusManager().eventBus!.on().listen((Reply reply) { // 添加卡片开始(重置锁里面所有卡) if((reply is SenderAddICCardWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) { _replyAddICCardBegin(reply); } - - // if(reply is SenderCheckingCardStatusReply) { - // _replyReferEventRecordNumber(reply); - // } - // - // if(reply is SenderCheckingUserInfoCountReply){ - // _replyCheckingUserInfoCount(reply); - // } }); } // 添加卡片开始(此处用作删除卡片) Future _replyAddICCardBegin(Reply reply) async { - int status = reply.data[2]; + final int status = reply.data[2]; switch(status){ case 0x00: @@ -55,17 +48,14 @@ class CardListLogic extends BaseGetXController { break; case 0x06: //无权限 - var privateKey = await Storage.getStringList(saveBluePrivateKey); - List getPrivateKeyList = changeStringListToIntList(privateKey!); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); - var signKey = await Storage.getStringList(saveBlueSignKey); - List signKeyDataList = changeStringListToIntList(signKey!); + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); - // var publicKey = await Storage.getStringList(saveBluePublicKey); - // List publicKeyDataList = changeStringListToIntList(publicKey!); - - var token = reply.data.sublist(5, 9); - var saveStrList = changeIntListToStringList(token); + final List token = reply.data.sublist(5, 9); + final List saveStrList = changeIntListToStringList(token); Storage.setStringList(saveBlueToken, saveStrList); IoSenderManage.senderAddCardWithTimeCycleCoercionCommand( @@ -80,8 +70,8 @@ class CardListLogic extends BaseGetXController { weekRound:0, // 周循环 startDate: 0x11223344, endDate: 0x11223344, - startTime:"0", - endTime:"0", + startTime:'0', + endTime:'0', needAuthor:1, signKey:signKeyDataList, privateKey:getPrivateKeyList, @@ -95,135 +85,6 @@ class CardListLogic extends BaseGetXController { } } - // // 获取卡片状态 - // Future _replyReferEventRecordNumber(Reply reply) async { - // int status = reply.data[2]; - // switch(status){ - // case 0x00: - // //成功 - // // _getLockStatus(); - // break; - // case 0x06: - // //无权限 - // break; - // default: - // //失败 - // break; - // } - // } - // - // // 查询用户、指纹、密码、卡片数量(用于判断是否同步) - // Future _replyCheckingUserInfoCount(Reply reply) async { - // int status = reply.data[2]; - // - // // 用户数量 - // int userNum = reply.data[5]; - // - // // 指纹数量 - // int fingerNum = reply.data[6]; - // - // // 密码数量 - // int pwdNum = reply.data[7]; - // - // // 卡片数量 - // int cardNum = reply.data[8]; - // - // // 记录数量 - // int logsNum = reply.data[9]; - // - // // 版本 - // int verNo = reply.data[10]; - // - // // 最大管理员指纹数量 - // int maxAdminFingerNum = reply.data[11]; - // - // // 最大用户指纹数量 - // int maxUserFingerNum = reply.data[12]; - // - // // 最大管理员密码数量 - // int maxAdminPassNum = reply.data[13]; - // - // // 最大用户密码数量 - // int maxUserPassNum = reply.data[14]; - // - // // 最大管理员卡片数量 - // int maxAdminCardNum = reply.data[15]; - // - // // 最大用户卡片数量 - // int maxUserCardNum = reply.data[16]; - // - // // 序列号 - // var serialNo = reply.data.sublist(17, 21); - // - // switch(status){ - // case 0x00: - // //成功 - // // _getLockStatus(); - // break; - // case 0x06: - // //需要鉴权 - // break; - // default: - // //失败 - // break; - // } - // } - - // // 查询卡片状态 - // Future senderCheckingCardStatus() async { - // BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState state) async { - // if (state == BluetoothConnectionState.connected) { - // var privateKey = await Storage.getStringList(saveBluePrivateKey); - // List getPrivateKeyList = changeStringListToIntList(privateKey!); - // - // var token = await Storage.getStringList(saveBlueToken); - // List getTokenList = changeStringListToIntList(token!); - // - // var publicKey = await Storage.getStringList(saveBluePublicKey); - // List getPublicKeyList = changeStringListToIntList(publicKey!); - // - // IoSenderManage.senderCheckingCardStatusCommand( - // keyID:BlueManage().connectDeviceName, - // userID:await Storage.getUid(), - // role:0xff, - // cardCount:20, - // cardNo:1, - // token:getTokenList, - // needAuthor:1, - // publicKey:getPublicKeyList, - // privateKey:getPrivateKeyList, - // ); - // } - // }); - // } - // - // // 查询用户、指纹、密码、卡片数量(用于判断是否同步) - // Future senderCheckingUserInfoCount() async { - // BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState state) async { - // if (state == BluetoothConnectionState.connected) { - // var privateKey = await Storage.getStringList(saveBluePrivateKey); - // List getPrivateKeyList = changeStringListToIntList(privateKey!); - // - // var token = await Storage.getStringList(saveBlueToken); - // List getTokenList = changeStringListToIntList(token!); - // - // var publicKey = await Storage.getStringList(saveBluePublicKey); - // 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 senderAddICCard() async { showEasyLoading(); @@ -232,17 +93,14 @@ class CardListLogic extends BaseGetXController { }); BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { if (deviceConnectionState == BluetoothConnectionState.connected){ - // var publicKey = await Storage.getStringList(saveBluePublicKey); - // List publicKeyDataList = changeStringListToIntList(publicKey!); + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); - var signKey = await Storage.getStringList(saveBlueSignKey); - List signKeyDataList = changeStringListToIntList(signKey!); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); - var privateKey = await Storage.getStringList(saveBluePrivateKey); - List getPrivateKeyList = changeStringListToIntList(privateKey!); - - var token = await Storage.getStringList(saveBlueToken); - List getTokenList = changeStringListToIntList(token!); + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); IoSenderManage.senderAddCardWithTimeCycleCoercionCommand( keyID:state.deletKeyID, @@ -256,8 +114,8 @@ class CardListLogic extends BaseGetXController { weekRound:0, // 周循环 startDate: 0x11223344, endDate: 0x11223344, - startTime:"0", - endTime:"0", + startTime:'0', + endTime:'0', needAuthor:1, signKey:signKeyDataList, privateKey:getPrivateKeyList, @@ -276,7 +134,7 @@ class CardListLogic extends BaseGetXController { // 获取IC卡列表 Future getICCardListData() async{ - FingerprintListDataEntity entity = await ApiRepository.to.getICCardListData( + final FingerprintListDataEntity entity = await ApiRepository.to.getICCardListData( lockId: state.lockId.value.toString(), pageNo: pageNo.toString(), pageSize: pageSize, @@ -297,27 +155,27 @@ class CardListLogic extends BaseGetXController { } // 删除所有IC卡 - void deletICCardData() async{ - var cardId = ""; - var type = "1"; + Future deletICCardData() async{ + String cardId = ''; + String type = '1'; if(state.isDeletAll == false){ cardId = state.deletKeyID; - type = "0"; + type = '0'; } - var entity = await ApiRepository.to.deletIcCardData( + final LoginEntity entity = await ApiRepository.to.deletIcCardData( cardId: cardId, lockId: state.lockId.value.toString(), type: type, - deleteType:"1" + deleteType:'1' ); if(entity.errorCode!.codeIsSuccessful){ if(state.isDeletAll == false){ - showToast("删除成功".tr, something: (){ + showToast('删除成功'.tr, something: (){ pageNo = 1; getICCardListData(); }); }else{ - showToast("重置成功".tr, something: (){ + showToast('重置成功'.tr, something: (){ pageNo = 1; getICCardListData(); }); @@ -328,44 +186,43 @@ class CardListLogic extends BaseGetXController { // 监听修改完详情之后刷新列表 late StreamSubscription _teamEvent; void _initRefreshAction() { - _teamEvent = eventBus.on().listen((event) { + _teamEvent = eventBus.on().listen((OtherTypeRefreshListEvent event) { pageNo = 1; getICCardListData(); }); } String getKeyType(FingerprintItemData fingerprintItemData){ - var keyTypeStr = "";// + String keyTypeStr = '';// if(fingerprintItemData.cardStatus == 1){ if(fingerprintItemData.startDate! > DateTime.now().millisecondsSinceEpoch){ - keyTypeStr = "未生效".tr; + keyTypeStr = '未生效'.tr; } }else if(fingerprintItemData.cardStatus == 2){ - keyTypeStr = "已失效".tr; + keyTypeStr = '已失效'.tr; } return keyTypeStr; } String getKeyDateType(FingerprintItemData fingerprintItemData){ - var keyDateTypeStr = "";// 永久:1;限时2,单次3,循环:4 + String keyDateTypeStr = '';// 永久:1;限时2,单次3,循环:4 if(fingerprintItemData.cardType! == 1){ - keyDateTypeStr = "${DateTool().dateToYMDHNString(fingerprintItemData.createDate.toString())} 永久"; + keyDateTypeStr = '${DateTool().dateToYMDHNString(fingerprintItemData.createDate.toString())} 永久'; }else if(fingerprintItemData.cardType! == 2){ - keyDateTypeStr = "${DateTool().dateToYMDHNString(fingerprintItemData.startDate.toString())} - ${DateTool().dateToYMDHNString(fingerprintItemData.endDate.toString())} 限时"; + keyDateTypeStr = '${DateTool().dateToYMDHNString(fingerprintItemData.startDate.toString())} - ${DateTool().dateToYMDHNString(fingerprintItemData.endDate.toString())} 限时'; }else if(fingerprintItemData.cardType! == 4){ - keyDateTypeStr = "${DateTool().dateToYMDString(fingerprintItemData.startDate.toString())}-${DateTool().dateToYMDString(fingerprintItemData.endDate.toString())} 循环"; + keyDateTypeStr = '${DateTool().dateToYMDString(fingerprintItemData.startDate.toString())}-${DateTool().dateToYMDString(fingerprintItemData.endDate.toString())} 循环'; } return keyDateTypeStr; } @override Future onReady() async { - // TODO: implement onReady super.onReady(); // 获取是否是演示模式 演示模式不获取接口 - var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); + final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if(isDemoMode == false){ _initReplySubscription(); @@ -375,16 +232,14 @@ class CardListLogic extends BaseGetXController { @override Future onInit() async { - // TODO: implement onInit super.onInit(); } @override Future onClose() async { - // TODO: implement onClose super.onClose(); - var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); + final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if(isDemoMode == false) { _replySubscription.cancel(); _teamEvent.cancel(); diff --git a/lib/main/lockDetail/card/cardList/cardList_page.dart b/lib/main/lockDetail/card/cardList/cardList_page.dart index ae1d14c3..f9d195b2 100755 --- a/lib/main/lockDetail/card/cardList/cardList_page.dart +++ b/lib/main/lockDetail/card/cardList/cardList_page.dart @@ -4,10 +4,10 @@ import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:get/get.dart'; +import 'package:star_lock/main/lockDetail/card/cardList/cardList_state.dart'; import '../../../../appRouters.dart'; import '../../../../app_settings/app_colors.dart'; -import '../../../../blue/blue_manage.dart'; import '../../../../tools/EasyRefreshTool.dart'; import '../../../../tools/appRouteObserver.dart'; import '../../../../tools/keySearchWidget.dart'; @@ -28,14 +28,16 @@ class CardListPage extends StatefulWidget { } class _CardListPageState extends State with RouteAware { - final logic = Get.put(CardListLogic()); - final state = Get.find().state; + final CardListLogic logic = Get.put(CardListLogic()); + final CardListState state = Get.find().state; Future getHttpData() async { - var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); + final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { logic.getICCardListData().then((FingerprintListDataEntity value){ - if(mounted) setState(() {}); + if(mounted) { + setState(() {}); + } }); } } @@ -56,24 +58,24 @@ class _CardListPageState extends State with RouteAware { barTitle: TranslationLoader.lanKeys!.card!.tr, haveBack: true, backgroundColor: AppColors.mainColor, - actionsList: [ + actionsList: [ TextButton( child: Text( TranslationLoader.lanKeys!.reset!.tr, style: TextStyle(color: Colors.white, fontSize: 24.sp), ), onPressed: () async { - var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); + final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { - ShowTipView().showIosTipWithContentDialog("重置后,该锁的卡都将被删除哦,确认要重置吗?".tr, () async { + ShowTipView().showIosTipWithContentDialog('重置后,该锁的卡都将被删除哦,确认要重置吗?'.tr, () async { state.isDeletAll = true; - state.deletKeyID = "0"; + state.deletKeyID = '0'; state.deletCardNo = 0; logic.senderAddICCard(); }); // showDeletAlertDialog(context); } else { - logic.showToast("演示模式".tr); + logic.showToast('演示模式'.tr); } }, ), @@ -88,7 +90,7 @@ class _CardListPageState extends State with RouteAware { getHttpData(); }, child: Column( - children: [ + children: [ KeySearchWidget( editingController: state.searchController, onSubmittedAction: () { @@ -101,9 +103,9 @@ class _CardListPageState extends State with RouteAware { AddBottomWhiteBtn( btnName: '${TranslationLoader.lanKeys!.add!.tr}${TranslationLoader.lanKeys!.card!.tr}', onClick: () async { - var data = await Get.toNamed(Routers.addCardPage, arguments: { - "lockId": state.lockId.value, - "fromType": 1 // 1从添加钥匙列表进入 2从考勤添加员工入口进入 + final data = await Get.toNamed(Routers.addCardPage, arguments: { + 'lockId': state.lockId.value, + 'fromType': 1 // 1从添加钥匙列表进入 2从考勤添加员工入口进入 }); if (data != null) { logic.pageNo = 1; @@ -125,17 +127,17 @@ class _CardListPageState extends State with RouteAware { ? SlidableAutoCloseBehavior( child: ListView.separated( itemCount: state.fingerprintItemListData.value.length, - itemBuilder: (c, index) { - FingerprintItemData fingerprintItemData = state.fingerprintItemListData.value[index]; + itemBuilder: (BuildContext c, int index) { + final FingerprintItemData fingerprintItemData = state.fingerprintItemListData.value[index]; return Slidable( key:ValueKey(fingerprintItemData.fingerprintId), endActionPane: ActionPane( extentRatio: 0.2, motion: const ScrollMotion(), - children: [ + children: [ SlidableAction( onPressed: (BuildContext context){ - ShowTipView().showIosTipWithContentDialog("确定要删除吗?".tr, () async { + ShowTipView().showIosTipWithContentDialog('确定要删除吗?'.tr, () async { state.isDeletAll = false; state.deletKeyID = fingerprintItemData.cardId.toString(); state.deletCardNo = int.parse(fingerprintItemData.cardNumber!); @@ -154,9 +156,9 @@ class _CardListPageState extends State with RouteAware { fingerprintItemData.cardName!, logic.getKeyType(fingerprintItemData), logic.getKeyDateType(fingerprintItemData), () async { - var data = await Get.toNamed( - Routers.cardDetailPage, arguments: { - "fingerprintItemData": fingerprintItemData, + final data = await Get.toNamed( + Routers.cardDetailPage, arguments: { + 'fingerprintItemData': fingerprintItemData, }); if (data != null) { logic.pageNo = 1; @@ -183,21 +185,21 @@ class _CardListPageState extends State with RouteAware { // margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.w), color: Colors.white, child: Row( - children: [ + children: [ SizedBox(width: 30.w), Image.asset(lockTypeIcon, width: 60.w, height: 60.w), SizedBox(width: 20.w), Expanded( child: Column( mainAxisAlignment: MainAxisAlignment.center, - children: [ + children: [ Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ + children: [ SizedBox( width: 1.sw - 110.w - 100.w, child: Row( - children: [ + children: [ Flexible( child: Text( lockTypeTitle, @@ -218,7 +220,7 @@ class _CardListPageState extends State with RouteAware { SizedBox(height: 5.h), Row( mainAxisAlignment: MainAxisAlignment.start, - children: [ + children: [ Flexible( child: Text(showTime, maxLines: 1, @@ -240,65 +242,8 @@ class _CardListPageState extends State with RouteAware { ); } - // void showIosTipViewDialog(FingerprintItemData fingerprintItemData) { - // showDialog( - // context: Get.context!, - // builder: (BuildContext context) { - // return ShowIosTipView( - // title: "提示", - // tipTitle: "确定要删除吗?", - // sureClick: () async { - // Get.back(); - // state.isDeletCardData = true; - // state.isDeletAll = false; - // state.deletUserID = (await Storage.getUid())!; - // state.deletKeyID = fingerprintItemData.cardId.toString(); - // state.deletCardNo = int.parse(fingerprintItemData.cardNumber!); - // logic.senderAddICCard(); - // }, - // cancelClick: () { - // Get.back(); - // }, - // ); - // }, - // ); - // } - - // void showDeletAlertDialog(BuildContext context) { - // showCupertinoDialog( - // context: context, - // builder: (context) { - // return CupertinoAlertDialog( - // title: const Text("提示"), - // content: const Text('重置后,该锁的卡都将被删除哦,确认要重置吗?'), - // actions: [ - // CupertinoDialogAction( - // child: Text(TranslationLoader.lanKeys!.cancel!.tr), - // onPressed: () { - // Navigator.pop(context); - // }, - // ), - // CupertinoDialogAction( - // child: Text(TranslationLoader.lanKeys!.sure!.tr), - // onPressed: () { - // Navigator.pop(context); - // state.isDeletCardData = true; - // state.isDeletAll = true; - // state.deletKeyID = "1"; - // state.deletUserID = "DeleteAll!@#"; - // state.deletCardNo = 255; - // logic.senderAddICCard(); - // }, - // ), - // ], - // ); - // }, - // ); - // } - @override void didChangeDependencies() { - // TODO: implement didChangeDependencies super.didChangeDependencies(); /// 路由订阅 @@ -307,7 +252,6 @@ class _CardListPageState extends State with RouteAware { @override void dispose() { - // TODO: implement dispose /// 取消路由订阅 AppRouteObserver().routeObserver.unsubscribe(this); super.dispose(); @@ -325,7 +269,9 @@ class _CardListPageState 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; } @@ -341,7 +287,9 @@ class _CardListPageState extends State with RouteAware { 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/main/lockDetail/card/cardList/cardList_state.dart b/lib/main/lockDetail/card/cardList/cardList_state.dart index f4227f55..63505d79 100755 --- a/lib/main/lockDetail/card/cardList/cardList_state.dart +++ b/lib/main/lockDetail/card/cardList/cardList_state.dart @@ -4,21 +4,20 @@ import 'package:get/get.dart'; import '../../fingerprint/fingerprintList/fingerprintListData_entity.dart'; class CardListState { - final lockId = 0.obs; - - // 因为删除跟添加指纹用的同一个协议 所以这里用做判断 - var isDeletAll = false; - var deletKeyID = "0"; - var deletCardNo = 0; - - final fingerprintItemListData = [].obs; - // var fingerprintDeletItem = FingerprintItemData(); - final TextEditingController searchController = TextEditingController(); - - var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 CardListState() { Map map = Get.arguments; - lockId.value = map["lockId"]; + lockId.value = map['lockId']; } + final RxInt lockId = 0.obs; + + // 因为删除跟添加指纹用的同一个协议 所以这里用做判断 + bool isDeletAll = false; + String deletKeyID = '0'; + int deletCardNo = 0; + + final RxList fingerprintItemListData = [].obs; + final TextEditingController searchController = TextEditingController(); + + RxBool ifCurrentScreen = true.obs;// 是否是当前界面,用于判断是否需要针对当前界面进行展示 } \ No newline at end of file diff --git a/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_logic.dart b/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_logic.dart index be7f7379..3e3f7e85 100755 --- a/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_logic.dart +++ b/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_logic.dart @@ -14,6 +14,7 @@ import '../../../../blue/io_reply.dart'; import '../../../../blue/io_tool/io_tool.dart'; import '../../../../blue/io_tool/manager_event_bus.dart'; import '../../../../blue/sender_manage.dart'; +import '../../../../mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart'; import '../../../../tools/eventBusEventManage.dart'; import '../../../../tools/storage.dart'; import '../passwordKey_perpetual/passwordKeyEntity.dart'; @@ -24,16 +25,13 @@ class PasswordKeyListLogic extends BaseGetXController { // 获取解析后的数据 late StreamSubscription _replySubscription; void _initReplySubscription() { - _replySubscription = - EventBusManager().eventBus!.on().listen((reply) { + _replySubscription = EventBusManager().eventBus!.on().listen((Reply reply) { // 添加卡片开始(重置锁里面所有卡) - if ((reply is SenderCustomPasswordsReply) && - (state.ifCurrentScreen.value == true)) { + if ((reply is SenderCustomPasswordsReply) && (state.ifCurrentScreen.value == true)) { _replyAddPassword(reply); } - if ((reply is SenderResetPasswordsReply) && - (state.ifCurrentScreen.value == true)) { + if ((reply is SenderResetPasswordsReply) && (state.ifCurrentScreen.value == true)) { _replyResetPassword(reply); } }); @@ -41,7 +39,7 @@ class PasswordKeyListLogic extends BaseGetXController { // 添加密码开始(此处用作删除卡片) Future _replyAddPassword(Reply reply) async { - int status = reply.data[2]; + final int status = reply.data[2]; switch (status) { case 0x00: @@ -51,18 +49,18 @@ class PasswordKeyListLogic extends BaseGetXController { break; case 0x06: //无权限 - var privateKey = await Storage.getStringList(saveBluePrivateKey); - List getPrivateKeyList = changeStringListToIntList(privateKey!); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); - var signKey = await Storage.getStringList(saveBlueSignKey); - List signKeyDataList = changeStringListToIntList(signKey!); + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); - var token = reply.data.sublist(5, 9); - var saveStrList = changeIntListToStringList(token); + final List token = reply.data.sublist(5, 9); + final List saveStrList = changeIntListToStringList(token); Storage.setStringList(saveBlueToken, saveStrList); IoSenderManage.senderCustomPasswordsCommand( - keyID: "0", + keyID: '0', userID: (await Storage.getUid())!, pwdNo: state.itemData.isCustom == 1 ? state.pwdNo : 0, pwd: state.pwd, //state.deletPWD, @@ -86,7 +84,7 @@ class PasswordKeyListLogic extends BaseGetXController { // 重置密码 Future _replyResetPassword(Reply reply) async { - int status = reply.data[2]; + final int status = reply.data[2]; switch (status) { case 0x00: //成功 @@ -97,18 +95,18 @@ class PasswordKeyListLogic extends BaseGetXController { break; case 0x06: //无权限 - var privateKey = await Storage.getStringList(saveBluePrivateKey); - List getPrivateKeyList = changeStringListToIntList(privateKey!); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); - var signKey = await Storage.getStringList(saveBlueSignKey); - List signKeyDataList = changeStringListToIntList(signKey!); + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); - var token = reply.data.sublist(5, 9); - var saveStrList = changeIntListToStringList(token); + final List token = reply.data.sublist(5, 9); + final List saveStrList = changeIntListToStringList(token); Storage.setStringList(saveBlueToken, saveStrList); IoSenderManage.senderResetPasswordsCommand( - keyID: "0", + keyID: '0', userID: (await Storage.getUid())!, needAuthor: 1, isBeforeAddUser: false, @@ -133,17 +131,17 @@ class PasswordKeyListLogic extends BaseGetXController { BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { if (deviceConnectionState == BluetoothConnectionState.connected) { - var signKey = await Storage.getStringList(saveBlueSignKey); - List signKeyDataList = changeStringListToIntList(signKey!); + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); - var privateKey = await Storage.getStringList(saveBluePrivateKey); - List getPrivateKeyList = changeStringListToIntList(privateKey!); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); - var token = await Storage.getStringList(saveBlueToken); - List getTokenList = changeStringListToIntList(token!); + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); IoSenderManage.senderCustomPasswordsCommand( - keyID: "0", + keyID: '0', userID: (await Storage.getUid())!, pwdNo: state.itemData.isCustom == 1 ? state.pwdNo : 0, pwd: state.pwd, //state.deletPWD, @@ -184,17 +182,17 @@ class PasswordKeyListLogic extends BaseGetXController { BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { if (deviceConnectionState == BluetoothConnectionState.connected) { - var signKey = await Storage.getStringList(saveBlueSignKey); - List signKeyDataList = changeStringListToIntList(signKey!); + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); - var privateKey = await Storage.getStringList(saveBluePrivateKey); - List getPrivateKeyList = changeStringListToIntList(privateKey!); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); - var token = await Storage.getStringList(saveBlueToken); - List getTokenList = changeStringListToIntList(token!); + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); IoSenderManage.senderResetPasswordsCommand( - keyID: "0", + keyID: '0', userID: (await Storage.getUid())!, needAuthor: 1, isBeforeAddUser: false, @@ -274,11 +272,11 @@ class PasswordKeyListLogic extends BaseGetXController { //密码钥匙重置请求 Future resetPasswordKeyListRequest() async { - PasswordKeyListEntity entity = await ApiRepository.to.keyboardPwdReset( + final PasswordKeyListEntity entity = await ApiRepository.to.keyboardPwdReset( lockId: state.keyInfo.value.lockId.toString(), passwordKey: state.encrpyKey); if (entity.errorCode!.codeIsSuccessful) { - showToast("重置成功".tr, something: () { + showToast('重置成功'.tr, something: () { pageNo = 1; mockNetworkDataRequest(isRefresh: true); }); @@ -287,30 +285,38 @@ class PasswordKeyListLogic extends BaseGetXController { //删除密码请求 deleteType:1-蓝牙 2-网关 Future deletePwdRequest() async { - PasswordKeyEntity entity = await ApiRepository.to.deleteKeyboardPwd( + final PasswordKeyEntity entity = await ApiRepository.to.deleteKeyboardPwd( lockId: state.itemData.lockId!.toString(), keyboardPwdId: state.itemData.keyboardPwdId!.toString(), deleteType: 1); if (entity.errorCode!.codeIsSuccessful) { - showToast("删除成功".tr, something: () { + showToast('删除成功'.tr, something: () { pageNo = 1; mockNetworkDataRequest(isRefresh: true); }); } } + // 获取用户信息此处用作判断网络是否能获取成功 + Future getUserInfoRequest() async { + final MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo(); + if (entity.errorCode!.codeIsSuccessful) { + senderResetPasswords(); + } + } + //使用期限 String getUseDateStr(PasswordKeyListItem indexEntity) { - int? getPwdType = indexEntity.keyboardPwdType; + final int? getPwdType = indexEntity.keyboardPwdType; String useDateStr = ''; - DateTime sendDateStr = + final DateTime sendDateStr = DateTime.fromMillisecondsSinceEpoch(indexEntity.sendDate!); - DateTime startDateStr = + final DateTime startDateStr = DateTime.fromMillisecondsSinceEpoch(indexEntity.startDate!); - DateTime endDateStr = + final DateTime endDateStr = DateTime.fromMillisecondsSinceEpoch(indexEntity.endDate!); - int starHour = indexEntity.hoursStart!; - int endHour = indexEntity.hoursEnd!; + final int starHour = indexEntity.hoursStart!; + final int endHour = indexEntity.hoursEnd!; // AppLog.log('indexEntity.keyboardPwdName:${indexEntity.keyboardPwdName} indexEntity.keyboardPwdStatus:${indexEntity.keyboardPwdStatus} indexEntity.startDate!${indexEntity.startDate!} indexEntity.endDate!${indexEntity.endDate!} starHour:$starHour endHour:$endHour'); switch (getPwdType) { @@ -385,7 +391,7 @@ class PasswordKeyListLogic extends BaseGetXController { void _getPasswordListRefreshUIAction() { // 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus _getPasswordListRefreshUIEvent = - eventBus.on().listen((event) { + eventBus.on().listen((GetPasswordListRefreshUI event) { mockNetworkDataRequest(isRefresh: true); }); } diff --git a/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart b/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart index 558f3b01..a35c73a8 100755 --- a/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart +++ b/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart @@ -1,9 +1,12 @@ + import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:get/get.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_logic.dart'; +import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_state.dart'; +import 'package:star_lock/main/lockMian/entity/lockListInfo_entity.dart'; import 'package:star_lock/tools/noData.dart'; import 'package:star_lock/tools/storage.dart'; import '../../../../appRouters.dart'; @@ -25,11 +28,11 @@ class PasswordKeyListPage extends StatefulWidget { class _PasswordKeyListPageState extends State with RouteAware { - final logic = Get.put(PasswordKeyListLogic()); - final state = Get.find().state; + final PasswordKeyListLogic logic = Get.put(PasswordKeyListLogic()); + final PasswordKeyListState state = Get.find().state; Future getHttpData({required bool isRefresh}) async { - var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); + final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { logic .mockNetworkDataRequest(isRefresh: isRefresh) @@ -54,25 +57,22 @@ class _PasswordKeyListPageState extends State barTitle: TranslationLoader.lanKeys!.password!.tr, haveBack: true, backgroundColor: AppColors.mainColor, - actionsList: [ + actionsList: [ TextButton( child: Text( TranslationLoader.lanKeys!.reset!.tr, style: TextStyle(color: Colors.white, fontSize: 24.sp), ), onPressed: () async { - var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); + final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { if (state.itemDataList.isEmpty) { - logic.showToast("暂无密码,无需重置".tr); + logic.showToast('暂无密码,无需重置'.tr); return; } - ShowTipView().showIosTipWithContentDialog('该锁的密码都将被删除'.tr, - () { - logic.senderResetPasswords(); - }); + ShowTipView().showIosTipWithContentDialog('该锁的密码都将被删除'.tr, logic.getUserInfoRequest); } else { - logic.showToast("演示模式".tr); + logic.showToast('演示模式'.tr); } }, ), @@ -86,7 +86,7 @@ class _PasswordKeyListPageState extends State getHttpData(isRefresh: false); }, child: Column( - children: [ + children: [ // _searchWidget(), KeySearchWidget( editingController: state.searchController, @@ -106,8 +106,8 @@ class _PasswordKeyListPageState extends State onClick: () { Navigator.pushNamed( context, Routers.passwordKeyPerpetualPage, - arguments: {"keyInfo": state.keyInfo.value}) - .then((val) { + arguments: {'keyInfo': state.keyInfo.value}) + .then((Object? val) { if (val != null) { getHttpData(isRefresh: true); } @@ -132,10 +132,10 @@ class _PasswordKeyListPageState extends State : SlidableAutoCloseBehavior( child: ListView.separated( itemCount: state.itemDataList.value.length, - itemBuilder: (c, index) { - PasswordKeyListItem passwordKeyListItem = + itemBuilder: (BuildContext c, int index) { + final PasswordKeyListItem passwordKeyListItem = state.itemDataList.value[index]; - String useDateStr = + final String useDateStr = logic.getUseDateStr(passwordKeyListItem); // 使用期限 return Slidable( @@ -143,11 +143,10 @@ class _PasswordKeyListPageState extends State endActionPane: ActionPane( extentRatio: 0.2, motion: const ScrollMotion(), - children: [ + children: [ SlidableAction( onPressed: (BuildContext context) { - ShowTipView().showIosTipWithContentDialog( - "确定要删除吗?".tr, () async { + ShowTipView().showIosTipWithContentDialog('确定要删除吗?'.tr, () async { state.itemData = passwordKeyListItem; state.pwdNo = passwordKeyListItem.pwdUserNo!; state.pwd = passwordKeyListItem.keyboardPwd!; @@ -163,9 +162,8 @@ class _PasswordKeyListPageState extends State ), child: _electronicKeyItem(index, 'images/icon_password.png', passwordKeyListItem.keyboardPwdName!, useDateStr, () { - Navigator.pushNamed(context, Routers.passwordKeyDetailPage, - arguments: {"itemData": passwordKeyListItem}) - .then((val) { + Navigator.pushNamed(context, Routers.passwordKeyDetailPage, arguments: {'itemData': passwordKeyListItem}) + .then((Object? val) { if (val != null) { getHttpData(isRefresh: true); } @@ -183,9 +181,8 @@ class _PasswordKeyListPageState extends State )); } - Widget _electronicKeyItem(int itemIndex, String lockTypeIcon, - String lockTypeTitle, String useDateStr, Function()? action) { - PasswordKeyListItem passwordKeyListItem = state.itemDataList[itemIndex]; + Widget _electronicKeyItem(int itemIndex, String lockTypeIcon, String lockTypeTitle, String useDateStr, Function()? action) { + final PasswordKeyListItem passwordKeyListItem = state.itemDataList[itemIndex]; return GestureDetector( onTap: action, @@ -194,7 +191,7 @@ class _PasswordKeyListPageState extends State // margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.w), color: Colors.white, child: Row( - children: [ + children: [ SizedBox(width: 30.w), Image.asset( lockTypeIcon, @@ -207,14 +204,14 @@ class _PasswordKeyListPageState extends State Expanded( child: Column( mainAxisAlignment: MainAxisAlignment.center, - children: [ + children: [ Row( - children: [ + children: [ SizedBox( width: passwordKeyListItem.keyboardPwdStatus == 2 ? 1.sw - 110.w - 100.w : 1.sw - 110.w - 50.w, - child: Row(children: [ + child: Row(children: [ Flexible( child: Text(lockTypeTitle, maxLines: 1, @@ -226,20 +223,18 @@ class _PasswordKeyListPageState extends State ]), ), SizedBox(width: 10.w), - passwordKeyListItem.keyboardPwdStatus == 2 - ? Text( + if (passwordKeyListItem.keyboardPwdStatus == 2) Text( '已过期'.tr, style: TextStyle(color: Colors.red, fontSize: 20.sp), - ) - : Container(), + ) else Container(), // SizedBox(width: 15.w) ], ), SizedBox(height: 5.h), Row( mainAxisAlignment: MainAxisAlignment.start, - children: [ + children: [ Flexible( child: Text( useDateStr, @@ -265,7 +260,6 @@ class _PasswordKeyListPageState extends State @override void didChangeDependencies() { - // TODO: implement didChangeDependencies super.didChangeDependencies(); /// 路由订阅 @@ -274,7 +268,6 @@ class _PasswordKeyListPageState extends State @override void dispose() { - // TODO: implement dispose /// 取消路由订阅 AppRouteObserver().routeObserver.unsubscribe(this); super.dispose(); diff --git a/lib/mine/mineSet/lockUserManage/expireLockList/expireCard/expireCard_page.dart b/lib/mine/mineSet/lockUserManage/expireLockList/expireCard/expireCard_page.dart index 541b37d3..653fb66b 100755 --- a/lib/mine/mineSet/lockUserManage/expireLockList/expireCard/expireCard_page.dart +++ b/lib/mine/mineSet/lockUserManage/expireLockList/expireCard/expireCard_page.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:get/get.dart'; @@ -9,6 +10,7 @@ import 'package:star_lock/tools/EasyRefreshTool.dart'; import 'package:star_lock/tools/noData.dart'; import '../../../../../appRouters.dart'; +import '../../../../../tools/appRouteObserver.dart'; import '../../../../../tools/showTipView.dart'; import 'expireCard_entity.dart'; import 'expireCard_logic.dart'; @@ -20,7 +22,7 @@ class ExpireCardPage extends StatefulWidget { State createState() => _ExpireCardPageState(); } -class _ExpireCardPageState extends State { +class _ExpireCardPageState extends State with RouteAware { final ExpireCardLogic logic = Get.put(ExpireCardLogic()); final ExpireCardState state = Get.find().state; @@ -227,4 +229,57 @@ class _ExpireCardPageState extends State { // } } + @override + void didChangeDependencies() { + super.didChangeDependencies(); + + /// 路由订阅 + AppRouteObserver().routeObserver.subscribe(this, ModalRoute.of(context)!); + } + + @override + void dispose() { + /// 取消路由订阅 + AppRouteObserver().routeObserver.unsubscribe(this); + super.dispose(); + } + + /// 从上级界面进入 当前界面即将出现 + @override + void didPush() { + super.didPush(); + state.ifCurrentScreen.value = true; + } + + /// 返回上一个界面 当前界面即将消失 + @override + void didPop() { + super.didPop(); + logic.cancelBlueConnetctToastTimer(); + if (EasyLoading.isShow) { + EasyLoading.dismiss(animation: true); + } + state.ifCurrentScreen.value = false; + state.sureBtnState.value = 0; + } + + /// 从下级返回 当前界面即将出现 + @override + void didPopNext() { + super.didPopNext(); + state.ifCurrentScreen.value = true; + } + + /// 进入下级界面 当前界面即将消失 + @override + void didPushNext() { + super.didPushNext(); + logic.cancelBlueConnetctToastTimer(); + if (EasyLoading.isShow) { + EasyLoading.dismiss(animation: true); + } + state.ifCurrentScreen.value = false; + state.sureBtnState.value = 0; + } + } diff --git a/lib/mine/mineSet/lockUserManage/expireLockList/expireFingerprint/expireFingerprint_logic.dart b/lib/mine/mineSet/lockUserManage/expireLockList/expireFingerprint/expireFingerprint_logic.dart index 1023ca3e..91c78651 100755 --- a/lib/mine/mineSet/lockUserManage/expireLockList/expireFingerprint/expireFingerprint_logic.dart +++ b/lib/mine/mineSet/lockUserManage/expireLockList/expireFingerprint/expireFingerprint_logic.dart @@ -35,7 +35,6 @@ class ExpireFingerprintLogic extends BaseGetXController { // 添加指纹开始 Future _replyAddFingerprintBegin(Reply reply) async { final int status = reply.data[2]; - switch(status){ case 0x00: //成功 @@ -72,7 +71,7 @@ class ExpireFingerprintLogic extends BaseGetXController { privateKey:getPrivateKeyList, token: getTokenList, isAdmin: 0, - operate: 0, + operate: 2, isBeforeAddUser: true ); break; @@ -108,7 +107,7 @@ class ExpireFingerprintLogic extends BaseGetXController { keyID:state.deletExpireFingerprintItemEntity.fingerprintId.toString(), userID:await Storage.getUid(), fingerNo:int.parse(state.deletExpireFingerprintItemEntity.fingerprintNumber!), - useCountLimit:0xff, + useCountLimit:0xffff, isForce:0, // 是否是胁迫 isRound:0, // 是否是循环 weekRound:0, // 周循环 @@ -121,7 +120,7 @@ class ExpireFingerprintLogic extends BaseGetXController { privateKey:getPrivateKeyList, token: getTokenList, isAdmin: 0, - operate: 0, + operate: 2, isBeforeAddUser: true ); } else if (deviceConnectionState == BluetoothConnectionState.disconnected) { diff --git a/lib/mine/mineSet/lockUserManage/expireLockList/expireFingerprint/expireFingerprint_page.dart b/lib/mine/mineSet/lockUserManage/expireLockList/expireFingerprint/expireFingerprint_page.dart index ccb1c11d..4e6e6fe5 100755 --- a/lib/mine/mineSet/lockUserManage/expireLockList/expireFingerprint/expireFingerprint_page.dart +++ b/lib/mine/mineSet/lockUserManage/expireLockList/expireFingerprint/expireFingerprint_page.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:get/get.dart'; @@ -9,6 +10,7 @@ import 'package:star_lock/tools/showTipView.dart'; import '../../../../../appRouters.dart'; import '../../../../../app_settings/app_colors.dart'; import '../../../../../tools/EasyRefreshTool.dart'; +import '../../../../../tools/appRouteObserver.dart'; import 'expireFingerprint_entity.dart'; import 'expireFingerprint_logic.dart'; @@ -19,7 +21,7 @@ class ExpireFingerprintPage extends StatefulWidget { State createState() => _ExpireFingerprintPageState(); } -class _ExpireFingerprintPageState extends State { +class _ExpireFingerprintPageState extends State with RouteAware { final ExpireFingerprintLogic logic = Get.put(ExpireFingerprintLogic()); final ExpireFingerprintState state = Get.find().state; @@ -214,4 +216,57 @@ class _ExpireFingerprintPageState extends State { } // } } + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + + /// 路由订阅 + AppRouteObserver().routeObserver.subscribe(this, ModalRoute.of(context)!); + } + + @override + void dispose() { + /// 取消路由订阅 + AppRouteObserver().routeObserver.unsubscribe(this); + super.dispose(); + } + + /// 从上级界面进入 当前界面即将出现 + @override + void didPush() { + super.didPush(); + state.ifCurrentScreen.value = true; + } + + /// 返回上一个界面 当前界面即将消失 + @override + void didPop() { + super.didPop(); + logic.cancelBlueConnetctToastTimer(); + if (EasyLoading.isShow) { + EasyLoading.dismiss(animation: true); + } + state.ifCurrentScreen.value = false; + state.sureBtnState.value = 0; + } + + /// 从下级返回 当前界面即将出现 + @override + void didPopNext() { + super.didPopNext(); + state.ifCurrentScreen.value = true; + } + + /// 进入下级界面 当前界面即将消失 + @override + void didPushNext() { + super.didPushNext(); + logic.cancelBlueConnetctToastTimer(); + if (EasyLoading.isShow) { + EasyLoading.dismiss(animation: true); + } + state.ifCurrentScreen.value = false; + state.sureBtnState.value = 0; + } } diff --git a/lib/mine/mineSet/lockUserManage/expireLockList/expirePassword/expirePassword_page.dart b/lib/mine/mineSet/lockUserManage/expireLockList/expirePassword/expirePassword_page.dart index 16254d9e..fae5af1e 100755 --- a/lib/mine/mineSet/lockUserManage/expireLockList/expirePassword/expirePassword_page.dart +++ b/lib/mine/mineSet/lockUserManage/expireLockList/expirePassword/expirePassword_page.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:get/get.dart'; @@ -9,6 +10,7 @@ import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expirePassw import 'package:star_lock/tools/EasyRefreshTool.dart'; import 'package:star_lock/tools/noData.dart'; +import '../../../../../tools/appRouteObserver.dart'; import '../../../../../tools/showTipView.dart'; import 'expirePassword_entity.dart'; import 'expirePassword_logic.dart'; @@ -20,7 +22,7 @@ class ExpirePasswordPage extends StatefulWidget { State createState() => _ExpirePasswordPageState(); } -class _ExpirePasswordPageState extends State { +class _ExpirePasswordPageState extends State with RouteAware { final ExpirePasswordLogic logic = Get.put(ExpirePasswordLogic()); final ExpirePasswordState state = Get.find().state; @@ -237,4 +239,57 @@ class _ExpirePasswordPageState extends State { ], ); } + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + + /// 路由订阅 + AppRouteObserver().routeObserver.subscribe(this, ModalRoute.of(context)!); + } + + @override + void dispose() { + /// 取消路由订阅 + AppRouteObserver().routeObserver.unsubscribe(this); + super.dispose(); + } + + /// 从上级界面进入 当前界面即将出现 + @override + void didPush() { + super.didPush(); + state.ifCurrentScreen.value = true; + } + + /// 返回上一个界面 当前界面即将消失 + @override + void didPop() { + super.didPop(); + logic.cancelBlueConnetctToastTimer(); + if (EasyLoading.isShow) { + EasyLoading.dismiss(animation: true); + } + state.ifCurrentScreen.value = false; + state.sureBtnState.value = 0; + } + + /// 从下级返回 当前界面即将出现 + @override + void didPopNext() { + super.didPopNext(); + state.ifCurrentScreen.value = true; + } + + /// 进入下级界面 当前界面即将消失 + @override + void didPushNext() { + super.didPushNext(); + logic.cancelBlueConnetctToastTimer(); + if (EasyLoading.isShow) { + EasyLoading.dismiss(animation: true); + } + state.ifCurrentScreen.value = false; + state.sureBtnState.value = 0; + } } diff --git a/lib/tools/showTipView.dart b/lib/tools/showTipView.dart index 40ca6fad..31d2a350 100755 --- a/lib/tools/showTipView.dart +++ b/lib/tools/showTipView.dart @@ -15,10 +15,10 @@ class ShowTipView { void showSureAlertDialog(String contentStr) { showCupertinoDialog( context: Get.context!, - builder: (context) { + builder: (BuildContext context) { return CupertinoAlertDialog( content: Text(contentStr), - actions: [ + actions: [ CupertinoDialogAction( child: Text(TranslationLoader.lanKeys!.sure!.tr), onPressed: () { @@ -44,12 +44,12 @@ class ShowTipView { // height: 100.h, child: ShowDeleteAdministratorIsHaveAllDataWidget( contentStr: contentStr, - blockIsHaveAllDataCallback: (a) { + blockIsHaveAllDataCallback: (bool a) { selet = a; }, ), ), - actions: [ + actions: [ CupertinoDialogAction( child: Text(TranslationLoader.lanKeys!.cancel!.tr), onPressed: () { @@ -73,15 +73,13 @@ class ShowTipView { void showIosTipWithContentDialog(String contentStr, Function sureClick) { showCupertinoDialog( context: Get.context!, - builder: (context) { + builder: (BuildContext context) { return CupertinoAlertDialog( content: Text(contentStr), - actions: [ + actions: [ CupertinoDialogAction( child: Text(TranslationLoader.lanKeys!.cancel!.tr), - onPressed: () { - Get.back(); - }, + onPressed: Get.back, ), CupertinoDialogAction( child: Text(TranslationLoader.lanKeys!.sure!.tr),