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/lockSet/lockSet/checkingInInfoData_entity.dart'; import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSet_state.dart'; import '../../../../appRouters.dart'; import '../../../../app_settings/app_colors.dart'; import '../../../../tools/EasyRefreshTool.dart'; import '../../../../tools/appRouteObserver.dart'; import '../../../../tools/commonItem.dart'; import '../../../../tools/showTipView.dart'; import '../../../../tools/submitBtn.dart'; import '../../../../tools/titleAppBar.dart'; import '../../../../translations/trans_lib.dart'; import 'lockSetInfo_entity.dart'; import 'lockSet_logic.dart'; class LockSetPage extends StatefulWidget { const LockSetPage({Key? key}) : super(key: key); @override State createState() => _LockSetPageState(); } class _LockSetPageState extends State with RouteAware { final LockSetLogic logic = Get.put(LockSetLogic()); final LockSetState state = Get.find().state; Future getHttpData() async { logic.getLockSettingInfoData().then((LockSetInfoEntity value) { setState(() {}); }); } @override void initState() { super.initState(); logic.initLoadDataAction(() { setState(() {}); }); getHttpData(); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.mainBackgroundColor, appBar: TitleAppBar( barTitle: TranslationLoader.lanKeys!.set!.tr, haveBack: true, backgroundColor: AppColors.mainColor), body: EasyRefreshTool( onRefresh: () { getHttpData(); }, child: Column( children: [ Expanded( child: Obx(() => ListView( children: getListWidget(), )), ), ], ), )); } // 根据权限显示不同的列表 List getListWidget() { if (state.lockBasicInfo.value.isLockOwner == 1 || state.lockBasicInfo.value.keyRight == 1) { // 超级管理员、授权管理员 return getAllWidget(); } else { return getNormalWidget(); } } // 普通用户 List getNormalWidget() { final List showWidgetArr = [ // 基本信息 CommonItem( leftTitel: TranslationLoader.lanKeys!.basicInformation!.tr, rightTitle: '', isHaveLine: false, isHaveDirection: true, action: () { Get.toNamed(Routers.basicInformationPage, arguments: {'lockSetInfoData': state.lockSetInfoData.value}); }), SizedBox(height: 10.h), // 自动闭锁 Obx(() => Visibility( visible: state.lockFeature.value.autoLock == 1, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.automaticBlocking!.tr, rightTitle: (state.lockSettingInfo.value.autoLock ?? 0) > 0 ? '${state.lockSetInfoData.value.lockSettingInfo!.autoLockSecond ?? 0}s' : TranslationLoader.lanKeys!.closed!.tr, isHaveLine: true, isHaveDirection: true, // isHaveRightWidget: true, // rightWidget: rightText((state.lockSetInfoData.value.lockSetting!.autoLock ?? 0) > 0 // ? "${state.lockSetInfoData.value.lockSetting!.autoLockSecond ?? 0}s" // : TranslationLoader.lanKeys!.closed!.tr), action: () { Get.toNamed(Routers.automaticBlockingPage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value, // 'lockBasicInfo': state.lockBasicInfo.value }); }))), // 常开模式 Obx(() => Visibility( visible: state.lockFeature.value.passageMode == 1, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.normallyOpenMode!.tr, rightTitle: (state.lockSettingInfo.value.passageMode ?? 0) == 1 ? TranslationLoader.lanKeys!.opened!.tr : TranslationLoader.lanKeys!.closed!.tr, isHaveLine: true, isHaveDirection: true, action: () { Get.toNamed(Routers.normallyOpenModePage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value, 'lockBasicInfo': state.lockBasicInfo.value }); }))), Visibility( visible: true, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.lockTime!.tr, rightTitle: '', isHaveLine: true, isHaveDirection: true, action: () { Get.toNamed(Routers.lockTimePage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value }); })), SizedBox(height: 30.h), Container( padding: EdgeInsets.only(left: 20.w, right: 20.w, bottom: 30.h), child: SubmitBtn( btnName: TranslationLoader.lanKeys!.delete!.tr, isDelete: true, onClick: () { // logic.deletUserAction(); // logic.deletLockInfoData(); // showDeletAlertDialog(context); // showDeletPasswordAlertDialog(context); logic.deleyLockLogicOfRoles(); }), ), ]; return showWidgetArr; } // 授权管理员、超级管理员字段 List getAllWidget() { final List showWidgetArr = [ // 基本信息 CommonItem( leftTitel: TranslationLoader.lanKeys!.basicInformation!.tr, rightTitle: '', isHaveLine: false, isHaveDirection: true, action: () { Get.toNamed(Routers.basicInformationPage, arguments: {'lockSetInfoData': state.lockSetInfoData.value}); }), SizedBox(height: 10.h), //by DaisyWu 田总:移至锁详情配件区 // 门磁 // Obx(() => Visibility( // visible: state.lockFeature.value.doorStatus == 1 ? true : false, // child: CommonItem( // leftTitel: TranslationLoader.lanKeys!.doorMagnetic!.tr, // rightTitle: "", // isHaveLine: true, // isHaveDirection: true, // action: () { // Get.toNamed(Routers.doorMagneticPage); // // Toast.show(msg: "功能暂未开放"); // }))), // // 无线键盘 // Obx(() => Visibility( // visible: state.lockFeature.value.wirelessKeyboard == 1 ? true : false, // child: CommonItem( // leftTitel: TranslationLoader.lanKeys!.wirelessKeyboard!.tr, // rightTitle: "", // isHaveLine: true, // isHaveDirection: true, // action: () { // Get.toNamed(Routers.wirelessKeyboardPage); // // Toast.show(msg: "功能暂未开放"); // }))), // // 照明 // Obx(() => Visibility( // visible: state.lockFeature.value.lightingTime == 1 ? true : false, // child: CommonItem( // leftTitel: TranslationLoader.lanKeys!.illumination!.tr, // rightTitle: "", // isHaveLine: true, // isHaveDirection: true, // action: () { // logic.showToast("功能暂未开放"); // }))), // 开门器 // Visibility( // visible: state.lockFeature.value.doorStatus == 1 ? true : false, // child: CommonItem( // leftTitel: TranslationLoader.lanKeys!.doorOpener!.tr, // rightTitle: "", // isHaveLine: false, // isHaveDirection: true, // action: () { // logic.showToast("功能暂未开放"); // })), // SizedBox(height: 10.h), // 自动闭锁 Obx(() => Visibility( visible: state.lockFeature.value.autoLock == 1, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.automaticBlocking!.tr, rightTitle: state.lockSettingInfo.value.autoLock! > 0 ? '${state.lockSetInfoData.value.lockSettingInfo!.autoLockSecond}s' : TranslationLoader.lanKeys!.closed!.tr, isHaveLine: true, isHaveDirection: true, // isHaveRightWidget: true, // rightWidget: rightText((state.lockSetInfoData.value.lockSetting!.autoLock ?? 0) > 0 // ? "${state.lockSetInfoData.value.lockSetting!.autoLockSecond ?? 0}s" // : TranslationLoader.lanKeys!.closed!.tr), action: () { Get.toNamed(Routers.automaticBlockingPage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value }); }))), // 锁声音 Obx(() { String titleStr = ''; if ((state.lockSettingInfo.value.lockSound ?? 0) == 1) { switch (state.lockSettingInfo.value.lockSoundVolume ?? 0) { case 1: titleStr = TranslationLoader.lanKeys!.low!.tr; break; case 2: titleStr = TranslationLoader.lanKeys!.lower!.tr; break; case 3: titleStr = TranslationLoader.lanKeys!.medium!.tr; break; case 4: titleStr = TranslationLoader.lanKeys!.higher!.tr; break; case 5: titleStr = TranslationLoader.lanKeys!.high!.tr; break; } } else { titleStr = TranslationLoader.lanKeys!.closed!.tr; } return Visibility( visible: state.lockFeature.value.lockSound == 1, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.lockSound!.tr, rightTitle: titleStr, isHaveLine: true, isHaveDirection: true, action: () { Get.toNamed(Routers.lockSoundSetPage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value }); })); }), // 防撬报警 Obx(() => Visibility( visible: state.lockFeature.value.antiPrySwitch == 1, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.burglarAlarm!.tr, rightTitle: (state.lockSettingInfo.value.antiPrySwitch ?? 0) == 1 ? TranslationLoader.lanKeys!.opened!.tr : TranslationLoader.lanKeys!.closed!.tr, isHaveLine: true, isHaveDirection: true, action: () { Get.toNamed(Routers.burglarAlarmPage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value }); }))), SizedBox(height: 10.h), // 常开模式 Obx(() => Visibility( visible: state.lockFeature.value.passageMode == 1, // visible: true, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.normallyOpenMode!.tr, rightTitle: (state.lockSettingInfo.value.passageMode ?? 0) == 1 ? TranslationLoader.lanKeys!.opened!.tr : TranslationLoader.lanKeys!.closed!.tr, isHaveLine: true, isHaveDirection: true, action: () { Get.toNamed(Routers.normallyOpenModePage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value }); }))), // 远程开锁 Obx(() => Visibility( visible: state.lockFeature.value.remoteUnlock == 1, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.remoteUnlocking!.tr, rightTitle: (state.lockSettingInfo.value.remoteUnlock ?? 0) == 1 ? TranslationLoader.lanKeys!.opened!.tr : TranslationLoader.lanKeys!.closed!.tr, isHaveLine: true, isHaveDirection: true, action: () { Get.toNamed(Routers.remoteUnlockingPage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value }); }))), // 重置键 Obx(() => Visibility( visible: state.lockBasicInfo.value.isLockOwner == 1 && state.lockFeature.value.resetSwitch == 1, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.resetButton!.tr, rightTitle: (state.lockSettingInfo.value.resetSwitch ?? 0) == 1 ? TranslationLoader.lanKeys!.opened!.tr : TranslationLoader.lanKeys!.closed!.tr, isHaveLine: true, isHaveDirection: true, action: () { Get.toNamed(Routers.resetButtonPage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value }); }))), SizedBox(height: 10.h), //---田总新增展示 // Obx(() => // 面容开锁 Visibility( visible: state.lockFeature.value.d3Face == 1, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.faceUnlocks!.tr, rightTitle: '', isHaveLine: true, isHaveDirection: true, action: () { Get.toNamed(Routers.faceUnlockPage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value }); })), // ), // 消息提醒 Visibility( visible: true, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.messageReminding!.tr, rightTitle: '', isHaveLine: true, isHaveDirection: true, action: () { Get.toNamed(Routers.msgNotificationPage, arguments: {'lockId': state.lockSetInfoData.value.lockId}); })), //猫眼设置 Obx(() => Visibility( visible: state.lockFeature.value.isSupportCatEye == 1, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.catEyeSet!.tr, rightTitle: '', isHaveLine: true, isHaveDirection: true, action: () { Get.toNamed(Routers.catEyeSetPage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value }); }))), // Obx(() => //自动亮屏已包括至面容开锁模块 // Visibility( // visible: true, // child: CommonItem( // leftTitel: '自动亮屏', // rightTitle: "", // isHaveLine: true, // isHaveDirection: true, // action: () {})), // ), // Obx(() => //感应距离已包括至面容开锁模块 // Visibility( // visible: true, // child: CommonItem( // leftTitel: '感应距离', // rightTitle: "", // isHaveLine: true, // isHaveDirection: true, // action: () { // Toast.show(msg: "功能暂未开放"); // })), // ), // Obx(() => // 开门方向设置 Visibility( visible: state.lockFeature.value.openDirection == 1, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.openingDirectionSet!.tr, rightTitle: '', isHaveDirection: true, isHaveLine: true, action: () { Get.toNamed(Routers.openDoorDirectionPage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value }); })), // 电机功率设置 Visibility( visible: state.lockFeature.value.motorTorsion == 1, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.motorPowerSetting!.tr, rightTitle: '', isHaveLine: true, isHaveDirection: true, action: () { Get.toNamed(Routers.motorPowerPage); })), // 蓝牙广播(关闭则不能使用蓝牙主动开锁) /* 2024-01-12 会议确定去掉“蓝牙广播” by DaisyWu Obx(() => Visibility( visible: true, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.bluetoothBroadcast!.tr, rightTitle: "", isHaveLine: true, isHaveRightWidget: true, rightWidget: _lockBlueBroadcastSwitch()))), SizedBox(height: 10.h), */ //-----新增至此 SizedBox(height: 10.h), // 标记房态 // Obx(() { // var title = ""; // if (state.lockStatus.value.roomStatus == 1) { // title = TranslationLoader.lanKeys!.checkedIn!.tr; // } else if (state.lockStatus.value.roomStatus == 0) { // title = TranslationLoader.lanKeys!.leisure!.tr; // } // return Visibility( // visible: state.lockStatus.value.roomStatus == 1 ? true : false, // child: CommonItem( // leftTitel: TranslationLoader.lanKeys!.markedHouseState!.tr, // rightTitle: title, // isHaveLine: true, // isHaveDirection: true, // action: () { // Get.toNamed(Routers.markedHouseStatePage, arguments: { // 'lockSetInfoData': state.lockSetInfoData.value // }); // })); // }), // 考勤 Obx( () => Visibility( visible: state.lockBasicInfo.value.isLockOwner == 1 && state.lockFeature.value.attendance == 1, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.checkingIn!.tr, rightTitle: '', isHaveLine: true, isHaveRightWidget: true, rightWidget: _openCheckInSwitch())), ), // 开锁提醒 Obx( () => Visibility( visible: state.lockBasicInfo.value.isLockOwner == 1 && state.lockFeature.value.unlockReminder == 1, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.unlockReminder!.tr, rightTitle: '', isHaveLine: true, isHaveRightWidget: true, rightWidget: _lockRemindSwitch())), ), // APP开锁时是否需联网 Obx( () => Visibility( visible: state.lockBasicInfo.value.isLockOwner == 1 && state.lockFeature.value.appUnlockOnline == 1, child: CommonItem( leftTitel: TranslationLoader .lanKeys!.whetherInternetRequiredWhenUnlocking!.tr, rightTitle: '', isHaveLine: false, isHaveRightWidget: true, rightWidget: _openLockNeedOnlineSwitch()), ), ), SizedBox(height: 10.h), // wifi配网 Obx( () => Visibility( visible: state.lockFeature.value.wifi == 1, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.wifiDistributionNetwork!.tr, rightTitle: '', isHaveLine: true, isHaveDirection: true, action: () { Get.toNamed(Routers.wifiListPage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value }); // Get.toNamed(Routers.configuringWifiPage, arguments: { // 'lockSetInfoData': state.lockSetInfoData.value // }); })), ), // Obx(() => // 锁时间 Visibility( visible: true, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.lockTime!.tr, rightTitle: '', isHaveLine: true, isHaveDirection: true, action: () { Get.toNamed(Routers.lockTimePage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value }); })), // ), // Obx(() => // 诊断 // Visibility( // visible: true, // child: CommonItem( // leftTitel: TranslationLoader.lanKeys!.diagnose!.tr, // rightTitle: "", // isHaveLine: true, // isHaveDirection: true, // action: () { // Get.toNamed(Routers.diagnosePage, arguments: { // 'lockSetInfoData': state.lockSetInfoData.value // }); // })), // ), // Obx(() => // 上传数据 Visibility( visible: true, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.uploadData!.tr, rightTitle: '', isHaveLine: true, isHaveDirection: true, action: () { Get.toNamed(Routers.uploadDataPage); })), // ), // Obx(() => // Visibility( // visible: true, // child: CommonItem( // leftTitel: TranslationLoader // .lanKeys!.importOtherLockData!.tr, // rightTitle: "", // isHaveLine: true, // isHaveDirection: true, // action: () { // Get.toNamed(Routers.importOtherLockDataPage); // })), // ), // Obx(() => // 锁升级 Visibility( visible: true, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.lockEscalation!.tr, rightTitle: '', isHaveLine: false, isHaveDirection: true, action: () { Get.toNamed(Routers.lockEscalationPage); })), // ), SizedBox(height: 30.h), Container( padding: EdgeInsets.only(left: 20.w, right: 20.w, bottom: 30.h), child: SubmitBtn( btnName: TranslationLoader.lanKeys!.delete!.tr, isDelete: true, onClick: () { // logic.deletUserAction(); // logic.deletLockInfoData(); // showDeletAlertDialog(context); // showDeleteAdministratorIsHaveAllDataDialog(context); logic.deleyLockLogicOfRoles(); }), ), ]; return showWidgetArr; } Widget rightText(String rightTitle) { return Text(rightTitle ?? '', textAlign: TextAlign.end, style: TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor)); } // 开启考勤 CupertinoSwitch _openCheckInSwitch() { return CupertinoSwitch( activeColor: CupertinoColors.activeBlue, trackColor: CupertinoColors.systemGrey5, thumbColor: CupertinoColors.white, value: state.isAttendance.value == 1, onChanged: (bool value) { logic.openCheckingInData((CheckingInInfoDataEntity checkingInInfoDataEntity) { if (checkingInInfoDataEntity.data!.companyId == 0) { // logic.showCupertinoAlertDialog(context); ShowTipView().showIosTipWithContentDialog('创建公司后,考勤功能才能使用'.tr, () { // 删除锁 Get.toNamed(Routers.checkInCreatCompanyPage, arguments: {'lockSetInfoData': state.lockSetInfoData.value}); }); } else { logic.setLockSetGeneralSetting(); } }); }, ); } // 开锁提醒 CupertinoSwitch _lockRemindSwitch() { return CupertinoSwitch( activeColor: CupertinoColors.activeBlue, trackColor: CupertinoColors.systemGrey5, thumbColor: CupertinoColors.white, value: state.isUnlockReminder.value == 1, onChanged: (bool value) { logic.setLockPickingReminder(); }, ); } // APP开锁时是否需联网 CupertinoSwitch _openLockNeedOnlineSwitch() { return CupertinoSwitch( activeColor: CupertinoColors.activeBlue, trackColor: CupertinoColors.systemGrey5, thumbColor: CupertinoColors.white, value: state.isOpenLockNeedOnline.value == 1, onChanged: (bool value) { setState(() { logic.sendBurglarAlarm(55); }); }, ); } // 异常警告 // CupertinoSwitch _lockExceptionWarningsSwitch() { // return CupertinoSwitch( // activeColor: CupertinoColors.activeBlue, // trackColor: CupertinoColors.systemGrey5, // thumbColor: CupertinoColors.white, // value: (state.isOpenExceptionWarnings.value) == 1 ? true : false, // onChanged: (value) { // setState(() { // logic.sendBurglarAlarm(62); // }); // }, // ); // } // 逗留警告 // CupertinoSwitch _lockStayWarnSwitch() { // return CupertinoSwitch( // activeColor: CupertinoColors.activeBlue, // trackColor: CupertinoColors.systemGrey5, // thumbColor: CupertinoColors.white, // value: (state.isOpenExceptionWarnings.value) == 1 ? true : false, // onChanged: (value) { // setState(() { // logic.sendBurglarAlarm(61); // }); // }, // ); // } // 支持蓝牙广播 CupertinoSwitch _lockBlueBroadcastSwitch() { return CupertinoSwitch( activeColor: CupertinoColors.activeBlue, trackColor: CupertinoColors.systemGrey5, thumbColor: CupertinoColors.white, value: state.isOpenBlueBroadcast.value == 1, onChanged: (bool value) { setState(() { logic.sendBurglarAlarm(56); }); }, ); } CupertinoSwitch _otherUnHaveDoneSwitch() { return CupertinoSwitch( activeColor: CupertinoColors.activeBlue, trackColor: CupertinoColors.systemGrey5, thumbColor: CupertinoColors.white, value: false, onChanged: (bool value) { logic.showToast('功能暂未开放'); }, ); } @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); } // if (state.deletWaitScanTimer != null) { // state.deletWaitScanTimer!.cancel(); // } // if (state.deletWaitScanCompleter != null && // !state.deletWaitScanCompleter!.isCompleted) { // state.deletWaitScanCompleter!.complete(); // } state.ifCurrentScreen.value = false; } /// 从下级返回 当前界面即将出现 @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; } }