From de887d5c73eb60a6202bfa3ac6ebc7086a7f3009 Mon Sep 17 00:00:00 2001 From: GeJiaXiang <353358601@qq.com> Date: Tue, 23 Jan 2024 17:19:32 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=85=B3=E4=BA=8E=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AF=B7=E6=B1=82=E5=9C=B0=E5=9D=80=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/lib/mine/about/about_page.dart | 6 ++++++ star_lock/lib/network/api.dart | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/star_lock/lib/mine/about/about_page.dart b/star_lock/lib/mine/about/about_page.dart index 14e8e25b..c1ca3d2b 100644 --- a/star_lock/lib/mine/about/about_page.dart +++ b/star_lock/lib/mine/about/about_page.dart @@ -8,6 +8,7 @@ import '../../app_settings/app_colors.dart'; import '../../tools/commonItem.dart'; import '../../tools/titleAppBar.dart'; import '../../translations/trans_lib.dart'; +import '../../network/api.dart'; class AbountPage extends StatefulWidget { const AbountPage({Key? key}) : super(key: key); @@ -40,6 +41,11 @@ class _AbountPageState extends State { "星锁 1.0.0.07(preRelease-20240118-1)", style: TextStyle(fontSize: 24.sp, color: AppColors.blackColor), ), + SizedBox(height: 20.h), + Text( + Api.baseAddress, + style: TextStyle(fontSize: 24.sp, color: AppColors.blackColor), + ), SizedBox( height: 60.h, ), diff --git a/star_lock/lib/network/api.dart b/star_lock/lib/network/api.dart index ef58acb2..8387c18e 100644 --- a/star_lock/lib/network/api.dart +++ b/star_lock/lib/network/api.dart @@ -1,8 +1,8 @@ abstract class Api { - // static String baseAddress = "https://pre.lock.star-lock.cn"; //预发布环境 - static String baseAddress = "https://dev.lock.star-lock.cn"; //联调环境 + static String baseAddress = "https://pre.lock.star-lock.cn"; //预发布环境 + // static String baseAddress = "https://dev.lock.star-lock.cn"; //联调环境 // static String baseAddress = "http://192.168.1.15:8022"; //谢总本地 - // static String baseAddress = "https://ge.lock.star-lock.cn:8100"; //葛工开发环境地址 + // static String baseAddress = "https://ge.lock.star-lock.cn"; //葛工开发环境地址 final String baseUrl = "$baseAddress/api"; From 9514b7c9d5494267ea941c6f6abb6209da2dc10d Mon Sep 17 00:00:00 2001 From: GeJiaXiang <353358601@qq.com> Date: Tue, 23 Jan 2024 17:19:43 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E9=9A=90=E8=97=8F=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/lib/tools/xs_aliyunPush.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/star_lock/lib/tools/xs_aliyunPush.dart b/star_lock/lib/tools/xs_aliyunPush.dart index 4114ab5c..baf9465c 100644 --- a/star_lock/lib/tools/xs_aliyunPush.dart +++ b/star_lock/lib/tools/xs_aliyunPush.dart @@ -11,6 +11,7 @@ class XSAliyunPushProvider { _aliyunPush = aliyunPush; if (Platform.isAndroid) { _aliyunPush.createAndroidChannel('1', '测试通道A', 3, '测试创建通知通道'); + _aliyunPush.setAndroidLogLevel(kAliyunPushLogLevelError); } _addPushCallback(); } From 8718ffed3557d6202ee1bbfa2415e52e97c2ea87 Mon Sep 17 00:00:00 2001 From: GeJiaXiang <353358601@qq.com> Date: Tue, 23 Jan 2024 17:21:04 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=94=99=E5=88=AB?= =?UTF-8?q?=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/lib/appRouters.dart | 6 +++--- star_lock/lib/mine/about/about_page.dart | 8 ++++---- star_lock/lib/mine/mine/starLockMine_page.dart | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/star_lock/lib/appRouters.dart b/star_lock/lib/appRouters.dart index dddf16fc..6567547a 100644 --- a/star_lock/lib/appRouters.dart +++ b/star_lock/lib/appRouters.dart @@ -306,7 +306,7 @@ abstract class Routers { static const messageListPage = '/MessageListPage'; // 我的-消息 static const supportStaffPage = '/SupportStaffPage'; // 我的-客服 static const valueAddedServicesPage = '/ValueAddedServicesPage'; // 我的-增值服务 - static const abountPage = '/AbountPage'; // 我的-关于 + static const aboutPage = '/AboutPage'; // 我的-关于 static const valueAddedServicesNoteAndEmailDetailPage = '/ValueAddedServicesNoteAndEmailDetailPage'; // 增值服务-短信邮件详情 @@ -747,8 +747,8 @@ abstract class AppRouters { page: () => const ValueAddedServicesListPage(), ), GetPage( - name: Routers.abountPage, - page: () => const AbountPage(), + name: Routers.aboutPage, + page: () => const AboutPage(), ), GetPage( name: Routers.gatewayDetailPage, diff --git a/star_lock/lib/mine/about/about_page.dart b/star_lock/lib/mine/about/about_page.dart index c1ca3d2b..5f1777b9 100644 --- a/star_lock/lib/mine/about/about_page.dart +++ b/star_lock/lib/mine/about/about_page.dart @@ -10,14 +10,14 @@ import '../../tools/titleAppBar.dart'; import '../../translations/trans_lib.dart'; import '../../network/api.dart'; -class AbountPage extends StatefulWidget { - const AbountPage({Key? key}) : super(key: key); +class AboutPage extends StatefulWidget { + const AboutPage({Key? key}) : super(key: key); @override - State createState() => _AbountPageState(); + State createState() => _AboutPageState(); } -class _AbountPageState extends State { +class _AboutPageState extends State { @override Widget build(BuildContext context) { return Scaffold( diff --git a/star_lock/lib/mine/mine/starLockMine_page.dart b/star_lock/lib/mine/mine/starLockMine_page.dart index 01145873..3ee00177 100644 --- a/star_lock/lib/mine/mine/starLockMine_page.dart +++ b/star_lock/lib/mine/mine/starLockMine_page.dart @@ -155,7 +155,7 @@ class _StarLockMinePageState extends State with BaseWidget { mineItem('images/mine/icon_mine_main_about.png', TranslationLoader.lanKeys!.about!.tr, () { Get.back(); - Get.toNamed(Routers.abountPage); + Get.toNamed(Routers.aboutPage); }), ], ), From e970a961e9cd9be6d5dac01bc471503314412bff Mon Sep 17 00:00:00 2001 From: GeJiaXiang <353358601@qq.com> Date: Tue, 23 Jan 2024 17:29:18 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=94=99=E5=88=AB?= =?UTF-8?q?=E5=AD=97=20selet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/lib/appRouters.dart | 42 +++++++++---------- .../lib/login/login/starLock_login_page.dart | 2 +- .../register/starLock_register_page.dart | 4 +- .../seletCountryRegion_page.dart | 8 ++-- .../volumeAuthorizationLock_page.dart | 2 +- .../checkingInAddHolidays_page.dart | 2 +- .../checkingInSetWorkdaySet_page.dart | 14 +++---- ...> checkingInAddStaffSelectKey_entity.dart} | 8 ++-- .../checkingInAddStaff_logic.dart | 8 ++-- .../checkingInAddStaff_page.dart | 14 +++---- .../checkingInAddStaff_state.dart | 4 +- .../massSendElectronicKey_page.dart | 2 +- .../lockUserList/lockUserList_page.dart | 2 +- .../massSendLockGroupCell.dart | 2 +- .../addFingerprintTypeManage_page.dart | 0 .../addFingerprintTypeManage_tabbar.dart | 0 .../addFingerprintType_logic.dart | 0 .../addFingerprintType_page.dart | 0 .../addFingerprintType_state.dart | 0 .../basicInformation_page.dart | 2 +- .../lockGroupList_entity.dart | 0 .../lockSelectGrouping_logic.dart} | 8 ++-- .../lockSelectGrouping_page.dart} | 14 +++---- .../lockSelectGrouping_state.dart} | 6 +-- .../ImportOtherLockData_page.dart | 2 +- .../lockSoundSet/lockSoundSet_page.dart | 12 +++--- .../lcokSet/lockUser/lockUser_page.dart | 2 +- .../markedHouseState_page.dart | 4 +- .../coerceFingerprintList_page.dart | 2 +- .../normallyOpenMode_page.dart | 2 +- .../seletWirelessKeyboard_page.dart | 10 ++--- .../editVideoLog/editVideoLog_page.dart | 4 +- .../editVideoLog/editVideoLog_state.dart | 4 +- .../addLockSelectCountry_logic.dart | 8 ++++ .../addLockSelectCountry_page.dart} | 16 +++---- .../addLockSelectCountry_state.dart} | 4 +- .../addLockSeletCountry_logic.dart | 8 ---- .../gaode/lockAddressGaoDe_page.dart | 2 +- .../seletLockType/seletLockType_page.dart | 8 ++-- .../seletGateway/seletGatewayList_page.dart | 8 ++-- .../seletGatewayType_page.dart | 8 ++-- .../seletGatewayTypeNextTip_page.dart | 12 +++--- .../addAuthorizedAdministrator_page.dart | 4 +- ...ppUnlockNeedMobileNetworkingLock_page.dart | 4 +- .../getDeviceList_page.dart | 2 +- .../authorityManagement/getNameList_page.dart | 2 +- .../groupEditLock/groupEditLock_page.dart | 2 +- .../selectGetewayList_page.dart | 8 ++-- .../selectGetewayList_state.dart | 4 +- .../transferSmartLock_page.dart | 10 ++--- .../transferSmartLock_state.dart | 4 +- ...lueAddedServicesAddEmailTemplate_page.dart | 4 +- .../valueAddedServicesRealName_page.dart | 10 ++--- ...valueAddedServicesAddSMSTemplate_page.dart | 6 +-- star_lock/lib/network/api.dart | 2 +- star_lock/lib/network/api_provider.dart | 4 +- star_lock/lib/network/api_repository.dart | 8 ++-- star_lock/lib/tools/ExpandedListView.dart | 2 +- star_lock/lib/tools/seletImgTool.dart | 4 +- star_lock/lib/tools/showCalendar.dart | 4 +- star_lock/lib/tools/showSeletDateTime.dart | 2 +- star_lock/lib/translations/lanKeyEntity.dart | 24 +++++------ .../Flutter/GeneratedPluginRegistrant.swift | 2 + 63 files changed, 187 insertions(+), 185 deletions(-) rename star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/{checkingInAddStaffSeletKey_entity.dart => checkingInAddStaffSelectKey_entity.dart} (89%) rename star_lock/lib/main/lockDetail/fingerprint/{addFingerprintSeletType => addFingerprintSelectType}/addFingerprintManage/addFingerprintTypeManage_page.dart (100%) rename star_lock/lib/main/lockDetail/fingerprint/{addFingerprintSeletType => addFingerprintSelectType}/addFingerprintManage/addFingerprintTypeManage_tabbar.dart (100%) rename star_lock/lib/main/lockDetail/fingerprint/{addFingerprintSeletType => addFingerprintSelectType}/addFingerprintType_logic.dart (100%) rename star_lock/lib/main/lockDetail/fingerprint/{addFingerprintSeletType => addFingerprintSelectType}/addFingerprintType_page.dart (100%) rename star_lock/lib/main/lockDetail/fingerprint/{addFingerprintSeletType => addFingerprintSelectType}/addFingerprintType_state.dart (100%) rename star_lock/lib/main/lockDetail/lcokSet/basicInformation/{lockSeletGrouping => lockSelectGrouping}/lockGroupList_entity.dart (100%) rename star_lock/lib/main/lockDetail/lcokSet/basicInformation/{lockSeletGrouping/lockSeletGrouping_logic.dart => lockSelectGrouping/lockSelectGrouping_logic.dart} (92%) rename star_lock/lib/main/lockDetail/lcokSet/basicInformation/{lockSeletGrouping/lockSeletGrouping_page.dart => lockSelectGrouping/lockSelectGrouping_page.dart} (88%) rename star_lock/lib/main/lockDetail/lcokSet/basicInformation/{lockSeletGrouping/lockSeletGrouping_state.dart => lockSelectGrouping/lockSelectGrouping_state.dart} (90%) create mode 100644 star_lock/lib/mine/addLock/addLockSelectCountry/addLockSelectCountry_logic.dart rename star_lock/lib/mine/addLock/{addLockSeletCountry/addLockSeletCountry_page.dart => addLockSelectCountry/addLockSelectCountry_page.dart} (92%) rename star_lock/lib/mine/addLock/{addLockSeletCountry/addLockSeletCountry_state.dart => addLockSelectCountry/addLockSelectCountry_state.dart} (87%) delete mode 100644 star_lock/lib/mine/addLock/addLockSeletCountry/addLockSeletCountry_logic.dart diff --git a/star_lock/lib/appRouters.dart b/star_lock/lib/appRouters.dart index 6567547a..469de771 100644 --- a/star_lock/lib/appRouters.dart +++ b/star_lock/lib/appRouters.dart @@ -63,7 +63,7 @@ import 'main/lockDetail/face/addFace/addFace_page.dart'; import 'main/lockDetail/face/addFaceType/addFaceTypeManage/addFaceTypeManage_page.dart'; import 'main/lockDetail/face/faceList/faceList_page.dart'; import 'main/lockDetail/fingerprint/addFingerprint/addFingerprint_page.dart'; -import 'main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintManage/addFingerprintTypeManage_page.dart'; +import 'main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintManage/addFingerprintTypeManage_page.dart'; import 'main/lockDetail/fingerprint/addFingerprintTip/addFingerprintTip_page.dart'; import 'main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart'; import 'main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart'; @@ -71,7 +71,7 @@ import 'main/lockDetail/lcokSet/automaticBlocking/automaticBlocking_page.dart'; import 'main/lockDetail/lcokSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_page.dart'; import 'main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart'; import 'main/lockDetail/lcokSet/basicInformation/editLockName/editLockName_page.dart'; -import 'main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_page.dart'; +import 'main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_page.dart'; import 'main/lockDetail/lcokSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_page.dart'; import 'main/lockDetail/lcokSet/burglarAlarm/burglarAlarm_page.dart'; import 'main/lockDetail/lcokSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart'; @@ -131,7 +131,7 @@ import 'main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dar import 'main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart'; import 'main/lockDetail/passwordKey/passwordKeyManage/passwordKeyManage_page.dart'; import 'main/lockMian/lockMain/lockMain_page.dart'; -import 'mine/addLock/addLockSeletCountry/addLockSeletCountry_page.dart'; +import 'mine/addLock/addLockSelectCountry/addLockSelectCountry_page.dart'; import 'mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart'; import 'mine/addLock/lockAddress/lockAddress/lockAddress_page.dart'; import 'mine/addLock/nearbyLock/nearbyLock_page.dart'; @@ -183,7 +183,7 @@ abstract class Routers { static const initial = '/'; // 加载页 static const starLockMain = '/StarLockMain'; // 首页 static const starLockMinePage = '/StarLockMinePage'; // 我的 - static const seletLockTypePage = '/SeletLockTypePage'; // 选择锁类型 + static const seletLockTypePage = '/SelectLockTypePage'; // 选择锁类型 static const LockMallPage = '/LockMallPage'; // 商城页面 static const addLockPage = '/AddLockPage'; // 选择锁类型 static const nearbyLockPage = '/NearbyLockPage'; // 附近的锁 @@ -230,7 +230,7 @@ abstract class Routers { static const uploadElectricQuantityPage = '/UploadElectricQuantityPage'; // 更新锁电量 static const editLockNamePage = '/EditLockNamePage'; // 修改锁名字 - static const lockSeletGroupingPage = '/LockSeletGroupingPage'; // 锁选择分组 + static const lockSelectGroupingPage = '/LockSelectGroupingPage'; // 锁选择分组 static const groupEditLockPage = '/GroupEditLockPage'; // 编辑锁分组里面的锁 static const adminOpenLockPasswordPage = '/AdminOpenLockPasswordPage'; // 管理员开锁密码 @@ -239,7 +239,7 @@ abstract class Routers { static const addWirelessKeyboardScreenNotLightOnPage = '/AddWirelessKeyboardScreenNotLightOnPage'; // 添加蓝牙键盘屏幕不亮时提示 static const seletWirelessKeyboardPage = - '/SeletWirelessKeyboardPage'; // 选择蓝牙键盘 + '/SelectWirelessKeyboardPage'; // 选择蓝牙键盘 static const doorMagneticPage = '/DoorMagneticPage'; // 门磁列表 static const addDoorMagneticPage = '/AddDoorMagneticPage'; // 添加门磁 static const nearbyDoorMagneticPage = '/NearbyDoorMagneticPage'; // 附近的门磁 @@ -296,10 +296,10 @@ abstract class Routers { static const gatewayDetailPage = '/GatewayDetailPage'; // 我的-网关详情 static const gatewayConnectionLockPage = '/GatewayConnectionLockPage'; // 我的-网关网关链接的锁 - static const seletGatewayTypePage = '/SeletGatewayTypePage'; // 我的-选择网关类型 + static const seletGatewayTypePage = '/SelectGatewayTypePage'; // 我的-选择网关类型 static const seletGatewayTypeNextTipPage = - '/SeletGatewayTypeNextTipPage'; // 我的-选择网关类型下一步 - static const seletGatewayPage = '/SeletGatewayPage'; // 我的-选择网关 + '/SelectGatewayTypeNextTipPage'; // 我的-选择网关类型下一步 + static const seletGatewayPage = '/SelectGatewayPage'; // 我的-选择网关 static const gatewayConfigurationWifiPage = '/GatewayConfigurationWifiPage'; // 我的-网关配置wifi @@ -350,7 +350,7 @@ abstract class Routers { static const starLockRegisterPage = '/StarLockRegisterPage'; // 注册 static const starLockForgetPasswordPage = '/StarLockForgetPasswordPage'; // 忘记密码 - static const seletCountryRegionPage = '/SeletCountryRegionPage'; // 选择国家和地区 + static const seletCountryRegionPage = '/SelectCountryRegionPage'; // 选择国家和地区 static const safetyVerificationPage = '/SafetyVerificationPage'; // 安全验证 static const keyOperationRecordPage = '/keyOperationRecordPage'; //钥匙详情-操作记录 @@ -372,7 +372,7 @@ abstract class Routers { static const webviewShowPage = '/webviewShowPage'; //网页 static const demoModeLockDetailPage = '/DemoModeLockDetailPage'; // 演示模式锁详情页 static const demoModeLockSetPage = '/DemoModeLockSetPage'; // 演示模式锁设置页 - static const addLockSeletCountryPage = '/AddLockSeletCountryPage'; // 演示模式锁设置页 + static const addLockSelectCountryPage = '/AddLockSelectCountryPage'; // 演示模式锁设置页 static const faceUnlockPage = '/faceUnlockPage'; //面容开锁设置 static const motorPowerPage = '/motorPowerPage'; //电机功率设置 static const openDoorDirectionPage = '/openDoorDirectionPage'; //开门方向设置 @@ -436,7 +436,7 @@ abstract class AppRouters { ), GetPage( name: Routers.seletLockTypePage, - page: () => const SeletLockTypePage(), + page: () => const SelectLockTypePage(), ), GetPage( name: Routers.LockMallPage, @@ -552,7 +552,7 @@ abstract class AppRouters { ), GetPage( name: Routers.seletCountryRegionPage, - page: () => const SeletCountryRegionPage(), + page: () => const SelectCountryRegionPage(), ), GetPage( name: Routers.lockSetPage, @@ -571,8 +571,8 @@ abstract class AppRouters { page: () => const EditLockNamePage(), ), GetPage( - name: Routers.lockSeletGroupingPage, - page: () => const LockSeletGroupingPage(), + name: Routers.lockSelectGroupingPage, + page: () => const LockSelectGroupingPage(), ), GetPage( name: Routers.adminOpenLockPasswordPage, @@ -592,7 +592,7 @@ abstract class AppRouters { ), GetPage( name: Routers.seletWirelessKeyboardPage, - page: () => const SeletWirelessKeyboardPage(), + page: () => const SelectWirelessKeyboardPage(), ), GetPage( name: Routers.doorMagneticPage, @@ -760,15 +760,15 @@ abstract class AppRouters { ), GetPage( name: Routers.seletGatewayTypePage, - page: () => const SeletGatewayTypePage(), + page: () => const SelectGatewayTypePage(), ), GetPage( name: Routers.seletGatewayTypeNextTipPage, - page: () => const SeletGatewayTypeNextTipPage(), + page: () => const SelectGatewayTypeNextTipPage(), ), GetPage( name: Routers.seletGatewayPage, - page: () => const SeletGatewayListPage(), + page: () => const SelectGatewayListPage(), ), GetPage( name: Routers.gatewayConfigurationWifiPage, @@ -924,8 +924,8 @@ abstract class AppRouters { name: Routers.demoModeLockDetailPage, page: () => const DemoModeLockDetailPage()), GetPage( - name: Routers.addLockSeletCountryPage, - page: () => const AddLockSeletCountryPage()), + name: Routers.addLockSelectCountryPage, + page: () => const AddLockSelectCountryPage()), GetPage(name: Routers.faceUnlockPage, page: () => const FaceUnlockPage()), GetPage(name: Routers.motorPowerPage, page: () => const MotorPowerPage()), GetPage( diff --git a/star_lock/lib/login/login/starLock_login_page.dart b/star_lock/lib/login/login/starLock_login_page.dart index 0d222bde..01569f7c 100644 --- a/star_lock/lib/login/login/starLock_login_page.dart +++ b/star_lock/lib/login/login/starLock_login_page.dart @@ -90,7 +90,7 @@ class _StarLockLoginPageState extends State { state.agree.value = !state.agree.value; logic.changeAgreeState(); }, - child: Image.asset(state.agree.value ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', width: 30.w, height: 30.w,) + child: Image.asset(state.agree.value ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,) )), SizedBox(width: 15.w,), Flexible( diff --git a/star_lock/lib/login/register/starLock_register_page.dart b/star_lock/lib/login/register/starLock_register_page.dart index f0a87275..96f00b9b 100644 --- a/star_lock/lib/login/register/starLock_register_page.dart +++ b/star_lock/lib/login/register/starLock_register_page.dart @@ -41,7 +41,7 @@ class _StarLockRegisterPageState extends State { body: ListView( padding: EdgeInsets.only(top: 40.h, left: 40.w, right: 40.w), children: [ - topSeletCountryAndRegionWidget(), + topSelectCountryAndRegionWidget(), middleTFWidget(), Obx(() { return SubmitBtn( @@ -65,7 +65,7 @@ class _StarLockRegisterPageState extends State { )); } - Widget topSeletCountryAndRegionWidget() { + Widget topSelectCountryAndRegionWidget() { return Column( children: [ SizedBox(height: 50.h), diff --git a/star_lock/lib/login/seletCountryRegion/seletCountryRegion_page.dart b/star_lock/lib/login/seletCountryRegion/seletCountryRegion_page.dart index 23398d7c..5b0aa532 100644 --- a/star_lock/lib/login/seletCountryRegion/seletCountryRegion_page.dart +++ b/star_lock/lib/login/seletCountryRegion/seletCountryRegion_page.dart @@ -11,14 +11,14 @@ import '../../tools/titleAppBar.dart'; import '../../translations/trans_lib.dart'; import 'common/index.dart'; -class SeletCountryRegionPage extends StatefulWidget { - const SeletCountryRegionPage({Key? key}) : super(key: key); +class SelectCountryRegionPage extends StatefulWidget { + const SelectCountryRegionPage({Key? key}) : super(key: key); @override - State createState() => _SeletCountryRegionPageState(); + State createState() => _SelectCountryRegionPageState(); } -class _SeletCountryRegionPageState extends State { +class _SelectCountryRegionPageState extends State { List countriesList = []; @override diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/volumeAuthorizationLock/volumeAuthorizationLock_page.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/volumeAuthorizationLock/volumeAuthorizationLock_page.dart index 6025bac1..baaaaa87 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/volumeAuthorizationLock/volumeAuthorizationLock_page.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/volumeAuthorizationLock/volumeAuthorizationLock_page.dart @@ -203,7 +203,7 @@ class _VolumeAuthorizationLockPageState CommonItem( leftTitel: TranslationLoader.lanKeys!.lock!.tr, rightTitle: _lockIdList.isEmpty - ? TranslationLoader.lanKeys!.pleaseSelet!.tr + ? TranslationLoader.lanKeys!.pleaseSelect!.tr : _lockIdList.length.toString(), isHaveDirection: true, action: () { diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart index e88f95e0..f7093db9 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart @@ -147,7 +147,7 @@ class _CheckingInAddHolidaysPageState extends State { child: Row( children: [ Image.asset( - 'images/icon_round_unSelet.png', + 'images/icon_round_unSelect.png', width: 40.w, height: 40.w, ), diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart index cdac3263..058e60d0 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart @@ -33,8 +33,8 @@ class _CheckingInSetWorkdaySetState extends State { body: ListView( children: [ topBtnWidget(), - Obx(() => Visibility(visible: state.isCustom.value, child: bottomCustomSeletBtn())), - Obx(() => Visibility(visible: !state.isCustom.value, child: bottomOddOrEvenDaysOffSeletBtn())), + Obx(() => Visibility(visible: state.isCustom.value, child: bottomCustomSelectBtn())), + Obx(() => Visibility(visible: !state.isCustom.value, child: bottomOddOrEvenDaysOffSelectBtn())), SizedBox(height: 50.h,), Container( margin: EdgeInsets.only(left: 20.w, right: 20.w), @@ -113,7 +113,7 @@ class _CheckingInSetWorkdaySetState extends State { ); } - Widget bottomOddOrEvenDaysOffSeletBtn() { + Widget bottomOddOrEvenDaysOffSelectBtn() { return Container( padding: EdgeInsets.only(left: 10.w, right: 10.w), child: Column( @@ -138,7 +138,7 @@ class _CheckingInSetWorkdaySetState extends State { }, child: Row( children: [ - Image.asset(state.isSingledayWeekend.value == 0 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', width: 30.w, height: 30.w,), + Image.asset(state.isSingledayWeekend.value == 0 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), ], ), ) @@ -158,7 +158,7 @@ class _CheckingInSetWorkdaySetState extends State { }, child: Row( children: [ - Image.asset(state.isSingledayWeekend.value == 1 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', width: 30.w, height: 30.w,), + Image.asset(state.isSingledayWeekend.value == 1 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), ], ), ) @@ -168,7 +168,7 @@ class _CheckingInSetWorkdaySetState extends State { ); } - Widget bottomCustomSeletBtn() { + Widget bottomCustomSelectBtn() { return Container( padding: EdgeInsets.only(left: 10.w, right: 10.w), height: 420.h, @@ -224,7 +224,7 @@ class _CheckingInSetWorkdaySetState extends State { }, child: Obx(() => Row( children: [ - Image.asset(state.weekDays.value.contains(index) ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', width: 30.w, height: 30.w,), + Image.asset(state.weekDays.value.contains(index) ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), ], ))) ); diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaffSeletKey_entity.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaffSelectKey_entity.dart similarity index 89% rename from star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaffSeletKey_entity.dart rename to star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaffSelectKey_entity.dart index 5c1e4e40..f153f5f5 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaffSeletKey_entity.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaffSelectKey_entity.dart @@ -1,14 +1,14 @@ -class CheckingInAddStaffSeletKeyEntity { +class CheckingInAddStaffSelectKeyEntity { int? errorCode; String? description; String? errorMsg; List? data; - CheckingInAddStaffSeletKeyEntity( + CheckingInAddStaffSelectKeyEntity( {this.errorCode, this.description, this.errorMsg, this.data}); - CheckingInAddStaffSeletKeyEntity.fromJson(Map json) { + CheckingInAddStaffSelectKeyEntity.fromJson(Map json) { errorCode = json['errorCode']; description = json['description']; errorMsg = json['errorMsg']; @@ -49,4 +49,4 @@ class CheckingInAddStaffKeyEntity { data['staffName'] = staffName; return data; } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_logic.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_logic.dart index 7af0effb..eab2e49a 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_logic.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_logic.dart @@ -4,7 +4,7 @@ import 'package:get/get.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import '../../../../../network/api_repository.dart'; import '../../../../../tools/eventBusEventManage.dart'; -import 'checkingInAddStaffSeletKey_entity.dart'; +import 'checkingInAddStaffSelectKey_entity.dart'; import 'checkingInAddStaff_state.dart'; typedef KeyClickCallback = void Function(List seletKeyList); @@ -78,8 +78,8 @@ class CheckingInAddStaffLogic extends BaseGetXController{ } // 考勤设置添加员工-选择钥匙 1为APP,2为密码,3为卡,4为指纹,返回数据中,attendanceWay分别为用户名、密码、卡号、指纹号 - void addStaffSeletKey(KeyClickCallback kyClickCallback) async{ - var entity = await ApiRepository.to.addStaffSeletKeyData( + void addStaffSelectKey(KeyClickCallback kyClickCallback) async{ + var entity = await ApiRepository.to.addStaffSelectKeyData( companyId: state.companyId.value, type:state.seletPrintingMethodType.value, ); @@ -212,4 +212,4 @@ class CheckingInAddStaffLogic extends BaseGetXController{ _getNumberEvent!.cancel(); } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_page.dart index a7b4cdf4..f0dd9d41 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_page.dart @@ -49,7 +49,7 @@ class _CheckingInAddStaffPageState extends State { isHaveDirection: true, action: () { var list = ["APP", "密码", "卡", "指纹"]; - _showSeletClockInType(list, "1"); + _showSelectClockInType(list, "1"); })), SizedBox( height: 10.h, @@ -143,7 +143,7 @@ class _CheckingInAddStaffPageState extends State { style: ElevatedButton.styleFrom( backgroundColor: AppColors.mainColor, ), - child: Text(addStaffSeletKeyType(), + child: Text(addStaffSelectKeyType(), style: TextStyle( color: Colors.white, fontSize: 22.sp)), onPressed: () async { @@ -210,12 +210,12 @@ class _CheckingInAddStaffPageState extends State { isHaveLine: false, isHaveDirection: true, action: () { - logic.addStaffSeletKey((v) { + logic.addStaffSelectKey((v) { var list = []; for (var element in v) { list.add(element.attendanceWay); } - _showSeletClockInType(list, "2"); + _showSelectClockInType(list, "2"); }); }), )), @@ -279,7 +279,7 @@ class _CheckingInAddStaffPageState extends State { } // type 1 打卡方式 2选择钥匙 - void _showSeletClockInType(List list, String type) { + void _showSelectClockInType(List list, String type) { ShowBottomSheetTool().showSingleRowPicker( //上下文 context, @@ -317,7 +317,7 @@ class _CheckingInAddStaffPageState extends State { Image.asset( appUnHaveAccount ? 'images/icon_round_selet.png' - : 'images/icon_round_unSelet.png', + : 'images/icon_round_unSelect.png', width: 26.w, height: 26.w, ), @@ -373,7 +373,7 @@ class _CheckingInAddStaffPageState extends State { return title; } - String addStaffSeletKeyType() { + String addStaffSelectKeyType() { String title = ""; switch (int.parse(state.seletPrintingMethodType.value)) { case 1: diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_state.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_state.dart index d342c1ae..3232f61d 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_state.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_state.dart @@ -4,7 +4,7 @@ import 'package:get/get.dart'; import '../../../../lockMian/entity/lockListInfo_entity.dart'; import '../checkingInSetStaffList/checkingInStaffList_entity.dart'; -import 'checkingInAddStaffSeletKey_entity.dart'; +import 'checkingInAddStaffSelectKey_entity.dart'; class CheckingInAddStaffState{ final getKeyInfosData = LockListInfoItemEntity().obs; @@ -62,4 +62,4 @@ class CheckingInAddStaffState{ } } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey_page.dart b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey_page.dart index f7a68770..31fe9026 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey_page.dart @@ -260,7 +260,7 @@ class _MassSendElectronicKeyPageState extends State { CommonItem( leftTitel: TranslationLoader.lanKeys!.lock!.tr, rightTitle: _lockIdList.isEmpty - ? TranslationLoader.lanKeys!.pleaseSelet!.tr + ? TranslationLoader.lanKeys!.pleaseSelect!.tr : _lockIdList.length.toString(), isHaveDirection: true, action: () { diff --git a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_page.dart b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_page.dart index 46738132..75f6b599 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_page.dart @@ -202,7 +202,7 @@ class _LockUserListPageState extends State { child: Image.asset( itemData.isCheck! ? 'images/icon_round_selet.png' - : 'images/icon_round_unSelet.png', + : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, )), diff --git a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupCell.dart b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupCell.dart index b3240f85..a0d4a2bb 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupCell.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupCell.dart @@ -67,7 +67,7 @@ class massSendLockGroupCell extends StatelessWidget { Image.asset( itemData.isChecked ? "images/icon_round_selet.png" - : "images/icon_round_unSelet.png", + : "images/icon_round_unSelect.png", width: 30.w, height: 30.w, ), diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintManage/addFingerprintTypeManage_page.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintManage/addFingerprintTypeManage_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintManage/addFingerprintTypeManage_page.dart rename to star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintManage/addFingerprintTypeManage_page.dart diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintManage/addFingerprintTypeManage_tabbar.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintManage/addFingerprintTypeManage_tabbar.dart similarity index 100% rename from star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintManage/addFingerprintTypeManage_tabbar.dart rename to star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintManage/addFingerprintTypeManage_tabbar.dart diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintType_logic.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintType_logic.dart rename to star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_logic.dart diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintType_page.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintType_page.dart rename to star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_page.dart diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintType_state.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintType_state.dart rename to star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart index 51de02dc..e7dd398c 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart @@ -97,7 +97,7 @@ class _BasicInformationPageState extends State { isHaveLine: true, isHaveDirection: true, action: () async { - Get.toNamed(Routers.lockSeletGroupingPage, arguments: { + Get.toNamed(Routers.lockSelectGroupingPage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value })! .then((val) { diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockGroupList_entity.dart b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockGroupList_entity.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockGroupList_entity.dart rename to star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockGroupList_entity.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_logic.dart b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_logic.dart similarity index 92% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_logic.dart rename to star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_logic.dart index 6d9401f7..3921368b 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_logic.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_logic.dart @@ -3,10 +3,10 @@ import '../../../../../network/api_repository.dart'; import '../../../../../tools/baseGetXController.dart'; import '../../../../../tools/eventBusEventManage.dart'; import '../../../electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; -import 'lockSeletGrouping_state.dart'; +import 'lockSelectGrouping_state.dart'; -class LockSeletGroupingLogic extends BaseGetXController { - final LockSeletGroupingState state = LockSeletGroupingState(); +class LockSelectGroupingLogic extends BaseGetXController { + final LockSelectGroupingState state = LockSelectGroupingState(); //创建锁分组请求 Future addLockGroupRequest() async { @@ -64,4 +64,4 @@ class LockSeletGroupingLogic extends BaseGetXController { // TODO: implement onClose } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_page.dart b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_page.dart similarity index 88% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_page.dart rename to star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_page.dart index a0480e27..667779de 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_page.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_page.dart @@ -10,18 +10,18 @@ import '../../../../../tools/noData.dart'; import '../../../../../tools/submitBtn.dart'; import '../../../../../tools/titleAppBar.dart'; import '../../../../../translations/trans_lib.dart'; -import 'lockSeletGrouping_logic.dart'; +import 'lockSelectGrouping_logic.dart'; -class LockSeletGroupingPage extends StatefulWidget { - const LockSeletGroupingPage({Key? key}) : super(key: key); +class LockSelectGroupingPage extends StatefulWidget { + const LockSelectGroupingPage({Key? key}) : super(key: key); @override - State createState() => _LockSeletGroupingPageState(); + State createState() => _LockSelectGroupingPageState(); } -class _LockSeletGroupingPageState extends State { - final logic = Get.put(LockSeletGroupingLogic()); - final state = Get.find().state; +class _LockSelectGroupingPageState extends State { + final logic = Get.put(LockSelectGroupingLogic()); + final state = Get.find().state; @override Widget build(BuildContext context) { diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_state.dart b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_state.dart similarity index 90% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_state.dart rename to star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_state.dart index 479a01cd..d7554f96 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_state.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_state.dart @@ -6,16 +6,16 @@ import 'package:get/get.dart'; import '../../../electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; import '../../lockSet/lockSetInfo_entity.dart'; -class LockSeletGroupingState { +class LockSelectGroupingState { var lockSetInfoData = LockSetInfoData().obs; var lockBasicInfo = LockBasicInfo().obs; var groupList = [].obs; final TextEditingController changeNameController = TextEditingController(); - LockSeletGroupingState() { + LockSelectGroupingState() { var map = Get.arguments; lockSetInfoData.value = map["lockSetInfoData"]; lockBasicInfo.value = lockSetInfoData.value.lockBasicInfo!; } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/importOtherLockData/ImportOtherLockData_page.dart b/star_lock/lib/main/lockDetail/lcokSet/importOtherLockData/ImportOtherLockData_page.dart index 5b4f6329..faead0db 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/importOtherLockData/ImportOtherLockData_page.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/importOtherLockData/ImportOtherLockData_page.dart @@ -105,7 +105,7 @@ class _ImportOtherLockDataPageState extends State { return ListView.separated( itemCount: 2, itemBuilder: (c, index) { - return _electronicKeyItem('images/icon_round_unSelet.png', "张三", + return _electronicKeyItem('images/icon_round_unSelect.png', "张三", "2023.6.21 11.15", "2023.6.21 11.15", index,() { // Navigator.pushNamed(context, Routers.electronicKeyDetailPage); }); diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockSoundSet/lockSoundSet_page.dart b/star_lock/lib/main/lockDetail/lcokSet/lockSoundSet/lockSoundSet_page.dart index 718fc307..957d6b3e 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/lockSoundSet/lockSoundSet_page.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/lockSoundSet/lockSoundSet_page.dart @@ -70,7 +70,7 @@ class _LockSoundSetPageState extends State with RouteAware { children: [ CommonItem( leftTitel: TranslationLoader - .lanKeys!.pleaseSeletLockVolume!.tr, + .lanKeys!.pleaseSelectLockVolume!.tr, rightTitle: "", isHaveLine: true), CommonItem( @@ -87,7 +87,7 @@ class _LockSoundSetPageState extends State with RouteAware { child: Row( children: [ Image.asset( - state.lockSoundLevel.value == 1 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', + state.lockSoundLevel.value == 1 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -108,7 +108,7 @@ class _LockSoundSetPageState extends State with RouteAware { child: Row( children: [ Image.asset( - state.lockSoundLevel.value == 2 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', + state.lockSoundLevel.value == 2 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -129,7 +129,7 @@ class _LockSoundSetPageState extends State with RouteAware { child: Row( children: [ Image.asset( - state.lockSoundLevel.value == 3 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', + state.lockSoundLevel.value == 3 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -150,7 +150,7 @@ class _LockSoundSetPageState extends State with RouteAware { child: Row( children: [ Image.asset( - state.lockSoundLevel.value == 4 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', + state.lockSoundLevel.value == 4 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -171,7 +171,7 @@ class _LockSoundSetPageState extends State with RouteAware { child: Row( children: [ Image.asset( - state.lockSoundLevel.value == 5 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', + state.lockSoundLevel.value == 5 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockUser/lockUser_page.dart b/star_lock/lib/main/lockDetail/lcokSet/lockUser/lockUser_page.dart index d41f1087..20adf3bc 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/lockUser/lockUser_page.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/lockUser/lockUser_page.dart @@ -157,7 +157,7 @@ class _LockUserPageState extends State { Obx(() => Image.asset( state.isCheck.value == true ? 'images/icon_round_selet.png' - : 'images/icon_round_unSelet.png', + : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, )), diff --git a/star_lock/lib/main/lockDetail/lcokSet/markedHouseState/markedHouseState_page.dart b/star_lock/lib/main/lockDetail/lcokSet/markedHouseState/markedHouseState_page.dart index 10224bf2..bcbc7f4c 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/markedHouseState/markedHouseState_page.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/markedHouseState/markedHouseState_page.dart @@ -44,7 +44,7 @@ class _MarkedHouseStatePageState extends State { child: Row( children: [ Image.asset( - state.roomStatus.value == 0 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', + state.roomStatus.value == 0 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -65,7 +65,7 @@ class _MarkedHouseStatePageState extends State { child: Row( children: [ Image.asset( - state.roomStatus.value == 1 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', + state.roomStatus.value == 1 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart b/star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart index 1e7ad2e2..97ae337c 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart @@ -159,7 +159,7 @@ class _CoerceFingerprintListPageState extends State { Obx(() => Image.asset( state.isCheck.value == true ? 'images/icon_round_selet.png' - : 'images/icon_round_unSelet.png', + : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, )), diff --git a/star_lock/lib/main/lockDetail/lcokSet/normallyOpenMode/normallyOpenMode_page.dart b/star_lock/lib/main/lockDetail/lcokSet/normallyOpenMode/normallyOpenMode_page.dart index 9fd3bed0..22971a8e 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/normallyOpenMode/normallyOpenMode_page.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/normallyOpenMode/normallyOpenMode_page.dart @@ -254,7 +254,7 @@ class _NormallyOpenModePageState extends State with RouteA Image.asset( state.isAllDay.value == 1 ? 'images/icon_round_selet.png' - : 'images/icon_round_unSelet.png', + : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), diff --git a/star_lock/lib/main/lockDetail/lcokSet/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart b/star_lock/lib/main/lockDetail/lcokSet/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart index e283a5c4..476dbeae 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart @@ -7,15 +7,15 @@ import '../../../../../app_settings/app_colors.dart'; import '../../../../../tools/titleAppBar.dart'; import '../../../../../translations/trans_lib.dart'; -class SeletWirelessKeyboardPage extends StatefulWidget { - const SeletWirelessKeyboardPage({Key? key}) : super(key: key); +class SelectWirelessKeyboardPage extends StatefulWidget { + const SelectWirelessKeyboardPage({Key? key}) : super(key: key); @override - State createState() => - _SeletWirelessKeyboardPageState(); + State createState() => + _SelectWirelessKeyboardPageState(); } -class _SeletWirelessKeyboardPageState extends State { +class _SelectWirelessKeyboardPageState extends State { List dataList = []; @override Widget build(BuildContext context) { diff --git a/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_page.dart b/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_page.dart index 3fb69069..a2f4a345 100644 --- a/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_page.dart +++ b/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_page.dart @@ -33,7 +33,7 @@ class _EditVideoLogPageState extends State { style: TextStyle(color: Colors.white, fontSize: 24.sp), ), onPressed: () async { - state.isSeletAll.value = !state.isSeletAll.value; + state.isSelectAll.value = !state.isSelectAll.value; }, ), ], @@ -115,7 +115,7 @@ class _EditVideoLogPageState extends State { onTap: (){ }, - child: Image(width: 40.w, height: 40.w, image: state.isSeletAll.value ? const AssetImage("images/icon_round_selet.png") : const AssetImage("images/icon_round_unSelet.png")) + child: Image(width: 40.w, height: 40.w, image: state.isSelectAll.value ? const AssetImage("images/icon_round_selet.png") : const AssetImage("images/icon_round_unSelect.png")) ) ), ) diff --git a/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_state.dart b/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_state.dart index a5f8f4f5..270020a6 100644 --- a/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_state.dart +++ b/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_state.dart @@ -5,6 +5,6 @@ import 'package:get/get.dart'; class EditVideoLogState{ var seletVideoLog = 0.obs; - var isSeletAll = false.obs; + var isSelectAll = false.obs; -} \ No newline at end of file +} diff --git a/star_lock/lib/mine/addLock/addLockSelectCountry/addLockSelectCountry_logic.dart b/star_lock/lib/mine/addLock/addLockSelectCountry/addLockSelectCountry_logic.dart new file mode 100644 index 00000000..ffc9f8b6 --- /dev/null +++ b/star_lock/lib/mine/addLock/addLockSelectCountry/addLockSelectCountry_logic.dart @@ -0,0 +1,8 @@ + +import '../../../tools/baseGetXController.dart'; +import 'addLockSelectCountry_state.dart'; + +class AddLockSelectCountryLogic extends BaseGetXController { + AddLockSelectCountryState state = AddLockSelectCountryState(); + +} diff --git a/star_lock/lib/mine/addLock/addLockSeletCountry/addLockSeletCountry_page.dart b/star_lock/lib/mine/addLock/addLockSelectCountry/addLockSelectCountry_page.dart similarity index 92% rename from star_lock/lib/mine/addLock/addLockSeletCountry/addLockSeletCountry_page.dart rename to star_lock/lib/mine/addLock/addLockSelectCountry/addLockSelectCountry_page.dart index 9fabbe5f..cc7e599b 100644 --- a/star_lock/lib/mine/addLock/addLockSeletCountry/addLockSeletCountry_page.dart +++ b/star_lock/lib/mine/addLock/addLockSelectCountry/addLockSelectCountry_page.dart @@ -13,18 +13,18 @@ import '../../../network/api_repository.dart'; import '../../../tools/commonItem.dart'; import '../../../tools/titleAppBar.dart'; import '../../../translations/trans_lib.dart'; -import 'addLockSeletCountry_logic.dart'; +import 'addLockSelectCountry_logic.dart'; -class AddLockSeletCountryPage extends StatefulWidget { - const AddLockSeletCountryPage({Key? key}) : super(key: key); +class AddLockSelectCountryPage extends StatefulWidget { + const AddLockSelectCountryPage({Key? key}) : super(key: key); @override - State createState() => _AddLockSeletCountryPageState(); + State createState() => _AddLockSelectCountryPageState(); } -class _AddLockSeletCountryPageState extends State { - final logic = Get.put(AddLockSeletCountryLogic()); - final state = Get.find().state; +class _AddLockSelectCountryPageState extends State { + final logic = Get.put(AddLockSelectCountryLogic()); + final state = Get.find().state; List countriesList = []; int seletindex = 10000; @@ -104,7 +104,7 @@ class _AddLockSeletCountryPageState extends State { }, rightWidget: Row( children: [ - Image.asset((seletindex == index) ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', width: 30.w, height: 30.w,), + Image.asset((seletindex == index) ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), ], ) ); diff --git a/star_lock/lib/mine/addLock/addLockSeletCountry/addLockSeletCountry_state.dart b/star_lock/lib/mine/addLock/addLockSelectCountry/addLockSelectCountry_state.dart similarity index 87% rename from star_lock/lib/mine/addLock/addLockSeletCountry/addLockSeletCountry_state.dart rename to star_lock/lib/mine/addLock/addLockSelectCountry/addLockSelectCountry_state.dart index e04acc2d..92f0bd30 100644 --- a/star_lock/lib/mine/addLock/addLockSeletCountry/addLockSeletCountry_state.dart +++ b/star_lock/lib/mine/addLock/addLockSelectCountry/addLockSelectCountry_state.dart @@ -1,14 +1,14 @@ import 'package:get/get.dart'; -class AddLockSeletCountryState{ +class AddLockSelectCountryState{ var pwdTimestamp= 0.obs; var lockInfo = {}; var featureValue = ''; var featureSettingValue = ''; var featureSettingParams = []; - AddLockSeletCountryState() { + AddLockSelectCountryState() { Map map = Get.arguments; pwdTimestamp.value = map["pwdTimestamp"]; lockInfo = map["lockInfo"]; diff --git a/star_lock/lib/mine/addLock/addLockSeletCountry/addLockSeletCountry_logic.dart b/star_lock/lib/mine/addLock/addLockSeletCountry/addLockSeletCountry_logic.dart deleted file mode 100644 index 1a85f750..00000000 --- a/star_lock/lib/mine/addLock/addLockSeletCountry/addLockSeletCountry_logic.dart +++ /dev/null @@ -1,8 +0,0 @@ - -import '../../../tools/baseGetXController.dart'; -import 'addLockSeletCountry_state.dart'; - -class AddLockSeletCountryLogic extends BaseGetXController { - AddLockSeletCountryState state = AddLockSeletCountryState(); - -} \ No newline at end of file diff --git a/star_lock/lib/mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart b/star_lock/lib/mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart index f63ec119..b385a5b0 100644 --- a/star_lock/lib/mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart +++ b/star_lock/lib/mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart @@ -245,7 +245,7 @@ class _LockAddressGaoDePageState extends State with RouteA style: TextStyle(color: Colors.black, fontSize: 24.sp), ), onPressed: () { - Get.toNamed(Routers.addLockSeletCountryPage, arguments: { + Get.toNamed(Routers.addLockSelectCountryPage, arguments: { "addressInfo": {}, "pwdTimestamp": state.pwdTimestamp.value, "lockInfo": state.lockInfo, diff --git a/star_lock/lib/mine/addLock/seletLockType/seletLockType_page.dart b/star_lock/lib/mine/addLock/seletLockType/seletLockType_page.dart index 5375ae7a..1c7f2bf9 100644 --- a/star_lock/lib/mine/addLock/seletLockType/seletLockType_page.dart +++ b/star_lock/lib/mine/addLock/seletLockType/seletLockType_page.dart @@ -11,14 +11,14 @@ import '../../../baseWidget.dart'; import '../../../tools/titleAppBar.dart'; import '../../../translations/trans_lib.dart'; -class SeletLockTypePage extends StatefulWidget { - const SeletLockTypePage({Key? key}) : super(key: key); +class SelectLockTypePage extends StatefulWidget { + const SelectLockTypePage({Key? key}) : super(key: key); @override - State createState() => _SeletLockTypePageState(); + State createState() => _SelectLockTypePageState(); } -class _SeletLockTypePageState extends State with BaseWidget { +class _SelectLockTypePageState extends State with BaseWidget { @override Widget build(BuildContext context) { return Scaffold( diff --git a/star_lock/lib/mine/gateway/addGateway/seletGateway/seletGatewayList_page.dart b/star_lock/lib/mine/gateway/addGateway/seletGateway/seletGatewayList_page.dart index b027e313..d04ae881 100644 --- a/star_lock/lib/mine/gateway/addGateway/seletGateway/seletGatewayList_page.dart +++ b/star_lock/lib/mine/gateway/addGateway/seletGateway/seletGatewayList_page.dart @@ -7,14 +7,14 @@ import '../../../../app_settings/app_colors.dart'; import '../../../../tools/titleAppBar.dart'; import '../../../../translations/trans_lib.dart'; -class SeletGatewayListPage extends StatefulWidget { - const SeletGatewayListPage({Key? key}) : super(key: key); +class SelectGatewayListPage extends StatefulWidget { + const SelectGatewayListPage({Key? key}) : super(key: key); @override - State createState() => _SeletGatewayListPageState(); + State createState() => _SelectGatewayListPageState(); } -class _SeletGatewayListPageState extends State { +class _SelectGatewayListPageState extends State { @override Widget build(BuildContext context) { return Scaffold( diff --git a/star_lock/lib/mine/gateway/addGateway/seletGatewayType/seletGatewayType_page.dart b/star_lock/lib/mine/gateway/addGateway/seletGatewayType/seletGatewayType_page.dart index a2001929..19285235 100644 --- a/star_lock/lib/mine/gateway/addGateway/seletGatewayType/seletGatewayType_page.dart +++ b/star_lock/lib/mine/gateway/addGateway/seletGatewayType/seletGatewayType_page.dart @@ -7,14 +7,14 @@ import '../../../../app_settings/app_colors.dart'; import '../../../../tools/titleAppBar.dart'; import '../../../../translations/trans_lib.dart'; -class SeletGatewayTypePage extends StatefulWidget { - const SeletGatewayTypePage({Key? key}) : super(key: key); +class SelectGatewayTypePage extends StatefulWidget { + const SelectGatewayTypePage({Key? key}) : super(key: key); @override - State createState() => _SeletGatewayTypePageState(); + State createState() => _SelectGatewayTypePageState(); } -class _SeletGatewayTypePageState extends State { +class _SelectGatewayTypePageState extends State { @override Widget build(BuildContext context) { return Scaffold( diff --git a/star_lock/lib/mine/gateway/addGateway/seletGatewayTypeNextTip/seletGatewayTypeNextTip_page.dart b/star_lock/lib/mine/gateway/addGateway/seletGatewayTypeNextTip/seletGatewayTypeNextTip_page.dart index 7a414682..7518d3b5 100644 --- a/star_lock/lib/mine/gateway/addGateway/seletGatewayTypeNextTip/seletGatewayTypeNextTip_page.dart +++ b/star_lock/lib/mine/gateway/addGateway/seletGatewayTypeNextTip/seletGatewayTypeNextTip_page.dart @@ -8,16 +8,16 @@ import '../../../../tools/submitBtn.dart'; import '../../../../tools/titleAppBar.dart'; import '../../../../translations/trans_lib.dart'; -class SeletGatewayTypeNextTipPage extends StatefulWidget { - const SeletGatewayTypeNextTipPage({Key? key}) : super(key: key); +class SelectGatewayTypeNextTipPage extends StatefulWidget { + const SelectGatewayTypeNextTipPage({Key? key}) : super(key: key); @override - State createState() => - _SeletGatewayTypeNextTipPageState(); + State createState() => + _SelectGatewayTypeNextTipPageState(); } -class _SeletGatewayTypeNextTipPageState - extends State { +class _SelectGatewayTypeNextTipPageState + extends State { @override Widget build(BuildContext context) { return Scaffold( diff --git a/star_lock/lib/mine/mineSet/addAuthorizedAdministrator/addAuthorizedAdministrator_page.dart b/star_lock/lib/mine/mineSet/addAuthorizedAdministrator/addAuthorizedAdministrator_page.dart index edd5b8fb..c5ee01be 100644 --- a/star_lock/lib/mine/mineSet/addAuthorizedAdministrator/addAuthorizedAdministrator_page.dart +++ b/star_lock/lib/mine/mineSet/addAuthorizedAdministrator/addAuthorizedAdministrator_page.dart @@ -134,7 +134,7 @@ class _AddAuthorizedAdministratorPageState extends State Row( children: [ Image.asset( - state.isCheckAll.value ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', + state.isCheckAll.value ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -157,7 +157,7 @@ class _APPUnlockNeedMobileNetworkingLockPageState extends State { ), Image.asset( isNameSelect == false - ? 'images/icon_round_unSelet.png' + ? 'images/icon_round_unSelect.png' : 'images/icon_round_selet.png', width: 30.sp, height: 30.sp, diff --git a/star_lock/lib/mine/mineSet/authorityManagement/getNameList_page.dart b/star_lock/lib/mine/mineSet/authorityManagement/getNameList_page.dart index 8dd83f30..d5078fa1 100644 --- a/star_lock/lib/mine/mineSet/authorityManagement/getNameList_page.dart +++ b/star_lock/lib/mine/mineSet/authorityManagement/getNameList_page.dart @@ -117,7 +117,7 @@ class _GetNameListPageState extends State { )), Image.asset( isNameSelect == false - ? 'images/icon_round_unSelet.png' + ? 'images/icon_round_unSelect.png' : 'images/icon_round_selet.png', width: 30.sp, height: 30.sp, diff --git a/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_page.dart b/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_page.dart index cc1bd86c..cac0f902 100644 --- a/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_page.dart +++ b/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_page.dart @@ -98,7 +98,7 @@ class _GroupEditLockPageState extends State { child: Image.asset( itemData.isChecked ? 'images/icon_round_selet.png' - : 'images/icon_round_unSelet.png', + : 'images/icon_round_unSelect.png', width: 35.w, height: 35.w, ), diff --git a/star_lock/lib/mine/mineSet/transferGateway/selectGetewayList_page.dart b/star_lock/lib/mine/mineSet/transferGateway/selectGetewayList_page.dart index d59b9f82..3d8fa6ec 100644 --- a/star_lock/lib/mine/mineSet/transferGateway/selectGetewayList_page.dart +++ b/star_lock/lib/mine/mineSet/transferGateway/selectGetewayList_page.dart @@ -34,11 +34,11 @@ class _SelectGetewayListPageState extends State { onPressed: () { setState(() { for (var element in state.getewayListData.value) { - if(state.isSeletAll == true){ - state.isSeletAll = false; + if(state.isSelectAll == true){ + state.isSelectAll = false; element.selet = 0; }else{ - state.isSeletAll = true; + state.isSelectAll = true; element.selet = 1; } } @@ -105,7 +105,7 @@ class _SelectGetewayListPageState extends State { ), GestureDetector( child: Image.asset( - (getewayItemData.selet == 1) ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', + (getewayItemData.selet == 1) ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), diff --git a/star_lock/lib/mine/mineSet/transferGateway/selectGetewayList_state.dart b/star_lock/lib/mine/mineSet/transferGateway/selectGetewayList_state.dart index ca418a08..45a4ea5c 100644 --- a/star_lock/lib/mine/mineSet/transferGateway/selectGetewayList_state.dart +++ b/star_lock/lib/mine/mineSet/transferGateway/selectGetewayList_state.dart @@ -7,5 +7,5 @@ import 'selectGetewayList_entity.dart'; class SelectGetewayListState{ var getewayListData = [].obs; final TextEditingController searchController = TextEditingController(); - bool isSeletAll = false; -} \ No newline at end of file + bool isSelectAll = false; +} diff --git a/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_page.dart b/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_page.dart index 1e2296a3..fc94902f 100644 --- a/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_page.dart +++ b/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_page.dart @@ -34,17 +34,17 @@ class _TransferSmartLockPageState extends State { onPressed: () { setState(() { for (var element in state.transferSmartLockListData.value) { - if(state.isSeletAll == true){ - state.isSeletAll = false; + if(state.isSelectAll == true){ + state.isSelectAll = false; element.selet = 0; }else{ - state.isSeletAll = true; + state.isSelectAll = true; element.selet = 1; } } }); }, - child: Text(state.isSeletAll == true ? TranslationLoader.lanKeys!.checkAll!.tr : TranslationLoader.lanKeys!.cancel!.tr, style: TextStyle(color: Colors.white, fontSize: 24.sp))) + child: Text(state.isSelectAll == true ? TranslationLoader.lanKeys!.checkAll!.tr : TranslationLoader.lanKeys!.cancel!.tr, style: TextStyle(color: Colors.white, fontSize: 24.sp))) ], ), body: Column( @@ -149,7 +149,7 @@ class _TransferSmartLockPageState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox(width: 20.w), - Image.asset((transferSmartLockItemData.selet == 1) ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png', width: 30.w, height: 30.w), + Image.asset((transferSmartLockItemData.selet == 1) ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w), SizedBox(width: 16.w), Image.asset('images/icon_lockGroup_item.png', width: 50.h, height: 50.h, fit: BoxFit.fill), SizedBox(width: 10.w), diff --git a/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_state.dart b/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_state.dart index fb777983..bd6670d8 100644 --- a/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_state.dart +++ b/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_state.dart @@ -7,5 +7,5 @@ import 'transferSmartLock_entity.dart'; class TransferSmartLockState{ var transferSmartLockListData = [].obs; final TextEditingController searchController = TextEditingController(); - bool isSeletAll = false; -} \ No newline at end of file + bool isSelectAll = false; +} diff --git a/star_lock/lib/mine/valueAddedServices/valueAddedServicesEmailTemplate/valueAddedServicesAddEmailTemplate/valueAddedServicesAddEmailTemplate_page.dart b/star_lock/lib/mine/valueAddedServices/valueAddedServicesEmailTemplate/valueAddedServicesAddEmailTemplate/valueAddedServicesAddEmailTemplate_page.dart index aec6c818..1102058a 100644 --- a/star_lock/lib/mine/valueAddedServices/valueAddedServicesEmailTemplate/valueAddedServicesAddEmailTemplate/valueAddedServicesAddEmailTemplate_page.dart +++ b/star_lock/lib/mine/valueAddedServices/valueAddedServicesEmailTemplate/valueAddedServicesAddEmailTemplate/valueAddedServicesAddEmailTemplate_page.dart @@ -151,7 +151,7 @@ class _ValueAddedServicesAddEmailTemplatePageState rightTitle: TranslationLoader.lanKeys!.password!.tr, isHaveLine: false, action: () { - _showSeletTemplateType(); + _showSelectTemplateType(); }), ], ); @@ -306,7 +306,7 @@ class _ValueAddedServicesAddEmailTemplatePageState ); } - void _showSeletTemplateType() { + void _showSelectTemplateType() { var list = [ TranslationLoader.lanKeys!.electronicKey!.tr, TranslationLoader.lanKeys!.password!.tr diff --git a/star_lock/lib/mine/valueAddedServices/valueAddedServicesRealName/valueAddedServicesRealName_page.dart b/star_lock/lib/mine/valueAddedServices/valueAddedServicesRealName/valueAddedServicesRealName_page.dart index 5deb473b..5a5c495b 100644 --- a/star_lock/lib/mine/valueAddedServices/valueAddedServicesRealName/valueAddedServicesRealName_page.dart +++ b/star_lock/lib/mine/valueAddedServices/valueAddedServicesRealName/valueAddedServicesRealName_page.dart @@ -125,7 +125,7 @@ class _ValueAddedServicesRealNamePageState padding: EdgeInsets.only(top: 20.h, bottom: 20.h, left: 30.w), child: Text( TranslationLoader - .lanKeys!.buyRealNameSeletYouWantBuyTip!.tr, + .lanKeys!.buyRealNameSelectYouWantBuyTip!.tr, style: TextStyle(fontSize: 24.sp, fontWeight: FontWeight.w600), )), @@ -142,7 +142,7 @@ class _ValueAddedServicesRealNamePageState child: Row( children: [ Image.asset( - 'images/icon_round_unSelet.png', + 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -160,7 +160,7 @@ class _ValueAddedServicesRealNamePageState child: Row( children: [ Image.asset( - 'images/icon_round_unSelet.png', + 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -178,7 +178,7 @@ class _ValueAddedServicesRealNamePageState child: Row( children: [ Image.asset( - 'images/icon_round_unSelet.png', + 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -196,7 +196,7 @@ class _ValueAddedServicesRealNamePageState child: Row( children: [ Image.asset( - 'images/icon_round_unSelet.png', + 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), diff --git a/star_lock/lib/mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesAddSMSTemplate/valueAddedServicesAddSMSTemplate_page.dart b/star_lock/lib/mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesAddSMSTemplate/valueAddedServicesAddSMSTemplate_page.dart index e91ec221..09b5c7b7 100644 --- a/star_lock/lib/mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesAddSMSTemplate/valueAddedServicesAddSMSTemplate_page.dart +++ b/star_lock/lib/mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesAddSMSTemplate/valueAddedServicesAddSMSTemplate_page.dart @@ -124,7 +124,7 @@ class _ValueAddedServicesAddSMSTemplatePageState rightTitle: TranslationLoader.lanKeys!.password!.tr, isHaveLine: false, action: () { - _showSeletTemplateType(); + _showSelectTemplateType(); }), ], ); @@ -250,7 +250,7 @@ class _ValueAddedServicesAddSMSTemplatePageState child: Row( children: [ Image.asset( - 'images/icon_round_unSelet.png', + 'images/icon_round_unSelect.png', width: 26.w, height: 26.w, ), @@ -466,7 +466,7 @@ class _ValueAddedServicesAddSMSTemplatePageState ); } - void _showSeletTemplateType() { + void _showSelectTemplateType() { var list = [ TranslationLoader.lanKeys!.electronicKey!.tr, TranslationLoader.lanKeys!.password!.tr diff --git a/star_lock/lib/network/api.dart b/star_lock/lib/network/api.dart index 8387c18e..f1d52ef7 100644 --- a/star_lock/lib/network/api.dart +++ b/star_lock/lib/network/api.dart @@ -88,7 +88,7 @@ abstract class Api { final String getStaffListURL = '/staff/list'; // 获取员工列表 final String addStaffURL = '/staff/add'; // 添加员工 final String editStaffURL = '/staff/update'; // 编辑员工 - final String addStaffSeletKeyURL = '/staff/attendanceList'; // 考勤设置添加员工-选择钥匙 + final String addStaffSelectKeyURL = '/staff/attendanceList'; // 考勤设置添加员工-选择钥匙 final String addHolidaysURL = '/vacation/add'; // 添加假期 final String holidaysListURL = '/vacation/list'; // 假期列表 final String holidaysDeleteURL = '/vacation/delete'; // 假期删除 diff --git a/star_lock/lib/network/api_provider.dart b/star_lock/lib/network/api_provider.dart index 6ec68b45..449a75e6 100644 --- a/star_lock/lib/network/api_provider.dart +++ b/star_lock/lib/network/api_provider.dart @@ -807,8 +807,8 @@ class ApiProvider extends BaseProvider { })); // 添加员工选择钥匙 - Future addStaffSeletKeyData(String companyId, String type) => post( - addStaffSeletKeyURL.toUrl, + Future addStaffSelectKeyData(String companyId, String type) => post( + addStaffSelectKeyURL.toUrl, jsonEncode({ 'companyId': companyId, 'type': type, diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index f13b04c6..92981db2 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -28,7 +28,7 @@ import '../main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/c import '../main/lockDetail/checkingIn/checkingInList/checkingInListDay_entity.dart'; import '../main/lockDetail/checkingIn/checkingInList/checkingInListMonth_entity.dart'; import '../main/lockDetail/checkingIn/checkingInSet/checkingInSet_entity.dart'; -import '../main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaffSeletKey_entity.dart'; +import '../main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaffSelectKey_entity.dart'; import '../main/lockDetail/checkingIn/checkingInStaff/checkingInSetStaffList/checkingInStaffList_entity.dart'; import '../main/lockDetail/fingerprint/addFingerprint/addFingerprint_entity.dart'; import '../main/lockDetail/fingerprint/fingerprintList/fingerprintListData_entity.dart'; @@ -1041,12 +1041,12 @@ class ApiRepository { } // 添加员工选择钥匙 - Future addStaffSeletKeyData({ + Future addStaffSelectKeyData({ required String companyId, required String type, }) async { - final res = await apiProvider.addStaffSeletKeyData(companyId, type); - return CheckingInAddStaffSeletKeyEntity.fromJson(res.body); + final res = await apiProvider.addStaffSelectKeyData(companyId, type); + return CheckingInAddStaffSelectKeyEntity.fromJson(res.body); } // 添加假期 diff --git a/star_lock/lib/tools/ExpandedListView.dart b/star_lock/lib/tools/ExpandedListView.dart index 0c4247e4..d735df2c 100644 --- a/star_lock/lib/tools/ExpandedListView.dart +++ b/star_lock/lib/tools/ExpandedListView.dart @@ -65,7 +65,7 @@ class _ExpandedListTileState extends State { Image.asset( _isCheck ? "images/icon_round_selet.png" - : "images/icon_round_unSelet.png", + : "images/icon_round_unSelect.png", width: 30.w, height: 30.w, ), diff --git a/star_lock/lib/tools/seletImgTool.dart b/star_lock/lib/tools/seletImgTool.dart index b39ca539..81434158 100644 --- a/star_lock/lib/tools/seletImgTool.dart +++ b/star_lock/lib/tools/seletImgTool.dart @@ -7,7 +7,7 @@ import 'package:image_picker/image_picker.dart'; typedef BlockImgCallback = void Function(dynamic imgStr); -class SeletImageTool { +class SelectImageTool { // 实例化ImagePicker final ImagePicker _picker = ImagePicker(); ImageProvider? _imageProvider; @@ -53,4 +53,4 @@ class SeletImageTool { } } } -} \ No newline at end of file +} diff --git a/star_lock/lib/tools/showCalendar.dart b/star_lock/lib/tools/showCalendar.dart index f457b809..2ac0b7aa 100644 --- a/star_lock/lib/tools/showCalendar.dart +++ b/star_lock/lib/tools/showCalendar.dart @@ -3,10 +3,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; -typedef SeletDateCallback(DateTime dateTime); +typedef SelectDateCallback(DateTime dateTime); class ShowCalendar extends StatelessWidget { - SeletDateCallback? seletAction; + SelectDateCallback? seletAction; DatePickerMode? datePickerMode; ShowCalendar({Key? key, this.seletAction, this.datePickerMode}) : super(key: key); diff --git a/star_lock/lib/tools/showSeletDateTime.dart b/star_lock/lib/tools/showSeletDateTime.dart index 9e734ec5..6110936a 100644 --- a/star_lock/lib/tools/showSeletDateTime.dart +++ b/star_lock/lib/tools/showSeletDateTime.dart @@ -7,7 +7,7 @@ import '../translations/trans_lib.dart'; typedef DateValueCallback(DateTime dateTime, List selectedIndex); -class ShowSeletDateTime { +class ShowSelectDateTime { void showDatePicker(BuildContext context, String maxT, String minT, String nowDate, String formatStr, DateValueCallback onConfirm,) { // String MIN_DATETIME = '1900-01-01 00:00'; diff --git a/star_lock/lib/translations/lanKeyEntity.dart b/star_lock/lib/translations/lanKeyEntity.dart index 41076492..e9f307d7 100644 --- a/star_lock/lib/translations/lanKeyEntity.dart +++ b/star_lock/lib/translations/lanKeyEntity.dart @@ -49,7 +49,7 @@ class LanKeyEntity { this.sendGroupKey, this.lock, this.pleaseAdd, - this.pleaseSelet, + this.pleaseSelect, this.remoteUnlockingAllowed, this.pleaseEnter, this.getPassword, @@ -135,7 +135,7 @@ class LanKeyEntity { this.allDay, this.save, this.normallyOpenModeTip, - this.pleaseSeletLockVolume, + this.pleaseSelectLockVolume, this.lockSoundTip, this.low, this.lower, @@ -337,7 +337,7 @@ class LanKeyEntity { this.customMailTemplate, this.record, this.buyRealNameTip, - this.buyRealNameSeletYouWantBuyTip, + this.buyRealNameSelectYouWantBuyTip, this.forTheFirstTime, this.onceDay, this.weekOnce, @@ -509,7 +509,7 @@ class LanKeyEntity { sendGroupKey = json['sendGroupKey']; lock = json['lock']; pleaseAdd = json['pleaseAdd']; - pleaseSelet = json['pleaseSelet']; + pleaseSelect = json['pleaseSelect']; remoteUnlockingAllowed = json['remoteUnlockingAllowed']; pleaseEnter = json['pleaseEnter']; getPassword = json['getPassword']; @@ -553,7 +553,7 @@ class LanKeyEntity { allDay = json['allDay']; save = json['save']; normallyOpenModeTip = json['normallyOpenModeTip']; - pleaseSeletLockVolume = json['pleaseSeletLockVolume']; + pleaseSelectLockVolume = json['pleaseSelectLockVolume']; lockSoundTip = json['lockSoundTip']; low = json['low']; lower = json['lower']; @@ -817,7 +817,7 @@ class LanKeyEntity { record = json['record']; buyRealNameTip = json['buyRealNameTip']; - buyRealNameSeletYouWantBuyTip = json['buyRealNameSeletYouWantBuyTip']; + buyRealNameSelectYouWantBuyTip = json['buyRealNameSelectYouWantBuyTip']; forTheFirstTime = json['forTheFirstTime']; onceDay = json['onceDay']; weekOnce = json['weekOnce']; @@ -1000,7 +1000,7 @@ class LanKeyEntity { String? sendGroupKey; String? lock; String? pleaseAdd; - String? pleaseSelet; + String? pleaseSelect; String? remoteUnlockingAllowed; String? pleaseEnter; String? getPassword; @@ -1044,7 +1044,7 @@ class LanKeyEntity { String? allDay; String? save; String? normallyOpenModeTip; - String? pleaseSeletLockVolume; + String? pleaseSelectLockVolume; String? lockSoundTip; String? low; String? lower; @@ -1299,7 +1299,7 @@ class LanKeyEntity { String? record; String? buyRealNameTip; - String? buyRealNameSeletYouWantBuyTip; + String? buyRealNameSelectYouWantBuyTip; String? forTheFirstTime; String? onceDay; String? weekOnce; @@ -1480,7 +1480,7 @@ class LanKeyEntity { map['sendGroupKey'] = sendGroupKey; map['lock'] = lock; map['pleaseAdd'] = pleaseAdd; - map['pleaseSelet'] = pleaseSelet; + map['pleaseSelect'] = pleaseSelect; map['remoteUnlockingAllowed'] = remoteUnlockingAllowed; map['pleaseEnter'] = pleaseEnter; map['getPassword'] = getPassword; @@ -1525,7 +1525,7 @@ class LanKeyEntity { map['allDay'] = allDay; map['save'] = save; map['normallyOpenModeTip'] = normallyOpenModeTip; - map['pleaseSeletLockVolume'] = pleaseSeletLockVolume; + map['pleaseSelectLockVolume'] = pleaseSelectLockVolume; map['lockSoundTip'] = lockSoundTip; map['low'] = low; map['lower'] = lower; @@ -1785,7 +1785,7 @@ class LanKeyEntity { map['record'] = record; map['buyRealNameTip'] = buyRealNameTip; - map['buyRealNameSeletYouWantBuyTip'] = buyRealNameSeletYouWantBuyTip; + map['buyRealNameSelectYouWantBuyTip'] = buyRealNameSelectYouWantBuyTip; map['forTheFirstTime'] = forTheFirstTime; map['onceDay'] = onceDay; map['weekOnce'] = weekOnce; diff --git a/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift b/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift index 84d8c391..c5353af6 100644 --- a/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift @@ -19,6 +19,7 @@ import path_provider_foundation import shared_preferences_foundation import sqflite import url_launcher_macos +import video_player_avfoundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AjCaptchaFlutterPlugin.register(with: registry.registrar(forPlugin: "AjCaptchaFlutterPlugin")) @@ -35,4 +36,5 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) + FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin")) } From 0b57ad1a57bb8f74d59f2acf1c8bd0b72fea5130 Mon Sep 17 00:00:00 2001 From: GeJiaXiang <353358601@qq.com> Date: Tue, 23 Jan 2024 17:34:37 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=94=99=E5=88=AB?= =?UTF-8?q?=E5=AD=97=20lcokSet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/lib/appRouters.dart | 94 +++++++++---------- .../addFamily/addFamily_logic.dart | 0 .../addFamily/addFamily_page.dart | 0 .../addFamily/addFamily_state.dart | 0 .../automaticBlocking_page.dart | 0 .../adminOpenLockPassword_logic.dart | 0 .../adminOpenLockPassword_page.dart | 0 .../adminOpenLockPassword_state.dart | 0 .../basicInformation/KeyDetailEntity.dart | 0 .../basicInformation_logic.dart | 0 .../editLockName/editLockName_logic.dart | 0 .../editLockName/editLockName_page.dart | 0 .../editLockName/editLockName_state.dart | 0 .../lockGroupList_entity.dart | 0 .../lockSelectGrouping_logic.dart | 0 .../lockSelectGrouping_page.dart | 0 .../lockSelectGrouping_state.dart | 0 .../uploadElectricQuantity_logic.dart | 0 .../uploadElectricQuantity_page.dart | 0 .../uploadElectricQuantity_state.dart | 0 .../burglarAlarm/burglarAlarm_page.dart | 0 .../burglarAlarm/burglarAlarm_state.dart | 0 .../catEyeCustomMode_logic.dart | 2 +- .../catEyeCustomMode_page.dart | 2 +- .../catEyeCustomMode_state.dart | 0 .../catEyeSet/catEyeSet/catEyeSet_logic.dart | 0 .../catEyeSet/catEyeSet/catEyeSet_page.dart | 2 +- .../catEyeSet/catEyeSet/catEyeSet_state.dart | 0 .../catEyeSet/videoSlot/videoSlot_logic.dart | 2 +- .../catEyeSet/videoSlot/videoSlot_page.dart | 2 +- .../catEyeSet/videoSlot/videoSlot_state.dart | 0 .../checkInCreatCompany_logic.dart | 0 .../checkInCreatCompany_page.dart | 0 .../configuringWifiEntity.dart | 0 .../configuringWifi/configuringWifi_page.dart | 0 .../configuringWifi_state.dart | 0 .../diagnose/diagnose_logic.dart | 0 .../diagnose/diagnose_page.dart | 0 .../addDoorMagnetic/addDoorMagnetic_page.dart | 0 .../doorMagneticList/doorMagnetic_page.dart | 0 .../nearbyDoorMagnetic_page.dart | 0 .../faceUnlock/faceUnlock_logic.dart | 2 +- .../faceUnlock/faceUnlock_page.dart | 2 +- .../faceUnlock/faceUnlock_state.dart | 0 .../familyDetails/familyDetails_logic.dart | 2 +- .../familyDetails/familyDetails_page.dart | 2 +- .../familyDetails/familyDetails_state.dart | 0 .../ImportOtherLockData_page.dart | 0 .../liveVideo/liveVideo_logic.dart | 2 +- .../liveVideo/liveVideo_page.dart | 2 +- .../liveVideo/liveVideo_state.dart | 0 .../lockEscalation/lockEscalation_page.dart | 0 .../lockSet/checkingInInfoData_entity.dart | 0 .../lockSet/lockSetInfo_entity.dart | 0 .../lockSet/lockSet_page.dart | 0 .../lockSet/lockSet_state.dart | 0 .../lockSoundSet/lockSoundSet_page.dart | 0 .../lockTime/getServerDatetime_entity.dart | 0 .../lockTime/lockTime_logic.dart | 0 .../lockTime/lockTime_page.dart | 0 .../lockTime/lockTime_state.dart | 0 .../lockUser/lockUser_logic.dart | 2 +- .../lockUser/lockUser_page.dart | 2 +- .../lockUser/lockUser_state.dart | 0 .../markedHouseState_logic.dart | 0 .../markedHouseState_page.dart | 0 .../motorPower/motorPower_page.dart | 0 .../motorPower/motorPower_state.dart | 0 .../coerceFingerprint_logic.dart | 0 .../coerceFingerprint_page.dart | 0 .../coerceFingerprint_state.dart | 0 .../coerceFingerprintList_logic.dart | 0 .../coerceFingerprintList_page.dart | 2 +- .../coerceFingerprintList_state.dart | 0 .../coerceOpenDoor/coerceOpenDoor_logic.dart | 0 .../coerceOpenDoor/coerceOpenDoor_page.dart | 0 .../coerceOpenDoor/coerceOpenDoor_state.dart | 0 .../lowBatteryReminder_logic.dart | 0 .../lowBatteryReminder_page.dart | 0 .../lowBatteryReminder_state.dart | 0 .../msgNotification_logic.dart | 0 .../msgNotification/msgNotification_page.dart | 2 +- .../msgNotification_state.dart | 0 .../nDaysUnopened/nDaysUnopened_logic.dart | 0 .../nDaysUnopened/nDaysUnopened_page.dart | 0 .../nDaysUnopened/nDaysUnopened_state.dart | 0 .../openDoorNotify/openDoorNotify_logic.dart | 0 .../openDoorNotify/openDoorNotify_page.dart | 0 .../openDoorNotify/openDoorNotify_state.dart | 0 .../normallyOpenMode_page.dart | 0 .../normallyOpenMode_state.dart | 0 .../notificationMode_logic.dart | 2 +- .../notificationMode_page.dart | 2 +- .../notificationMode_state.dart | 0 .../openDoorDirection_page.dart | 0 .../openDoorDirection_state.dart | 0 .../remoteUnlocking/remoteUnlocking_page.dart | 2 +- .../remoteUnlocking_state.dart | 0 .../resetButton/resetButton_logic.dart | 5 +- .../resetButton/resetButton_page.dart | 0 .../unlockQRCode/unlockQRCode_page.dart | 0 .../uploadData/uploadData_page.dart | 0 .../addWirelessKeyboard_page.dart | 0 ...WirelessKeyboardScreenNotLightOn_page.dart | 0 .../seletWirelessKeyboard_page.dart | 0 .../wirelessKeyboard_page.dart | 0 star_lock/lib/network/api_repository.dart | 10 +- star_lock/lib/tools/eventBusEventManage.dart | 2 +- 108 files changed, 73 insertions(+), 74 deletions(-) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/addFamily/addFamily_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/addFamily/addFamily_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/addFamily/addFamily_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/automaticBlocking/automaticBlocking_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/adminOpenLockPassword/adminOpenLockPassword_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/adminOpenLockPassword/adminOpenLockPassword_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/adminOpenLockPassword/adminOpenLockPassword_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/basicInformation/KeyDetailEntity.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/basicInformation/basicInformation_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/editLockName/editLockName_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/editLockName/editLockName_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/editLockName/editLockName_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/lockSelectGrouping/lockGroupList_entity.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/lockSelectGrouping/lockSelectGrouping_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/lockSelectGrouping/lockSelectGrouping_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/lockSelectGrouping/lockSelectGrouping_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/uploadElectricQuantity/uploadElectricQuantity_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/uploadElectricQuantity/uploadElectricQuantity_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/uploadElectricQuantity/uploadElectricQuantity_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/burglarAlarm/burglarAlarm_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/burglarAlarm/burglarAlarm_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/catEyeSet/catEyeCustomMode/catEyeCustomMode_logic.dart (77%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/catEyeSet/catEyeCustomMode/catEyeCustomMode_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/catEyeSet/catEyeSet/catEyeSet_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/catEyeSet/catEyeSet/catEyeSet_page.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/catEyeSet/catEyeSet/catEyeSet_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/catEyeSet/videoSlot/videoSlot_logic.dart (74%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/catEyeSet/videoSlot/videoSlot_page.dart (99%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/catEyeSet/videoSlot/videoSlot_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/checkInCreatCompany/checkInCreatCompany_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/checkInCreatCompany/checkInCreatCompany_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/configuringWifi/configuringWifiEntity.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/configuringWifi/configuringWifi_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/configuringWifi/configuringWifi_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/diagnose/diagnose_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/diagnose/diagnose_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/doorMagnetic/addDoorMagnetic/addDoorMagnetic_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/doorMagnetic/doorMagneticList/doorMagnetic_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/doorMagnetic/nearbyDoorMagnetic/nearbyDoorMagnetic_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/faceUnlock/faceUnlock_logic.dart (74%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/faceUnlock/faceUnlock_page.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/faceUnlock/faceUnlock_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/familyDetails/familyDetails_logic.dart (75%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/familyDetails/familyDetails_page.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/familyDetails/familyDetails_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/importOtherLockData/ImportOtherLockData_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/liveVideo/liveVideo_logic.dart (73%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/liveVideo/liveVideo_page.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/liveVideo/liveVideo_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockEscalation/lockEscalation_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockSet/checkingInInfoData_entity.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockSet/lockSetInfo_entity.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockSet/lockSet_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockSet/lockSet_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockSoundSet/lockSoundSet_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockTime/getServerDatetime_entity.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockTime/lockTime_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockTime/lockTime_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockTime/lockTime_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockUser/lockUser_logic.dart (73%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockUser/lockUser_page.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockUser/lockUser_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/markedHouseState/markedHouseState_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/markedHouseState/markedHouseState_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/motorPower/motorPower_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/motorPower/motorPower_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/lowBatteryReminder/lowBatteryReminder_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/lowBatteryReminder/lowBatteryReminder_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/lowBatteryReminder/lowBatteryReminder_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/msgNotification/msgNotification_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/msgNotification/msgNotification_page.dart (99%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/msgNotification/msgNotification_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/nDaysUnopened/nDaysUnopened_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/nDaysUnopened/nDaysUnopened_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/nDaysUnopened/nDaysUnopened_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/openDoorNotify/openDoorNotify_logic.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/openDoorNotify/openDoorNotify_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/msgNotification/openDoorNotify/openDoorNotify_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/normallyOpenMode/normallyOpenMode_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/normallyOpenMode/normallyOpenMode_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/notificationMode/notificationMode_logic.dart (76%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/notificationMode/notificationMode_page.dart (99%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/notificationMode/notificationMode_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/openDoorDirection/openDoorDirection_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/openDoorDirection/openDoorDirection_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/remoteUnlocking/remoteUnlocking_page.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/remoteUnlocking/remoteUnlocking_state.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/resetButton/resetButton_logic.dart (97%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/resetButton/resetButton_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/unlockQRCode/unlockQRCode_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/uploadData/uploadData_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/wirelessKeyboard/addWirelessKeyboard/addWirelessKeyboard_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/wirelessKeyboard/addWirelessKeyboardScreenNotLightOn/addWirelessKeyboardScreenNotLightOn_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart (100%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/wirelessKeyboard/wirelessKeyboardList/wirelessKeyboard_page.dart (100%) diff --git a/star_lock/lib/appRouters.dart b/star_lock/lib/appRouters.dart index 469de771..1cbaaacb 100644 --- a/star_lock/lib/appRouters.dart +++ b/star_lock/lib/appRouters.dart @@ -6,18 +6,18 @@ import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_page.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_page.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiver_page.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/addFamily/addFamily_page.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/catEyeSet/catEyeSet_page.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/videoSlot/videoSlot_page.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/faceUnlock/faceUnlock_page.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/familyDetails/familyDetails_page.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/liveVideo/liveVideo_page.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/lockUser/lockUser_page.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/motorPower/motorPower_page.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/msgNotification/msgNotification/msgNotification_page.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/notificationMode/notificationMode_page.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/openDoorDirection/openDoorDirection_page.dart'; +import 'package:star_lock/main/lockDetail/lockSet/addFamily/addFamily_page.dart'; +import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart'; +import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_page.dart'; +import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_page.dart'; +import 'package:star_lock/main/lockDetail/lockSet/faceUnlock/faceUnlock_page.dart'; +import 'package:star_lock/main/lockDetail/lockSet/familyDetails/familyDetails_page.dart'; +import 'package:star_lock/main/lockDetail/lockSet/liveVideo/liveVideo_page.dart'; +import 'package:star_lock/main/lockDetail/lockSet/lockUser/lockUser_page.dart'; +import 'package:star_lock/main/lockDetail/lockSet/motorPower/motorPower_page.dart'; +import 'package:star_lock/main/lockDetail/lockSet/msgNotification/msgNotification/msgNotification_page.dart'; +import 'package:star_lock/main/lockDetail/lockSet/notificationMode/notificationMode_page.dart'; +import 'package:star_lock/main/lockDetail/lockSet/openDoorDirection/openDoorDirection_page.dart'; import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_main_page.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyDetailChangeDate/passwordKeyDetailChangeDate_page.dart'; import 'package:star_lock/mine/about/webviewShow_page.dart'; @@ -67,41 +67,41 @@ import 'main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintManag import 'main/lockDetail/fingerprint/addFingerprintTip/addFingerprintTip_page.dart'; import 'main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart'; import 'main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart'; -import 'main/lockDetail/lcokSet/automaticBlocking/automaticBlocking_page.dart'; -import 'main/lockDetail/lcokSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_page.dart'; -import 'main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart'; -import 'main/lockDetail/lcokSet/basicInformation/editLockName/editLockName_page.dart'; -import 'main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_page.dart'; -import 'main/lockDetail/lcokSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_page.dart'; -import 'main/lockDetail/lcokSet/burglarAlarm/burglarAlarm_page.dart'; -import 'main/lockDetail/lcokSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart'; -import 'main/lockDetail/lcokSet/checkInCreatCompany/checkInCreatCompany_page.dart'; -import 'main/lockDetail/lcokSet/configuringWifi/configuringWifi_page.dart'; -import 'main/lockDetail/lcokSet/diagnose/diagnose_page.dart'; -import 'main/lockDetail/lcokSet/doorMagnetic/addDoorMagnetic/addDoorMagnetic_page.dart'; -import 'main/lockDetail/lcokSet/doorMagnetic/doorMagneticList/doorMagnetic_page.dart'; -import 'main/lockDetail/lcokSet/doorMagnetic/nearbyDoorMagnetic/nearbyDoorMagnetic_page.dart'; -import 'main/lockDetail/lcokSet/importOtherLockData/ImportOtherLockData_page.dart'; -import 'main/lockDetail/lcokSet/lockEscalation/lockEscalation_page.dart'; -import 'main/lockDetail/lcokSet/lockSet/lockSet_page.dart'; -import 'main/lockDetail/lcokSet/lockSoundSet/lockSoundSet_page.dart'; -import 'main/lockDetail/lcokSet/lockTime/lockTime_page.dart'; -import 'main/lockDetail/lcokSet/markedHouseState/markedHouseState_page.dart'; -import 'main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_page.dart'; -import 'main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart'; -import 'main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_page.dart'; -import 'main/lockDetail/lcokSet/msgNotification/lowBatteryReminder/lowBatteryReminder_page.dart'; -import 'main/lockDetail/lcokSet/msgNotification/nDaysUnopened/nDaysUnopened_page.dart'; -import 'main/lockDetail/lcokSet/msgNotification/openDoorNotify/openDoorNotify_page.dart'; -import 'main/lockDetail/lcokSet/normallyOpenMode/normallyOpenMode_page.dart'; -import 'main/lockDetail/lcokSet/remoteUnlocking/remoteUnlocking_page.dart'; -import 'main/lockDetail/lcokSet/resetButton/resetButton_page.dart'; -import 'main/lockDetail/lcokSet/unlockQRCode/unlockQRCode_page.dart'; -import 'main/lockDetail/lcokSet/uploadData/uploadData_page.dart'; -import 'main/lockDetail/lcokSet/wirelessKeyboard/addWirelessKeyboard/addWirelessKeyboard_page.dart'; -import 'main/lockDetail/lcokSet/wirelessKeyboard/addWirelessKeyboardScreenNotLightOn/addWirelessKeyboardScreenNotLightOn_page.dart'; -import 'main/lockDetail/lcokSet/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart'; -import 'main/lockDetail/lcokSet/wirelessKeyboard/wirelessKeyboardList/wirelessKeyboard_page.dart'; +import 'main/lockDetail/lockSet/automaticBlocking/automaticBlocking_page.dart'; +import 'main/lockDetail/lockSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_page.dart'; +import 'main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart'; +import 'main/lockDetail/lockSet/basicInformation/editLockName/editLockName_page.dart'; +import 'main/lockDetail/lockSet/basicInformation/lockSelectGrouping/lockSelectGrouping_page.dart'; +import 'main/lockDetail/lockSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_page.dart'; +import 'main/lockDetail/lockSet/burglarAlarm/burglarAlarm_page.dart'; +import 'main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart'; +import 'main/lockDetail/lockSet/checkInCreatCompany/checkInCreatCompany_page.dart'; +import 'main/lockDetail/lockSet/configuringWifi/configuringWifi_page.dart'; +import 'main/lockDetail/lockSet/diagnose/diagnose_page.dart'; +import 'main/lockDetail/lockSet/doorMagnetic/addDoorMagnetic/addDoorMagnetic_page.dart'; +import 'main/lockDetail/lockSet/doorMagnetic/doorMagneticList/doorMagnetic_page.dart'; +import 'main/lockDetail/lockSet/doorMagnetic/nearbyDoorMagnetic/nearbyDoorMagnetic_page.dart'; +import 'main/lockDetail/lockSet/importOtherLockData/ImportOtherLockData_page.dart'; +import 'main/lockDetail/lockSet/lockEscalation/lockEscalation_page.dart'; +import 'main/lockDetail/lockSet/lockSet/lockSet_page.dart'; +import 'main/lockDetail/lockSet/lockSoundSet/lockSoundSet_page.dart'; +import 'main/lockDetail/lockSet/lockTime/lockTime_page.dart'; +import 'main/lockDetail/lockSet/markedHouseState/markedHouseState_page.dart'; +import 'main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_page.dart'; +import 'main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart'; +import 'main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_page.dart'; +import 'main/lockDetail/lockSet/msgNotification/lowBatteryReminder/lowBatteryReminder_page.dart'; +import 'main/lockDetail/lockSet/msgNotification/nDaysUnopened/nDaysUnopened_page.dart'; +import 'main/lockDetail/lockSet/msgNotification/openDoorNotify/openDoorNotify_page.dart'; +import 'main/lockDetail/lockSet/normallyOpenMode/normallyOpenMode_page.dart'; +import 'main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart'; +import 'main/lockDetail/lockSet/resetButton/resetButton_page.dart'; +import 'main/lockDetail/lockSet/unlockQRCode/unlockQRCode_page.dart'; +import 'main/lockDetail/lockSet/uploadData/uploadData_page.dart'; +import 'main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboard/addWirelessKeyboard_page.dart'; +import 'main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboardScreenNotLightOn/addWirelessKeyboardScreenNotLightOn_page.dart'; +import 'main/lockDetail/lockSet/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart'; +import 'main/lockDetail/lockSet/wirelessKeyboard/wirelessKeyboardList/wirelessKeyboard_page.dart'; import 'main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart'; import 'main/lockDetail/monitoring/monitoringRealTimeScreen/monitoringRealTimeScreen_page.dart'; import 'main/lockDetail/realTimePicture/realTimePicture_page.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/addFamily/addFamily_logic.dart b/star_lock/lib/main/lockDetail/lockSet/addFamily/addFamily_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/addFamily/addFamily_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/addFamily/addFamily_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/addFamily/addFamily_page.dart b/star_lock/lib/main/lockDetail/lockSet/addFamily/addFamily_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/addFamily/addFamily_page.dart rename to star_lock/lib/main/lockDetail/lockSet/addFamily/addFamily_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/addFamily/addFamily_state.dart b/star_lock/lib/main/lockDetail/lockSet/addFamily/addFamily_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/addFamily/addFamily_state.dart rename to star_lock/lib/main/lockDetail/lockSet/addFamily/addFamily_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/automaticBlocking/automaticBlocking_page.dart b/star_lock/lib/main/lockDetail/lockSet/automaticBlocking/automaticBlocking_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/automaticBlocking/automaticBlocking_page.dart rename to star_lock/lib/main/lockDetail/lockSet/automaticBlocking/automaticBlocking_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_logic.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_page.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_page.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_state.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_state.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/KeyDetailEntity.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/KeyDetailEntity.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/KeyDetailEntity.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/KeyDetailEntity.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_logic.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/editLockName/editLockName_logic.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/editLockName/editLockName_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/editLockName/editLockName_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/editLockName/editLockName_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/editLockName/editLockName_page.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/editLockName/editLockName_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/editLockName/editLockName_page.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/editLockName/editLockName_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/editLockName/editLockName_state.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/editLockName/editLockName_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/editLockName/editLockName_state.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/editLockName/editLockName_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockGroupList_entity.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/lockSelectGrouping/lockGroupList_entity.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockGroupList_entity.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/lockSelectGrouping/lockGroupList_entity.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_logic.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/lockSelectGrouping/lockSelectGrouping_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/lockSelectGrouping/lockSelectGrouping_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_page.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/lockSelectGrouping/lockSelectGrouping_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_page.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/lockSelectGrouping/lockSelectGrouping_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_state.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/lockSelectGrouping/lockSelectGrouping_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSelectGrouping/lockSelectGrouping_state.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/lockSelectGrouping/lockSelectGrouping_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_logic.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_page.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_page.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_state.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_state.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/burglarAlarm/burglarAlarm_page.dart b/star_lock/lib/main/lockDetail/lockSet/burglarAlarm/burglarAlarm_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/burglarAlarm/burglarAlarm_page.dart rename to star_lock/lib/main/lockDetail/lockSet/burglarAlarm/burglarAlarm_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/burglarAlarm/burglarAlarm_state.dart b/star_lock/lib/main/lockDetail/lockSet/burglarAlarm/burglarAlarm_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/burglarAlarm/burglarAlarm_state.dart rename to star_lock/lib/main/lockDetail/lockSet/burglarAlarm/burglarAlarm_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_logic.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_logic.dart similarity index 77% rename from star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_logic.dart index bce600a1..3c539dd7 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_logic.dart @@ -1,4 +1,4 @@ -import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_state.dart'; +import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; class CatEyeCustomModeLogic extends BaseGetXController { diff --git a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart rename to star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart index e7cba823..313fee0c 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart @@ -4,7 +4,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/appRouters.dart'; import 'package:star_lock/app_settings/app_colors.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_logic.dart'; +import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_logic.dart'; import 'package:star_lock/tools/commonItem.dart'; import 'package:star_lock/tools/custom_bottom_sheet.dart'; import 'package:star_lock/tools/titleAppBar.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_state.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_state.dart rename to star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeSet/catEyeSet_logic.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeSet/catEyeSet_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeSet/catEyeSet_page.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_page.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeSet/catEyeSet_page.dart rename to star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_page.dart index 2b9bb695..ce771065 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeSet/catEyeSet_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_page.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/appRouters.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/catEyeSet/catEyeSet_logic.dart'; +import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_logic.dart'; import 'package:star_lock/tools/commonItem.dart'; import 'package:star_lock/tools/custom_bottom_sheet.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeSet/catEyeSet_state.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeSet/catEyeSet_state.dart rename to star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/videoSlot/videoSlot_logic.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_logic.dart similarity index 74% rename from star_lock/lib/main/lockDetail/lcokSet/catEyeSet/videoSlot/videoSlot_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_logic.dart index aa452976..2e5fe60b 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/videoSlot/videoSlot_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_logic.dart @@ -1,4 +1,4 @@ -import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/videoSlot/videoSlot_state.dart'; +import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; class VideoSlotLogic extends BaseGetXController { diff --git a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/videoSlot/videoSlot_page.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_page.dart similarity index 99% rename from star_lock/lib/main/lockDetail/lcokSet/catEyeSet/videoSlot/videoSlot_page.dart rename to star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_page.dart index ef8524aa..0acc0049 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/videoSlot/videoSlot_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/videoSlot/videoSlot_logic.dart'; +import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_logic.dart'; import 'package:star_lock/tools/pickers/pickers.dart'; import 'package:star_lock/tools/pickers/time_picker/model/date_mode.dart'; import 'package:star_lock/translations/trans_lib.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/videoSlot/videoSlot_state.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/catEyeSet/videoSlot/videoSlot_state.dart rename to star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/checkInCreatCompany/checkInCreatCompany_logic.dart b/star_lock/lib/main/lockDetail/lockSet/checkInCreatCompany/checkInCreatCompany_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/checkInCreatCompany/checkInCreatCompany_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/checkInCreatCompany/checkInCreatCompany_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/checkInCreatCompany/checkInCreatCompany_page.dart b/star_lock/lib/main/lockDetail/lockSet/checkInCreatCompany/checkInCreatCompany_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/checkInCreatCompany/checkInCreatCompany_page.dart rename to star_lock/lib/main/lockDetail/lockSet/checkInCreatCompany/checkInCreatCompany_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/configuringWifi/configuringWifiEntity.dart b/star_lock/lib/main/lockDetail/lockSet/configuringWifi/configuringWifiEntity.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/configuringWifi/configuringWifiEntity.dart rename to star_lock/lib/main/lockDetail/lockSet/configuringWifi/configuringWifiEntity.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/configuringWifi/configuringWifi_page.dart b/star_lock/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/configuringWifi/configuringWifi_page.dart rename to star_lock/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/configuringWifi/configuringWifi_state.dart b/star_lock/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/configuringWifi/configuringWifi_state.dart rename to star_lock/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/diagnose/diagnose_logic.dart b/star_lock/lib/main/lockDetail/lockSet/diagnose/diagnose_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/diagnose/diagnose_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/diagnose/diagnose_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/diagnose/diagnose_page.dart b/star_lock/lib/main/lockDetail/lockSet/diagnose/diagnose_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/diagnose/diagnose_page.dart rename to star_lock/lib/main/lockDetail/lockSet/diagnose/diagnose_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/doorMagnetic/addDoorMagnetic/addDoorMagnetic_page.dart b/star_lock/lib/main/lockDetail/lockSet/doorMagnetic/addDoorMagnetic/addDoorMagnetic_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/doorMagnetic/addDoorMagnetic/addDoorMagnetic_page.dart rename to star_lock/lib/main/lockDetail/lockSet/doorMagnetic/addDoorMagnetic/addDoorMagnetic_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/doorMagnetic/doorMagneticList/doorMagnetic_page.dart b/star_lock/lib/main/lockDetail/lockSet/doorMagnetic/doorMagneticList/doorMagnetic_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/doorMagnetic/doorMagneticList/doorMagnetic_page.dart rename to star_lock/lib/main/lockDetail/lockSet/doorMagnetic/doorMagneticList/doorMagnetic_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/doorMagnetic/nearbyDoorMagnetic/nearbyDoorMagnetic_page.dart b/star_lock/lib/main/lockDetail/lockSet/doorMagnetic/nearbyDoorMagnetic/nearbyDoorMagnetic_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/doorMagnetic/nearbyDoorMagnetic/nearbyDoorMagnetic_page.dart rename to star_lock/lib/main/lockDetail/lockSet/doorMagnetic/nearbyDoorMagnetic/nearbyDoorMagnetic_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/faceUnlock/faceUnlock_logic.dart b/star_lock/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_logic.dart similarity index 74% rename from star_lock/lib/main/lockDetail/lcokSet/faceUnlock/faceUnlock_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_logic.dart index 1e57c852..05fe5acf 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/faceUnlock/faceUnlock_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_logic.dart @@ -1,4 +1,4 @@ -import 'package:star_lock/main/lockDetail/lcokSet/faceUnlock/faceUnlock_state.dart'; +import 'package:star_lock/main/lockDetail/lockSet/faceUnlock/faceUnlock_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; class FaceUnlockLogic extends BaseGetXController { diff --git a/star_lock/lib/main/lockDetail/lcokSet/faceUnlock/faceUnlock_page.dart b/star_lock/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_page.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/faceUnlock/faceUnlock_page.dart rename to star_lock/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_page.dart index dad35bde..7732de2b 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/faceUnlock/faceUnlock_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_page.dart @@ -2,7 +2,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/lcokSet/faceUnlock/faceUnlock_logic.dart'; +import 'package:star_lock/main/lockDetail/lockSet/faceUnlock/faceUnlock_logic.dart'; import 'package:star_lock/tools/custom_bottom_sheet.dart'; import '../../../../app_settings/app_colors.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/faceUnlock/faceUnlock_state.dart b/star_lock/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/faceUnlock/faceUnlock_state.dart rename to star_lock/lib/main/lockDetail/lockSet/faceUnlock/faceUnlock_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/familyDetails/familyDetails_logic.dart b/star_lock/lib/main/lockDetail/lockSet/familyDetails/familyDetails_logic.dart similarity index 75% rename from star_lock/lib/main/lockDetail/lcokSet/familyDetails/familyDetails_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/familyDetails/familyDetails_logic.dart index dc8c8e61..023b3119 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/familyDetails/familyDetails_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/familyDetails/familyDetails_logic.dart @@ -1,4 +1,4 @@ -import 'package:star_lock/main/lockDetail/lcokSet/familyDetails/familyDetails_state.dart'; +import 'package:star_lock/main/lockDetail/lockSet/familyDetails/familyDetails_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; class FamilyDetailsLogic extends BaseGetXController { diff --git a/star_lock/lib/main/lockDetail/lcokSet/familyDetails/familyDetails_page.dart b/star_lock/lib/main/lockDetail/lockSet/familyDetails/familyDetails_page.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/familyDetails/familyDetails_page.dart rename to star_lock/lib/main/lockDetail/lockSet/familyDetails/familyDetails_page.dart index 667e4e12..520261a0 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/familyDetails/familyDetails_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/familyDetails/familyDetails_page.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/appRouters.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/familyDetails/familyDetails_logic.dart'; +import 'package:star_lock/main/lockDetail/lockSet/familyDetails/familyDetails_logic.dart'; import 'package:star_lock/tools/commonItem.dart'; import 'package:star_lock/tools/showTFView.dart'; import 'package:star_lock/tools/submitBtn.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/familyDetails/familyDetails_state.dart b/star_lock/lib/main/lockDetail/lockSet/familyDetails/familyDetails_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/familyDetails/familyDetails_state.dart rename to star_lock/lib/main/lockDetail/lockSet/familyDetails/familyDetails_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/importOtherLockData/ImportOtherLockData_page.dart b/star_lock/lib/main/lockDetail/lockSet/importOtherLockData/ImportOtherLockData_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/importOtherLockData/ImportOtherLockData_page.dart rename to star_lock/lib/main/lockDetail/lockSet/importOtherLockData/ImportOtherLockData_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/liveVideo/liveVideo_logic.dart b/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_logic.dart similarity index 73% rename from star_lock/lib/main/lockDetail/lcokSet/liveVideo/liveVideo_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_logic.dart index 2ad94803..54439bfe 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/liveVideo/liveVideo_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_logic.dart @@ -1,4 +1,4 @@ -import 'package:star_lock/main/lockDetail/lcokSet/liveVideo/liveVideo_state.dart'; +import 'package:star_lock/main/lockDetail/lockSet/liveVideo/liveVideo_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; class LiveVideoLogic extends BaseGetXController { diff --git a/star_lock/lib/main/lockDetail/lcokSet/liveVideo/liveVideo_page.dart b/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_page.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/liveVideo/liveVideo_page.dart rename to star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_page.dart index 688b4d5e..eed2b299 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/liveVideo/liveVideo_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/liveVideo/liveVideo_logic.dart'; +import 'package:star_lock/main/lockDetail/lockSet/liveVideo/liveVideo_logic.dart'; import 'package:star_lock/translations/trans_lib.dart'; import '../../../../../app_settings/app_colors.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/liveVideo/liveVideo_state.dart b/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/liveVideo/liveVideo_state.dart rename to star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockEscalation/lockEscalation_page.dart b/star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/lockEscalation/lockEscalation_page.dart rename to star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockSet/checkingInInfoData_entity.dart b/star_lock/lib/main/lockDetail/lockSet/lockSet/checkingInInfoData_entity.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/lockSet/checkingInInfoData_entity.dart rename to star_lock/lib/main/lockDetail/lockSet/lockSet/checkingInInfoData_entity.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSetInfo_entity.dart b/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSetInfo_entity.dart rename to star_lock/lib/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_page.dart b/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_page.dart rename to star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_state.dart b/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_state.dart rename to star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockSoundSet/lockSoundSet_page.dart b/star_lock/lib/main/lockDetail/lockSet/lockSoundSet/lockSoundSet_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/lockSoundSet/lockSoundSet_page.dart rename to star_lock/lib/main/lockDetail/lockSet/lockSoundSet/lockSoundSet_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockTime/getServerDatetime_entity.dart b/star_lock/lib/main/lockDetail/lockSet/lockTime/getServerDatetime_entity.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/lockTime/getServerDatetime_entity.dart rename to star_lock/lib/main/lockDetail/lockSet/lockTime/getServerDatetime_entity.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockTime/lockTime_logic.dart b/star_lock/lib/main/lockDetail/lockSet/lockTime/lockTime_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/lockTime/lockTime_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/lockTime/lockTime_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockTime/lockTime_page.dart b/star_lock/lib/main/lockDetail/lockSet/lockTime/lockTime_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/lockTime/lockTime_page.dart rename to star_lock/lib/main/lockDetail/lockSet/lockTime/lockTime_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockTime/lockTime_state.dart b/star_lock/lib/main/lockDetail/lockSet/lockTime/lockTime_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/lockTime/lockTime_state.dart rename to star_lock/lib/main/lockDetail/lockSet/lockTime/lockTime_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockUser/lockUser_logic.dart b/star_lock/lib/main/lockDetail/lockSet/lockUser/lockUser_logic.dart similarity index 73% rename from star_lock/lib/main/lockDetail/lcokSet/lockUser/lockUser_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/lockUser/lockUser_logic.dart index f670945a..c3eb30db 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/lockUser/lockUser_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/lockUser/lockUser_logic.dart @@ -1,4 +1,4 @@ -import 'package:star_lock/main/lockDetail/lcokSet/lockUser/lockUser_state.dart'; +import 'package:star_lock/main/lockDetail/lockSet/lockUser/lockUser_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; class LockUserLogic extends BaseGetXController { diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockUser/lockUser_page.dart b/star_lock/lib/main/lockDetail/lockSet/lockUser/lockUser_page.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/lockUser/lockUser_page.dart rename to star_lock/lib/main/lockDetail/lockSet/lockUser/lockUser_page.dart index 20adf3bc..86bf8882 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/lockUser/lockUser_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/lockUser/lockUser_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/lockUser/lockUser_logic.dart'; +import 'package:star_lock/main/lockDetail/lockSet/lockUser/lockUser_logic.dart'; import '../../../../app_settings/app_colors.dart'; import '../../../../tools/submitBtn.dart'; import '../../../../tools/titleAppBar.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockUser/lockUser_state.dart b/star_lock/lib/main/lockDetail/lockSet/lockUser/lockUser_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/lockUser/lockUser_state.dart rename to star_lock/lib/main/lockDetail/lockSet/lockUser/lockUser_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/markedHouseState/markedHouseState_logic.dart b/star_lock/lib/main/lockDetail/lockSet/markedHouseState/markedHouseState_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/markedHouseState/markedHouseState_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/markedHouseState/markedHouseState_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/markedHouseState/markedHouseState_page.dart b/star_lock/lib/main/lockDetail/lockSet/markedHouseState/markedHouseState_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/markedHouseState/markedHouseState_page.dart rename to star_lock/lib/main/lockDetail/lockSet/markedHouseState/markedHouseState_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/motorPower/motorPower_page.dart b/star_lock/lib/main/lockDetail/lockSet/motorPower/motorPower_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/motorPower/motorPower_page.dart rename to star_lock/lib/main/lockDetail/lockSet/motorPower/motorPower_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/motorPower/motorPower_state.dart b/star_lock/lib/main/lockDetail/lockSet/motorPower/motorPower_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/motorPower/motorPower_state.dart rename to star_lock/lib/main/lockDetail/lockSet/motorPower/motorPower_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_logic.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_page.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_page.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_state.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_state.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_logic.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart index 97ae337c..77d33232 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/lockUser/lockUser_logic.dart'; +import 'package:star_lock/main/lockDetail/lockSet/lockUser/lockUser_logic.dart'; import '../../../../../../app_settings/app_colors.dart'; import '../../../../../../tools/submitBtn.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_state.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_state.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_logic.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_page.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_page.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_state.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_state.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/lowBatteryReminder/lowBatteryReminder_logic.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/lowBatteryReminder/lowBatteryReminder_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/lowBatteryReminder/lowBatteryReminder_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/lowBatteryReminder/lowBatteryReminder_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/lowBatteryReminder/lowBatteryReminder_page.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/lowBatteryReminder/lowBatteryReminder_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/lowBatteryReminder/lowBatteryReminder_page.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/lowBatteryReminder/lowBatteryReminder_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/lowBatteryReminder/lowBatteryReminder_state.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/lowBatteryReminder/lowBatteryReminder_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/lowBatteryReminder/lowBatteryReminder_state.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/lowBatteryReminder/lowBatteryReminder_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/msgNotification/msgNotification_logic.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/msgNotification/msgNotification_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/msgNotification/msgNotification_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/msgNotification/msgNotification_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/msgNotification/msgNotification_page.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/msgNotification/msgNotification_page.dart similarity index 99% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/msgNotification/msgNotification_page.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/msgNotification/msgNotification_page.dart index 85fafd44..d7e02d58 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/msgNotification/msgNotification_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/msgNotification/msgNotification/msgNotification_page.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/appRouters.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/msgNotification/msgNotification/msgNotification_logic.dart'; +import 'package:star_lock/main/lockDetail/lockSet/msgNotification/msgNotification/msgNotification_logic.dart'; import '../../../../../app_settings/app_colors.dart'; import '../../../../../tools/commonItem.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/msgNotification/msgNotification_state.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/msgNotification/msgNotification_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/msgNotification/msgNotification_state.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/msgNotification/msgNotification_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/nDaysUnopened/nDaysUnopened_logic.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/nDaysUnopened/nDaysUnopened_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/nDaysUnopened/nDaysUnopened_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/nDaysUnopened/nDaysUnopened_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/nDaysUnopened/nDaysUnopened_page.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/nDaysUnopened/nDaysUnopened_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/nDaysUnopened/nDaysUnopened_page.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/nDaysUnopened/nDaysUnopened_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/nDaysUnopened/nDaysUnopened_state.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/nDaysUnopened/nDaysUnopened_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/nDaysUnopened/nDaysUnopened_state.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/nDaysUnopened/nDaysUnopened_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/openDoorNotify/openDoorNotify_logic.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/openDoorNotify/openDoorNotify_logic.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/openDoorNotify/openDoorNotify_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/openDoorNotify/openDoorNotify_logic.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/openDoorNotify/openDoorNotify_page.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/openDoorNotify/openDoorNotify_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/openDoorNotify/openDoorNotify_page.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/openDoorNotify/openDoorNotify_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/msgNotification/openDoorNotify/openDoorNotify_state.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/openDoorNotify/openDoorNotify_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/msgNotification/openDoorNotify/openDoorNotify_state.dart rename to star_lock/lib/main/lockDetail/lockSet/msgNotification/openDoorNotify/openDoorNotify_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/normallyOpenMode/normallyOpenMode_page.dart b/star_lock/lib/main/lockDetail/lockSet/normallyOpenMode/normallyOpenMode_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/normallyOpenMode/normallyOpenMode_page.dart rename to star_lock/lib/main/lockDetail/lockSet/normallyOpenMode/normallyOpenMode_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/normallyOpenMode/normallyOpenMode_state.dart b/star_lock/lib/main/lockDetail/lockSet/normallyOpenMode/normallyOpenMode_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/normallyOpenMode/normallyOpenMode_state.dart rename to star_lock/lib/main/lockDetail/lockSet/normallyOpenMode/normallyOpenMode_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/notificationMode/notificationMode_logic.dart b/star_lock/lib/main/lockDetail/lockSet/notificationMode/notificationMode_logic.dart similarity index 76% rename from star_lock/lib/main/lockDetail/lcokSet/notificationMode/notificationMode_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/notificationMode/notificationMode_logic.dart index c793f3d8..9f218ab5 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/notificationMode/notificationMode_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/notificationMode/notificationMode_logic.dart @@ -1,4 +1,4 @@ -import 'package:star_lock/main/lockDetail/lcokSet/notificationMode/notificationMode_state.dart'; +import 'package:star_lock/main/lockDetail/lockSet/notificationMode/notificationMode_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; class NotificationModeLogic extends BaseGetXController { diff --git a/star_lock/lib/main/lockDetail/lcokSet/notificationMode/notificationMode_page.dart b/star_lock/lib/main/lockDetail/lockSet/notificationMode/notificationMode_page.dart similarity index 99% rename from star_lock/lib/main/lockDetail/lcokSet/notificationMode/notificationMode_page.dart rename to star_lock/lib/main/lockDetail/lockSet/notificationMode/notificationMode_page.dart index d3f1eba8..24969c72 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/notificationMode/notificationMode_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/notificationMode/notificationMode_page.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/appRouters.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/notificationMode/notificationMode_logic.dart'; +import 'package:star_lock/main/lockDetail/lockSet/notificationMode/notificationMode_logic.dart'; import 'package:star_lock/tools/commonItem.dart'; import 'package:star_lock/tools/submitBtn.dart'; import 'package:star_lock/translations/trans_lib.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/notificationMode/notificationMode_state.dart b/star_lock/lib/main/lockDetail/lockSet/notificationMode/notificationMode_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/notificationMode/notificationMode_state.dart rename to star_lock/lib/main/lockDetail/lockSet/notificationMode/notificationMode_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/openDoorDirection/openDoorDirection_page.dart b/star_lock/lib/main/lockDetail/lockSet/openDoorDirection/openDoorDirection_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/openDoorDirection/openDoorDirection_page.dart rename to star_lock/lib/main/lockDetail/lockSet/openDoorDirection/openDoorDirection_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/openDoorDirection/openDoorDirection_state.dart b/star_lock/lib/main/lockDetail/lockSet/openDoorDirection/openDoorDirection_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/openDoorDirection/openDoorDirection_state.dart rename to star_lock/lib/main/lockDetail/lockSet/openDoorDirection/openDoorDirection_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/remoteUnlocking/remoteUnlocking_page.dart b/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/remoteUnlocking/remoteUnlocking_page.dart rename to star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart index 934aca06..8c35816d 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/remoteUnlocking/remoteUnlocking_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart @@ -2,7 +2,7 @@ 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/lcokSet/remoteUnlocking/remoteUnlocking_logic.dart'; +import 'package:star_lock/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart'; import '../../../../app_settings/app_colors.dart'; import '../../../../blue/blue_manage.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/remoteUnlocking/remoteUnlocking_state.dart b/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_state.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/remoteUnlocking/remoteUnlocking_state.dart rename to star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_state.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/resetButton/resetButton_logic.dart b/star_lock/lib/main/lockDetail/lockSet/resetButton/resetButton_logic.dart similarity index 97% rename from star_lock/lib/main/lockDetail/lcokSet/resetButton/resetButton_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/resetButton/resetButton_logic.dart index da0580cb..fe76ca7a 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/resetButton/resetButton_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/resetButton/resetButton_logic.dart @@ -2,11 +2,10 @@ import 'dart:async'; import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/resetButton/resetButton_state.dart'; +import 'package:star_lock/main/lockDetail/lockSet/resetButton/resetButton_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import '../../../../blue/blue_manage.dart'; -import '../../../../blue/io_protocol/io_readSupportFunctionsNoParameters.dart'; import '../../../../blue/io_protocol/io_setSupportFunctionsNoParameters.dart'; import '../../../../blue/io_reply.dart'; import '../../../../blue/io_tool/io_tool.dart'; @@ -206,4 +205,4 @@ class ResetButtonLogic extends BaseGetXController{ super.onClose(); _replySubscription.cancel(); } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/resetButton/resetButton_page.dart b/star_lock/lib/main/lockDetail/lockSet/resetButton/resetButton_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/resetButton/resetButton_page.dart rename to star_lock/lib/main/lockDetail/lockSet/resetButton/resetButton_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/unlockQRCode/unlockQRCode_page.dart b/star_lock/lib/main/lockDetail/lockSet/unlockQRCode/unlockQRCode_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/unlockQRCode/unlockQRCode_page.dart rename to star_lock/lib/main/lockDetail/lockSet/unlockQRCode/unlockQRCode_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/uploadData/uploadData_page.dart b/star_lock/lib/main/lockDetail/lockSet/uploadData/uploadData_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/uploadData/uploadData_page.dart rename to star_lock/lib/main/lockDetail/lockSet/uploadData/uploadData_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/wirelessKeyboard/addWirelessKeyboard/addWirelessKeyboard_page.dart b/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboard/addWirelessKeyboard_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/wirelessKeyboard/addWirelessKeyboard/addWirelessKeyboard_page.dart rename to star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboard/addWirelessKeyboard_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/wirelessKeyboard/addWirelessKeyboardScreenNotLightOn/addWirelessKeyboardScreenNotLightOn_page.dart b/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboardScreenNotLightOn/addWirelessKeyboardScreenNotLightOn_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/wirelessKeyboard/addWirelessKeyboardScreenNotLightOn/addWirelessKeyboardScreenNotLightOn_page.dart rename to star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboardScreenNotLightOn/addWirelessKeyboardScreenNotLightOn_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart b/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart rename to star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart diff --git a/star_lock/lib/main/lockDetail/lcokSet/wirelessKeyboard/wirelessKeyboardList/wirelessKeyboard_page.dart b/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/wirelessKeyboardList/wirelessKeyboard_page.dart similarity index 100% rename from star_lock/lib/main/lockDetail/lcokSet/wirelessKeyboard/wirelessKeyboardList/wirelessKeyboard_page.dart rename to star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/wirelessKeyboardList/wirelessKeyboard_page.dart diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index 92981db2..3ca85b51 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -4,7 +4,7 @@ import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyO import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/basicInformation/basicInformation/KeyDetailEntity.dart'; +import 'package:star_lock/main/lockDetail/lockSet/basicInformation/basicInformation/KeyDetailEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKeyEntity.dart'; import 'package:star_lock/mine/minePersonInfo/minePersonInfoEditAccount/minePersonInfoEditAccount/mineUnbindPhoneOrEmail_entity.dart'; @@ -32,10 +32,10 @@ import '../main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/chec import '../main/lockDetail/checkingIn/checkingInStaff/checkingInSetStaffList/checkingInStaffList_entity.dart'; import '../main/lockDetail/fingerprint/addFingerprint/addFingerprint_entity.dart'; import '../main/lockDetail/fingerprint/fingerprintList/fingerprintListData_entity.dart'; -import '../main/lockDetail/lcokSet/configuringWifi/configuringWifiEntity.dart'; -import '../main/lockDetail/lcokSet/lockSet/checkingInInfoData_entity.dart'; -import '../main/lockDetail/lcokSet/lockSet/lockSetInfo_entity.dart'; -import '../main/lockDetail/lcokSet/lockTime/getServerDatetime_entity.dart'; +import '../main/lockDetail/lockSet/configuringWifi/configuringWifiEntity.dart'; +import '../main/lockDetail/lockSet/lockSet/checkingInInfoData_entity.dart'; +import '../main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart'; +import '../main/lockDetail/lockSet/lockTime/getServerDatetime_entity.dart'; import '../main/lockDetail/lockDetail/lockNetToken_entity.dart'; import '../main/lockDetail/lockOperatingRecord/lockOperatingRecordGetLastRecordTime_entity.dart'; import '../main/lockMian/entity/lockListInfo_entity.dart'; diff --git a/star_lock/lib/tools/eventBusEventManage.dart b/star_lock/lib/tools/eventBusEventManage.dart index 05c36ea0..cf2b2826 100644 --- a/star_lock/lib/tools/eventBusEventManage.dart +++ b/star_lock/lib/tools/eventBusEventManage.dart @@ -1,6 +1,6 @@ import 'package:event_bus/event_bus.dart'; -import '../main/lockDetail/lcokSet/lockSet/lockSetInfo_entity.dart'; +import '../main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart'; /// 创建EventBus EventBus eventBus = EventBus(); From 66730d2c42f975a962db6a58a9ae951f6b956959 Mon Sep 17 00:00:00 2001 From: GeJiaXiang <353358601@qq.com> Date: Tue, 23 Jan 2024 17:36:02 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=94=99=E5=88=AB?= =?UTF-8?q?=E5=AD=97=20lcokSet2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lcokSet/lockEscalation/lockEscalation_state.dart | 6 ------ .../automaticBlocking/automaticBlocking_logic.dart | 3 +-- .../automaticBlocking/automaticBlocking_state.dart | 3 +-- .../basicInformation/basicInformation_page.dart | 2 -- .../basicInformation/basicInformation_state.dart | 3 +-- .../burglarAlarm/burglarAlarm_logic.dart | 3 +-- .../catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart | 1 - .../checkInCreatCompany/checkInCreatCompany_state.dart | 3 +-- .../configuringWifi/configuringWifi_logic.dart | 3 +-- .../{lcokSet => lockSet}/diagnose/diagnose_state.dart | 3 +-- .../lockEscalation/lockEscalation_logic.dart | 3 +-- .../lockSet/lockEscalation/lockEscalation_state.dart | 4 ++++ .../{lcokSet => lockSet}/lockSet/lockSet_logic.dart | 1 - .../lockSoundSet/lockSoundSet_logic.dart | 3 +-- .../lockSoundSet/lockSoundSet_state.dart | 3 +-- .../markedHouseState/markedHouseState_state.dart | 3 +-- .../{lcokSet => lockSet}/motorPower/motorPower_logic.dart | 1 - .../normallyOpenMode/normallyOpenMode_logic.dart | 3 +-- .../openDoorDirection/openDoorDirection_logic.dart | 3 +-- .../remoteUnlocking/remoteUnlocking_logic.dart | 3 +-- .../{lcokSet => lockSet}/resetButton/resetButton_state.dart | 3 +-- 21 files changed, 19 insertions(+), 41 deletions(-) delete mode 100644 star_lock/lib/main/lockDetail/lcokSet/lockEscalation/lockEscalation_state.dart rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/automaticBlocking/automaticBlocking_logic.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/automaticBlocking/automaticBlocking_state.dart (96%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/basicInformation/basicInformation_page.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/basicInformation/basicInformation/basicInformation_state.dart (86%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/burglarAlarm/burglarAlarm_logic.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart (99%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/checkInCreatCompany/checkInCreatCompany_state.dart (92%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/configuringWifi/configuringWifi_logic.dart (99%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/diagnose/diagnose_state.dart (80%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockEscalation/lockEscalation_logic.dart (93%) create mode 100644 star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_state.dart rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockSet/lockSet_logic.dart (99%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockSoundSet/lockSoundSet_logic.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/lockSoundSet/lockSoundSet_state.dart (92%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/markedHouseState/markedHouseState_state.dart (85%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/motorPower/motorPower_logic.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/normallyOpenMode/normallyOpenMode_logic.dart (99%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/openDoorDirection/openDoorDirection_logic.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/remoteUnlocking/remoteUnlocking_logic.dart (98%) rename star_lock/lib/main/lockDetail/{lcokSet => lockSet}/resetButton/resetButton_state.dart (90%) diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockEscalation/lockEscalation_state.dart b/star_lock/lib/main/lockDetail/lcokSet/lockEscalation/lockEscalation_state.dart deleted file mode 100644 index 211ba75c..00000000 --- a/star_lock/lib/main/lockDetail/lcokSet/lockEscalation/lockEscalation_state.dart +++ /dev/null @@ -1,6 +0,0 @@ - -import 'package:get/get.dart'; - -class LockEscalationState{ - -} \ No newline at end of file diff --git a/star_lock/lib/main/lockDetail/lcokSet/automaticBlocking/automaticBlocking_logic.dart b/star_lock/lib/main/lockDetail/lockSet/automaticBlocking/automaticBlocking_logic.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/automaticBlocking/automaticBlocking_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/automaticBlocking/automaticBlocking_logic.dart index d84e3fa0..394f977c 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/automaticBlocking/automaticBlocking_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/automaticBlocking/automaticBlocking_logic.dart @@ -5,7 +5,6 @@ import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; import 'package:star_lock/blue/io_protocol/io_setSupportFunctionsWithParameters.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import '../../../../blue/blue_manage.dart'; -import '../../../../blue/io_protocol/io_readSupportFunctionsWithParameters.dart'; import '../../../../blue/io_reply.dart'; import '../../../../blue/io_tool/io_tool.dart'; import '../../../../blue/io_tool/manager_event_bus.dart'; @@ -180,7 +179,7 @@ class AutomaticBlockingLogic extends BaseGetXController{ var publicKey = await Storage.getStringList(saveBluePublicKey); List getPublicKeyList = changeStringListToIntList(publicKey!); - + String autoTime; if(state.isOpen.value == false){ autoTime = "0"; diff --git a/star_lock/lib/main/lockDetail/lcokSet/automaticBlocking/automaticBlocking_state.dart b/star_lock/lib/main/lockDetail/lockSet/automaticBlocking/automaticBlocking_state.dart similarity index 96% rename from star_lock/lib/main/lockDetail/lcokSet/automaticBlocking/automaticBlocking_state.dart rename to star_lock/lib/main/lockDetail/lockSet/automaticBlocking/automaticBlocking_state.dart index aad60abb..01db9876 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/automaticBlocking/automaticBlocking_state.dart +++ b/star_lock/lib/main/lockDetail/lockSet/automaticBlocking/automaticBlocking_state.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import '../../../lockMian/entity/lockListInfo_entity.dart'; import '../lockSet/lockSetInfo_entity.dart'; class AutomaticBlockingState { @@ -43,4 +42,4 @@ class AutomaticBlockingState { } } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart index e7dd398c..bd3d36de 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart @@ -1,14 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; -import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart'; import '../../../../../appRouters.dart'; import '../../../../../app_settings/app_colors.dart'; import '../../../../../tools/commonItem.dart'; import '../../../../../tools/titleAppBar.dart'; import '../../../../../translations/trans_lib.dart'; -import '../../lockSet/lockSetInfo_entity.dart'; import 'basicInformation_logic.dart'; class BasicInformationPage extends StatefulWidget { diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_state.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_state.dart similarity index 86% rename from star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_state.dart rename to star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_state.dart index e061ad0d..cd3a2595 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_state.dart +++ b/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_state.dart @@ -1,7 +1,6 @@ import 'package:get/get.dart'; -import '../../../../lockMian/entity/lockListInfo_entity.dart'; import '../../lockSet/lockSetInfo_entity.dart'; class BasicInformationState { @@ -15,4 +14,4 @@ class BasicInformationState { lockSetInfoData.value = map["lockSetInfoData"]; lockBasicInfo.value = lockSetInfoData.value.lockBasicInfo!; } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/burglarAlarm/burglarAlarm_logic.dart b/star_lock/lib/main/lockDetail/lockSet/burglarAlarm/burglarAlarm_logic.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/burglarAlarm/burglarAlarm_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/burglarAlarm/burglarAlarm_logic.dart index e312ab26..4d6b2a26 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/burglarAlarm/burglarAlarm_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/burglarAlarm/burglarAlarm_logic.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; -import 'package:star_lock/blue/io_protocol/io_readSupportFunctionsNoParameters.dart'; import 'package:star_lock/blue/io_protocol/io_setSupportFunctionsNoParameters.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import '../../../../blue/blue_manage.dart'; @@ -207,4 +206,4 @@ class BurglarAlarmLogic extends BaseGetXController{ _replySubscription.cancel(); } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart similarity index 99% rename from star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart rename to star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart index bab2a18c..2dd8478c 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/appRouters.dart'; -import 'package:star_lock/tools/submitBtn.dart'; import '../../../../../app_settings/app_colors.dart'; import '../../../../../tools/titleAppBar.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/checkInCreatCompany/checkInCreatCompany_state.dart b/star_lock/lib/main/lockDetail/lockSet/checkInCreatCompany/checkInCreatCompany_state.dart similarity index 92% rename from star_lock/lib/main/lockDetail/lcokSet/checkInCreatCompany/checkInCreatCompany_state.dart rename to star_lock/lib/main/lockDetail/lockSet/checkInCreatCompany/checkInCreatCompany_state.dart index 9a80bedf..7e67330e 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/checkInCreatCompany/checkInCreatCompany_state.dart +++ b/star_lock/lib/main/lockDetail/lockSet/checkInCreatCompany/checkInCreatCompany_state.dart @@ -2,7 +2,6 @@ import 'package:flutter/cupertino.dart'; import 'package:get/get.dart'; -import '../../../lockMian/entity/lockListInfo_entity.dart'; import '../lockSet/lockSetInfo_entity.dart'; class CheckInCreatCompanyState{ @@ -23,4 +22,4 @@ class CheckInCreatCompanyState{ var map = Get.arguments; lockSetInfoData.value = map["lockSetInfoData"]; } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/configuringWifi/configuringWifi_logic.dart b/star_lock/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi_logic.dart similarity index 99% rename from star_lock/lib/main/lockDetail/lcokSet/configuringWifi/configuringWifi_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi_logic.dart index a2929839..8bcedc1a 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/configuringWifi/configuringWifi_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi_logic.dart @@ -3,7 +3,6 @@ import 'dart:async'; import 'dart:io'; import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; -import 'package:get/get.dart'; import 'package:network_info_plus/network_info_plus.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:star_lock/tools/baseGetXController.dart'; @@ -266,4 +265,4 @@ class ConfiguringWifiLogic extends BaseGetXController{ _replySubscription.cancel(); super.onClose(); } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/diagnose/diagnose_state.dart b/star_lock/lib/main/lockDetail/lockSet/diagnose/diagnose_state.dart similarity index 80% rename from star_lock/lib/main/lockDetail/lcokSet/diagnose/diagnose_state.dart rename to star_lock/lib/main/lockDetail/lockSet/diagnose/diagnose_state.dart index b580a0bf..7bfca458 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/diagnose/diagnose_state.dart +++ b/star_lock/lib/main/lockDetail/lockSet/diagnose/diagnose_state.dart @@ -1,7 +1,6 @@ import 'package:get/get.dart'; -import '../../../lockMian/entity/lockListInfo_entity.dart'; import '../lockSet/lockSetInfo_entity.dart'; class DiagnoseState{ @@ -12,4 +11,4 @@ class DiagnoseState{ lockSetInfoData.value = map["lockSetInfoData"]; } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockEscalation/lockEscalation_logic.dart b/star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_logic.dart similarity index 93% rename from star_lock/lib/main/lockDetail/lcokSet/lockEscalation/lockEscalation_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_logic.dart index 59101c6e..9c5cfb7e 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/lockEscalation/lockEscalation_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_logic.dart @@ -2,7 +2,6 @@ import 'package:star_lock/tools/baseGetXController.dart'; -import '../../../../network/api_repository.dart'; import 'lockEscalation_state.dart'; class LockEscalationLogic extends BaseGetXController{ @@ -38,4 +37,4 @@ class LockEscalationLogic extends BaseGetXController{ // TODO: implement onClose } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_state.dart b/star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_state.dart new file mode 100644 index 00000000..3a0b472d --- /dev/null +++ b/star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_state.dart @@ -0,0 +1,4 @@ + +class LockEscalationState{ + +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart b/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart similarity index 99% rename from star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart index 1e911a59..1e36a072 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart @@ -9,7 +9,6 @@ import 'package:star_lock/blue/io_type.dart'; import '../../../../blue/blue_manage.dart'; import '../../../../blue/io_protocol/io_factoryDataReset.dart'; -import '../../../../blue/io_protocol/io_readSupportFunctionsNoParameters.dart'; import '../../../../blue/io_protocol/io_setSupportFunctionsNoParameters.dart'; import '../../../../blue/io_reply.dart'; import '../../../../blue/io_tool/io_tool.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockSoundSet/lockSoundSet_logic.dart b/star_lock/lib/main/lockDetail/lockSet/lockSoundSet/lockSoundSet_logic.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/lockSoundSet/lockSoundSet_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/lockSoundSet/lockSoundSet_logic.dart index 0784dcc2..06c86829 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/lockSoundSet/lockSoundSet_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/lockSoundSet/lockSoundSet_logic.dart @@ -4,7 +4,6 @@ import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import '../../../../blue/blue_manage.dart'; -import '../../../../blue/io_protocol/io_readSupportFunctionsWithParameters.dart'; import '../../../../blue/io_protocol/io_setSupportFunctionsWithParameters.dart'; import '../../../../blue/io_reply.dart'; import '../../../../blue/io_tool/io_tool.dart'; @@ -222,4 +221,4 @@ class LockSoundSetLogic extends BaseGetXController { _replySubscription.cancel(); } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockSoundSet/lockSoundSet_state.dart b/star_lock/lib/main/lockDetail/lockSet/lockSoundSet/lockSoundSet_state.dart similarity index 92% rename from star_lock/lib/main/lockDetail/lcokSet/lockSoundSet/lockSoundSet_state.dart rename to star_lock/lib/main/lockDetail/lockSet/lockSoundSet/lockSoundSet_state.dart index f1859dfc..fc2f221f 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/lockSoundSet/lockSoundSet_state.dart +++ b/star_lock/lib/main/lockDetail/lockSet/lockSoundSet/lockSoundSet_state.dart @@ -1,6 +1,5 @@ import 'package:get/get.dart'; -import '../../../lockMian/entity/lockListInfo_entity.dart'; import '../lockSet/lockSetInfo_entity.dart'; class LockSoundSetState { @@ -18,4 +17,4 @@ class LockSoundSetState { isOpenLockSound.value = lockSetInfoData.value.lockSettingInfo!.lockSound == 1 ? true : false; lockSoundLevel.value = lockSetInfoData.value.lockSettingInfo!.lockSoundVolume!; } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/markedHouseState/markedHouseState_state.dart b/star_lock/lib/main/lockDetail/lockSet/markedHouseState/markedHouseState_state.dart similarity index 85% rename from star_lock/lib/main/lockDetail/lcokSet/markedHouseState/markedHouseState_state.dart rename to star_lock/lib/main/lockDetail/lockSet/markedHouseState/markedHouseState_state.dart index 1820563d..9c4e882b 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/markedHouseState/markedHouseState_state.dart +++ b/star_lock/lib/main/lockDetail/lockSet/markedHouseState/markedHouseState_state.dart @@ -1,7 +1,6 @@ import 'package:get/get.dart'; -import '../../../lockMian/entity/lockListInfo_entity.dart'; import '../lockSet/lockSetInfo_entity.dart'; class MarkedHouseStateState{ @@ -15,4 +14,4 @@ class MarkedHouseStateState{ roomStatus.value = lockSetInfoData.value.lockStatus!.roomStatus!; } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/motorPower/motorPower_logic.dart b/star_lock/lib/main/lockDetail/lockSet/motorPower/motorPower_logic.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/motorPower/motorPower_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/motorPower/motorPower_logic.dart index 8556b6f8..b36dbcf5 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/motorPower/motorPower_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/motorPower/motorPower_logic.dart @@ -4,7 +4,6 @@ import 'dart:async'; import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; import '../../../../blue/blue_manage.dart'; -import '../../../../blue/io_protocol/io_readSupportFunctionsNoParameters.dart'; import '../../../../blue/io_protocol/io_setSupportFunctionsNoParameters.dart'; import '../../../../blue/io_reply.dart'; import '../../../../blue/io_tool/io_tool.dart'; diff --git a/star_lock/lib/main/lockDetail/lcokSet/normallyOpenMode/normallyOpenMode_logic.dart b/star_lock/lib/main/lockDetail/lockSet/normallyOpenMode/normallyOpenMode_logic.dart similarity index 99% rename from star_lock/lib/main/lockDetail/lcokSet/normallyOpenMode/normallyOpenMode_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/normallyOpenMode/normallyOpenMode_logic.dart index adb18730..2d778fd1 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/normallyOpenMode/normallyOpenMode_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/normallyOpenMode/normallyOpenMode_logic.dart @@ -5,7 +5,6 @@ import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import '../../../../blue/blue_manage.dart'; -import '../../../../blue/io_protocol/io_readSupportFunctionsWithParameters.dart'; import '../../../../blue/io_protocol/io_setSupportFunctionsWithParameters.dart'; import '../../../../blue/io_reply.dart'; import '../../../../blue/io_tool/io_tool.dart'; @@ -266,4 +265,4 @@ class NormallyOpenModeLogic extends BaseGetXController{ _replySubscription.cancel(); } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/openDoorDirection/openDoorDirection_logic.dart b/star_lock/lib/main/lockDetail/lockSet/openDoorDirection/openDoorDirection_logic.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/openDoorDirection/openDoorDirection_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/openDoorDirection/openDoorDirection_logic.dart index 0f782546..ea5d7997 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/openDoorDirection/openDoorDirection_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/openDoorDirection/openDoorDirection_logic.dart @@ -4,7 +4,6 @@ import 'dart:async'; import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; import '../../../../blue/blue_manage.dart'; -import '../../../../blue/io_protocol/io_readSupportFunctionsNoParameters.dart'; import '../../../../blue/io_protocol/io_setSupportFunctionsNoParameters.dart'; import '../../../../blue/io_reply.dart'; import '../../../../blue/io_tool/io_tool.dart'; @@ -192,4 +191,4 @@ class OpenDoorDirectionLogic extends BaseGetXController { _replySubscription.cancel(); } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/remoteUnlocking/remoteUnlocking_logic.dart b/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart similarity index 98% rename from star_lock/lib/main/lockDetail/lcokSet/remoteUnlocking/remoteUnlocking_logic.dart rename to star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart index a40fe439..766b5243 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/remoteUnlocking/remoteUnlocking_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart @@ -4,7 +4,6 @@ import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import '../../../../blue/blue_manage.dart'; -import '../../../../blue/io_protocol/io_readSupportFunctionsNoParameters.dart'; import '../../../../blue/io_protocol/io_setSupportFunctionsNoParameters.dart'; import '../../../../blue/io_reply.dart'; import '../../../../blue/io_tool/io_tool.dart'; @@ -206,4 +205,4 @@ class RemoteUnlockingLogic extends BaseGetXController{ _replySubscription.cancel(); } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/lcokSet/resetButton/resetButton_state.dart b/star_lock/lib/main/lockDetail/lockSet/resetButton/resetButton_state.dart similarity index 90% rename from star_lock/lib/main/lockDetail/lcokSet/resetButton/resetButton_state.dart rename to star_lock/lib/main/lockDetail/lockSet/resetButton/resetButton_state.dart index 3d5c6d00..9fae5267 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/resetButton/resetButton_state.dart +++ b/star_lock/lib/main/lockDetail/lockSet/resetButton/resetButton_state.dart @@ -1,7 +1,6 @@ import 'package:get/get.dart'; -import '../../../lockMian/entity/lockListInfo_entity.dart'; import '../lockSet/lockSetInfo_entity.dart'; class ResetButtonState{ @@ -19,4 +18,4 @@ class ResetButtonState{ resetButtonEnable.value = lockSetInfoData.value.lockSettingInfo!.resetSwitch!; } -} \ No newline at end of file +} From d57361a6264a63488997b43a462d62cf1b3d2372 Mon Sep 17 00:00:00 2001 From: GeJiaXiang <353358601@qq.com> Date: Tue, 23 Jan 2024 17:48:06 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=94=99=E5=88=AB?= =?UTF-8?q?=E5=AD=97=20selet2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._round_selet.png => icon_round_select.png} | Bin ...nd_unSelet.png => icon_round_unSelect.png} | Bin ...elet.png => icon_round_white_unSelect.png} | Bin star_lock/images/lan/lan_en.json | 16 +++---- star_lock/images/lan/lan_keys.json | 16 +++---- star_lock/images/lan/lan_zh.json | 16 +++---- ...png => icon_mine_selectGatewayType_G2.png} | Bin ...png => icon_mine_selectGatewayType_G4.png} | Bin ...g => icon_mine_selectGatewayType_next.png} | Bin ...ain_selet.png => icon_tab_main_select.png} | Bin ...unselet.png => icon_tab_main_unselect.png} | Bin ...ab_my_selet.png => icon_tab_my_select.png} | Bin ...y_unselet.png => icon_tab_my_unselect.png} | Bin star_lock/lib/appRouters.dart | 36 ++++++++-------- .../lib/login/login/starLock_login_page.dart | 2 +- .../register/starLock_register_page.dart | 2 +- .../common/countryRegionEntity.dart | 0 .../common/index.dart | 0 .../common/utils.dart | 2 +- .../selectCountryRegion_page.dart} | 4 +- .../authorizedAdmin_logic.dart | 4 +- .../authorizedAdmin/authorizedAdmin_page.dart | 2 +- .../volumeAuthorizationLock_page.dart | 2 +- .../addCardTypeManage_tabbar.dart | 12 +++--- .../card/addCardType/addCardType_logic.dart | 8 ++-- .../card/addCardType/addCardType_page.dart | 12 +++--- .../card/addCardType/addCardType_state.dart | 4 +- .../card/cardList/cardList_page.dart | 2 +- .../checkingInAddHolidays_page.dart | 6 +-- .../checkingInSetHolidays_logic.dart | 4 +- .../checkingInSetHolidays_page.dart | 4 +- .../checkingInSetHolidays_state.dart | 4 +- .../checkingInList/checkingInList_page.dart | 12 +++--- .../checkingInSetWorkdaySet_page.dart | 6 +-- .../checkingInAddStaff_logic.dart | 16 +++---- .../checkingInAddStaff_page.dart | 28 ++++++------ .../checkingInAddStaff_state.dart | 18 ++++---- .../doorLockLog/doorLockLog_page.dart | 2 +- .../massSendElectronicKey_page.dart | 2 +- .../lockUserList/lockUserList_page.dart | 2 +- .../massSendLockGroupCell.dart | 2 +- .../massSendLockGroupList_page.dart | 8 ++-- .../massSendReceiver_page.dart | 2 +- .../sendElectronicKey_logic.dart | 4 +- .../sendElectronicKey_page.dart | 2 +- .../addFaceTypeManage_tabbar.dart | 12 +++--- .../face/addFaceType/addFaceType_page.dart | 10 ++--- .../face/faceList/faceList_page.dart | 2 +- .../addFingerprintTypeManage_tabbar.dart | 14 +++--- .../addFingerprintType_logic.dart | 8 ++-- .../addFingerprintType_page.dart | 12 +++--- .../addFingerprintType_state.dart | 4 +- .../fingerprintList/fingerprintList_page.dart | 2 +- .../lockOperatingRecord_page.dart | 2 +- .../lockSoundSet/lockSoundSet_page.dart | 10 ++--- .../lockSet/lockUser/lockUser_page.dart | 2 +- .../markedHouseState_page.dart | 4 +- .../coerceFingerprintList_page.dart | 2 +- .../normallyOpenMode_page.dart | 2 +- .../notificationMode_page.dart | 2 +- .../addWirelessKeyboard_page.dart | 2 +- ...WirelessKeyboardScreenNotLightOn_page.dart | 2 +- .../selectWirelessKeyboard_page.dart} | 2 +- .../monitoring/lockMonitoring_page.dart | 2 +- .../addRemoteControlManage_tabbar.dart | 12 +++--- .../addRemoteControl_page.dart | 10 ++--- .../remoteControlList_page.dart | 2 +- .../editVideoLog/editVideoLog_page.dart | 4 +- .../editVideoLog/editVideoLog_state.dart | 2 +- .../demoModeLockDetail_page.dart | 2 +- .../demoModeLockSet/demoModeLockSet_page.dart | 2 +- .../main/lockMian/lockMain/lockMain_page.dart | 2 +- .../addLockSelectCountry_page.dart | 12 +++--- .../addLock/nearbyLock/nearbyLock_page.dart | 2 +- .../addLock/nearbyLock/nearbyLock_state.dart | 4 +- .../selectLockType_page.dart} | 0 .../gatewayConfigurationWifi_page.dart | 2 +- .../selectGatewayList_page.dart} | 4 +- .../selectGatewayType_page.dart} | 14 +++--- .../selectGatewayTypeNextTip_page.dart} | 6 +-- .../gateway/gatewayList/gatewayList_page.dart | 2 +- .../lib/mine/message/messageList_page.dart | 4 +- .../mine/safeVerify/safeVerify_state.dart | 2 +- .../lib/mine/mine/starLockMine_page.dart | 2 +- .../minePersonInfoEditAccountNext_state.dart | 2 +- .../minePersonInfoEditIphone_page.dart | 2 +- .../addAuthorizedAdministrator_logic.dart | 4 +- .../addAuthorizedAdministrator_page.dart | 2 +- ...ppUnlockNeedMobileNetworkingLock_page.dart | 4 +- .../getDeviceList_page.dart | 2 +- .../authorityManagement/getNameList_page.dart | 2 +- .../groupEditLock/groupEditLock_logic.dart | 4 +- .../groupEditLock/groupEditLock_page.dart | 2 +- .../groupEditLock/groupEditLock_state.dart | 6 +-- .../selectGetewayList_entity.dart | 4 +- .../selectGetewayList_page.dart | 14 +++--- .../recipientInformation_page.dart | 2 +- .../transferSmartLock_entity.dart | 2 +- .../transferSmartLock_page.dart | 14 +++--- .../valueAddedServicesBuy_page.dart | 2 +- star_lock/lib/nav/navPages.dart | 8 ++-- star_lock/lib/network/api_repository.dart | 2 +- star_lock/lib/tools/ExpandedListView.dart | 2 +- star_lock/lib/tools/showCalendar.dart | 6 +-- star_lock/lib/translations/lanKeyEntity.dart | 40 +++++++++--------- 105 files changed, 287 insertions(+), 287 deletions(-) rename star_lock/images/{icon_round_selet.png => icon_round_select.png} (100%) rename star_lock/images/{icon_round_unSelet.png => icon_round_unSelect.png} (100%) rename star_lock/images/{icon_round_white_unSelet.png => icon_round_white_unSelect.png} (100%) rename star_lock/images/mine/{icon_mine_seletGatewayType_G2.png => icon_mine_selectGatewayType_G2.png} (100%) rename star_lock/images/mine/{icon_mine_seletGatewayType_G4.png => icon_mine_selectGatewayType_G4.png} (100%) rename star_lock/images/mine/{icon_mine_seletGatewayType_next.png => icon_mine_selectGatewayType_next.png} (100%) rename star_lock/images/tabbar/{icon_tab_main_selet.png => icon_tab_main_select.png} (100%) rename star_lock/images/tabbar/{icon_tab_main_unselet.png => icon_tab_main_unselect.png} (100%) rename star_lock/images/tabbar/{icon_tab_my_selet.png => icon_tab_my_select.png} (100%) rename star_lock/images/tabbar/{icon_tab_my_unselet.png => icon_tab_my_unselect.png} (100%) rename star_lock/lib/login/{seletCountryRegion => selectCountryRegion}/common/countryRegionEntity.dart (100%) rename star_lock/lib/login/{seletCountryRegion => selectCountryRegion}/common/index.dart (100%) rename star_lock/lib/login/{seletCountryRegion => selectCountryRegion}/common/utils.dart (96%) rename star_lock/lib/login/{seletCountryRegion/seletCountryRegion_page.dart => selectCountryRegion/selectCountryRegion_page.dart} (94%) rename star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/{seletWirelessKeyboard/seletWirelessKeyboard_page.dart => selectWirelessKeyboard/selectWirelessKeyboard_page.dart} (96%) rename star_lock/lib/mine/addLock/{seletLockType/seletLockType_page.dart => selectLockType/selectLockType_page.dart} (100%) rename star_lock/lib/mine/gateway/addGateway/{seletGateway/seletGatewayList_page.dart => selectGateway/selectGatewayList_page.dart} (96%) rename star_lock/lib/mine/gateway/addGateway/{seletGatewayType/seletGatewayType_page.dart => selectGatewayType/selectGatewayType_page.dart} (81%) rename star_lock/lib/mine/gateway/addGateway/{seletGatewayTypeNextTip/seletGatewayTypeNextTip_page.dart => selectGatewayTypeNextTip/selectGatewayTypeNextTip_page.dart} (91%) diff --git a/star_lock/images/icon_round_selet.png b/star_lock/images/icon_round_select.png similarity index 100% rename from star_lock/images/icon_round_selet.png rename to star_lock/images/icon_round_select.png diff --git a/star_lock/images/icon_round_unSelet.png b/star_lock/images/icon_round_unSelect.png similarity index 100% rename from star_lock/images/icon_round_unSelet.png rename to star_lock/images/icon_round_unSelect.png diff --git a/star_lock/images/icon_round_white_unSelet.png b/star_lock/images/icon_round_white_unSelect.png similarity index 100% rename from star_lock/images/icon_round_white_unSelet.png rename to star_lock/images/icon_round_white_unSelect.png diff --git a/star_lock/images/lan/lan_en.json b/star_lock/images/lan/lan_en.json index cda22c7e..87ae5eca 100644 --- a/star_lock/images/lan/lan_en.json +++ b/star_lock/images/lan/lan_en.json @@ -50,7 +50,7 @@ "sendGroupKey":"Send Group Key", "lock":"Lock", "pleaseAdd":"Please Add", - "pleaseSelet":"Please Selet", + "pleaseSelect":"Please Select", "remoteUnlockingAllowed":"Remote Unlocking Allowed", "pleaseEnter":"Please Enter", "getPassword":"Get Password", @@ -170,7 +170,7 @@ "allDay":"All Day", "save":"Save", "normallyOpenModeTip":"During the set normal opening time, the lock will remain open after opening until it is manually closed During the set normal opening time, the lock will remain open after opening until it is manually closed", - "pleaseSeletLockVolume":"Please Selet Lock Volume", + "pleaseSelectLockVolume":"Please Select Lock Volume", "lockSoundTip":"When the function is enabled, you can hear the prompt tone of the smart lock. Including low battery, incorrect password and so on.", "low":"Low", "lower":"Lower", @@ -282,7 +282,7 @@ "addGateway": "Add Gateway", "turnThePowerBackOn": "Turn The Power Back On", "indicatorLight": "Indicator Light", - "seletGatewayTypeNextTip": "Repower the gateway and click Next when the indicator light flashes alternately", + "selectGatewayTypeNextTip": "Repower the gateway and click Next when the indicator light flashes alternately", "selectGateway": "Select Gateway", "gatewayConfigurationWifiTip": "5G WiFi network is not supported, please choose 2.4G WiFi network for configuration", "wifiPassward": "WiFi Passward", @@ -325,7 +325,7 @@ "email":"Email", "mobileNumber":"Mobile phone number", "countryAndRegion":"Country And Region", - "selet":"Selet", + "select":"Select", "getVerificationCode":"Get Verification Code", "businessCooperation":"Business Cooperation", @@ -349,7 +349,7 @@ "customMailTemplate":"Custom Mail Template", "record":"Record", "buyRealNameTip":"When an electronic key is sent to the user, the user can be required to authenticate with his real name before unlocking to ensure that he is operating. The real-name authentication calls the interface of the national Public security system. For the payment function, please purchase the number of times before using it.", - "buyRealNameSeletYouWantBuyTip":"Please select the frequency of real name authentication you want", + "buyRealNameSelectYouWantBuyTip":"Please select the frequency of real name authentication you want", "forTheFirstTime":"For the first time", "onceDay":"once a day", "weekOnce":"once a week", @@ -417,9 +417,9 @@ "whetherTheEmployeeHasPassword":"If The Employee Has A Password", "whetherTheEmployeeHasCard":"If The Employee Has A Card", "whetherTheEmployeeHasFingerprint":"If The Employee Has A Fingerprint", - "seletPassword":"Selet Password", - "seletCard":"Selet Card", - "seletFingerprint":"Selet Fingerprint", + "selectPassword":"Select Password", + "selectCard":"Select Card", + "selectFingerprint":"Select Fingerprint", "getKey":"Get Key", "getCard":"Get Card", "getFingerprint":"Get Fingerprint", diff --git a/star_lock/images/lan/lan_keys.json b/star_lock/images/lan/lan_keys.json index da91ebd3..0201e002 100644 --- a/star_lock/images/lan/lan_keys.json +++ b/star_lock/images/lan/lan_keys.json @@ -50,7 +50,7 @@ "sendGroupKey":"sendGroupKey", "lock":"lock", "pleaseAdd":"pleaseAdd", - "pleaseSelet":"pleaseSelet", + "pleaseSelect":"pleaseSelect", "remoteUnlockingAllowed":"remoteUnlockingAllowed", "pleaseEnter":"pleaseEnter", "getPassword":"getPassword", @@ -170,7 +170,7 @@ "allDay":"allDay", "save":"save", "normallyOpenModeTip":"normallyOpenModeTip", - "pleaseSeletLockVolume":"pleaseSeletLockVolume", + "pleaseSelectLockVolume":"pleaseSelectLockVolume", "lockSoundTip":"lockSoundTip", "low":"low", "lower":"lower", @@ -282,7 +282,7 @@ "addGateway": "addGateway", "turnThePowerBackOn": "turnThePowerBackOn", "indicatorLight": "indicatorLight", - "seletGatewayTypeNextTip": "seletGatewayTypeNextTip", + "selectGatewayTypeNextTip": "selectGatewayTypeNextTip", "selectGateway": "selectGateway", "gatewayConfigurationWifiTip": "gatewayConfigurationWifiTip", "wifiPassward": "wifiPassward", @@ -325,7 +325,7 @@ "email":"email", "mobileNumber":"mobileNumber", "countryAndRegion":"countryAndRegion", - "selet":"selet", + "select":"select", "getVerificationCode":"getVerificationCode", "businessCooperation":"businessCooperation", @@ -349,7 +349,7 @@ "customMailTemplate":"customMailTemplate", "record":"record", "buyRealNameTip":"buyRealNameTip", - "buyRealNameSeletYouWantBuyTip":"buyRealNameSeletYouWantBuyTip", + "buyRealNameSelectYouWantBuyTip":"buyRealNameSelectYouWantBuyTip", "forTheFirstTime":"forTheFirstTime", "onceDay":"onceDay", "weekOnce":"weekOnce", @@ -417,9 +417,9 @@ "whetherTheEmployeeHasPassword":"whetherTheEmployeeHasPassword", "whetherTheEmployeeHasCard":"whetherTheEmployeeHasCard", "whetherTheEmployeeHasFingerprint":"whetherTheEmployeeHasFingerprint", - "seletPassword":"seletPassword", - "seletCard":"seletCard", - "seletFingerprint":"seletFingerprint", + "selectPassword":"selectPassword", + "selectCard":"selectCard", + "selectFingerprint":"selectFingerprint", "getKey":"getKey", "getCard":"getCard", "getFingerprint":"getFingerprint", diff --git a/star_lock/images/lan/lan_zh.json b/star_lock/images/lan/lan_zh.json index 2f4064c2..323b6496 100644 --- a/star_lock/images/lan/lan_zh.json +++ b/star_lock/images/lan/lan_zh.json @@ -50,7 +50,7 @@ "sendGroupKey":"群发钥匙", "lock":"锁", "pleaseAdd":"请添加", - "pleaseSelet":"请选择", + "pleaseSelect":"请选择", "remoteUnlockingAllowed":"允许远程开锁", "pleaseEnter":"请输入", "getPassword":"获取密码", @@ -170,7 +170,7 @@ "allDay":"全天", "save":"保存", "normallyOpenModeTip":"在设置的常开时间内,锁被打开后将一直处于打开的状态,直到被手动关闭", - "pleaseSeletLockVolume":"请选择锁音量", + "pleaseSelectLockVolume":"请选择锁音量", "lockSoundTip":"功能开启后,你将可以听到智能锁的提示音。包括电量过低,密码错误等提示。", "low":"低", "lower":"较低", @@ -282,7 +282,7 @@ "addGateway": "添加网关", "turnThePowerBackOn": "重新通电", "indicatorLight": "指示灯", - "seletGatewayTypeNextTip": "将网关重新通电,指示灯交替闪烁时点击下一步", + "selectGatewayTypeNextTip": "将网关重新通电,指示灯交替闪烁时点击下一步", "selectGateway": "选择网关", "gatewayConfigurationWifiTip": "不支持5G WiFi网络,请选择2.4G WiFi网络进行配置", "wifiPassward": "WiFi密码", @@ -325,7 +325,7 @@ "email":"邮箱", "mobileNumber":"手机号", "countryAndRegion":"国家/地区", - "selet":"选择", + "select":"选择", "getVerificationCode":"获取验证码", "businessCooperation":"商务合作", @@ -350,7 +350,7 @@ "record":"记录", "buyRealNameTip":"给用户发送电子钥匙时,可以要求其开锁前先进行实名认证,以保证是他本人在操作。实名认证调用国家公安系统接口,为付费功能,请购买次数后再使用。", - "buyRealNameSeletYouWantBuyTip":"请选择你希望的实名认证频数", + "buyRealNameSelectYouWantBuyTip":"请选择你希望的实名认证频数", "forTheFirstTime":"仅首次", "onceDay":"每日一次", "weekOnce":"每周一次", @@ -420,9 +420,9 @@ "whetherTheEmployeeHasPassword":"员工是否有密码", "whetherTheEmployeeHasCard":"员工是否有卡", "whetherTheEmployeeHasFingerprint":"员工是否有指纹", - "seletPassword":"选择密码", - "seletCard":"选择卡", - "seletFingerprint":"选择指纹", + "selectPassword":"选择密码", + "selectCard":"选择卡", + "selectFingerprint":"选择指纹", "getKey":"获取钥匙", "getCard":"获取卡", "getFingerprint":"获取指纹", diff --git a/star_lock/images/mine/icon_mine_seletGatewayType_G2.png b/star_lock/images/mine/icon_mine_selectGatewayType_G2.png similarity index 100% rename from star_lock/images/mine/icon_mine_seletGatewayType_G2.png rename to star_lock/images/mine/icon_mine_selectGatewayType_G2.png diff --git a/star_lock/images/mine/icon_mine_seletGatewayType_G4.png b/star_lock/images/mine/icon_mine_selectGatewayType_G4.png similarity index 100% rename from star_lock/images/mine/icon_mine_seletGatewayType_G4.png rename to star_lock/images/mine/icon_mine_selectGatewayType_G4.png diff --git a/star_lock/images/mine/icon_mine_seletGatewayType_next.png b/star_lock/images/mine/icon_mine_selectGatewayType_next.png similarity index 100% rename from star_lock/images/mine/icon_mine_seletGatewayType_next.png rename to star_lock/images/mine/icon_mine_selectGatewayType_next.png diff --git a/star_lock/images/tabbar/icon_tab_main_selet.png b/star_lock/images/tabbar/icon_tab_main_select.png similarity index 100% rename from star_lock/images/tabbar/icon_tab_main_selet.png rename to star_lock/images/tabbar/icon_tab_main_select.png diff --git a/star_lock/images/tabbar/icon_tab_main_unselet.png b/star_lock/images/tabbar/icon_tab_main_unselect.png similarity index 100% rename from star_lock/images/tabbar/icon_tab_main_unselet.png rename to star_lock/images/tabbar/icon_tab_main_unselect.png diff --git a/star_lock/images/tabbar/icon_tab_my_selet.png b/star_lock/images/tabbar/icon_tab_my_select.png similarity index 100% rename from star_lock/images/tabbar/icon_tab_my_selet.png rename to star_lock/images/tabbar/icon_tab_my_select.png diff --git a/star_lock/images/tabbar/icon_tab_my_unselet.png b/star_lock/images/tabbar/icon_tab_my_unselect.png similarity index 100% rename from star_lock/images/tabbar/icon_tab_my_unselet.png rename to star_lock/images/tabbar/icon_tab_my_unselect.png diff --git a/star_lock/lib/appRouters.dart b/star_lock/lib/appRouters.dart index 1cbaaacb..ca1894fb 100644 --- a/star_lock/lib/appRouters.dart +++ b/star_lock/lib/appRouters.dart @@ -40,7 +40,7 @@ import 'common/safetyVerification/safetyVerification_page.dart'; import 'login/forgetPassword/starLock_forgetPassword_page.dart'; import 'login/login/starLock_login_page.dart'; import 'login/register/starLock_register_page.dart'; -import 'login/seletCountryRegion/seletCountryRegion_page.dart'; +import 'login/selectCountryRegion/selectCountryRegion_page.dart'; import 'main/lockDetail/card/addCardType/addCardManage/addCardTypeManage_page.dart'; import 'main/lockDetail/card/addICCard/addICCard_page.dart'; import 'main/lockDetail/card/cardDetail/cardDetail_page.dart'; @@ -100,7 +100,7 @@ import 'main/lockDetail/lockSet/unlockQRCode/unlockQRCode_page.dart'; import 'main/lockDetail/lockSet/uploadData/uploadData_page.dart'; import 'main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboard/addWirelessKeyboard_page.dart'; import 'main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboardScreenNotLightOn/addWirelessKeyboardScreenNotLightOn_page.dart'; -import 'main/lockDetail/lockSet/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart'; +import 'main/lockDetail/lockSet/wirelessKeyboard/selectWirelessKeyboard/selectWirelessKeyboard_page.dart'; import 'main/lockDetail/lockSet/wirelessKeyboard/wirelessKeyboardList/wirelessKeyboard_page.dart'; import 'main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart'; import 'main/lockDetail/monitoring/monitoringRealTimeScreen/monitoringRealTimeScreen_page.dart'; @@ -136,11 +136,11 @@ import 'mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart'; import 'mine/addLock/lockAddress/lockAddress/lockAddress_page.dart'; import 'mine/addLock/nearbyLock/nearbyLock_page.dart'; import 'mine/addLock/saveLock/saveLock_page.dart'; -import 'mine/addLock/seletLockType/seletLockType_page.dart'; +import 'mine/addLock/selectLockType/selectLockType_page.dart'; import 'mine/gateway/addGateway/gatewayConfigurationWifi/gatewayConfigurationWifi_page.dart'; -import 'mine/gateway/addGateway/seletGateway/seletGatewayList_page.dart'; -import 'mine/gateway/addGateway/seletGatewayType/seletGatewayType_page.dart'; -import 'mine/gateway/addGateway/seletGatewayTypeNextTip/seletGatewayTypeNextTip_page.dart'; +import 'mine/gateway/addGateway/selectGateway/selectGatewayList_page.dart'; +import 'mine/gateway/addGateway/selectGatewayType/selectGatewayType_page.dart'; +import 'mine/gateway/addGateway/selectGatewayTypeNextTip/selectGatewayTypeNextTip_page.dart'; import 'mine/gateway/gatewayConnectionLock/gatewayConnectionLockList_page.dart'; import 'mine/gateway/gatewayDetail/gatewayDetail_page.dart'; import 'mine/gateway/gatewayList/gatewayList_page.dart'; @@ -183,7 +183,7 @@ abstract class Routers { static const initial = '/'; // 加载页 static const starLockMain = '/StarLockMain'; // 首页 static const starLockMinePage = '/StarLockMinePage'; // 我的 - static const seletLockTypePage = '/SelectLockTypePage'; // 选择锁类型 + static const selectLockTypePage = '/SelectLockTypePage'; // 选择锁类型 static const LockMallPage = '/LockMallPage'; // 商城页面 static const addLockPage = '/AddLockPage'; // 选择锁类型 static const nearbyLockPage = '/NearbyLockPage'; // 附近的锁 @@ -238,7 +238,7 @@ abstract class Routers { static const addWirelessKeyboardPage = '/AddWirelessKeyboardPage'; // 添加蓝牙键盘 static const addWirelessKeyboardScreenNotLightOnPage = '/AddWirelessKeyboardScreenNotLightOnPage'; // 添加蓝牙键盘屏幕不亮时提示 - static const seletWirelessKeyboardPage = + static const selectWirelessKeyboardPage = '/SelectWirelessKeyboardPage'; // 选择蓝牙键盘 static const doorMagneticPage = '/DoorMagneticPage'; // 门磁列表 static const addDoorMagneticPage = '/AddDoorMagneticPage'; // 添加门磁 @@ -296,10 +296,10 @@ abstract class Routers { static const gatewayDetailPage = '/GatewayDetailPage'; // 我的-网关详情 static const gatewayConnectionLockPage = '/GatewayConnectionLockPage'; // 我的-网关网关链接的锁 - static const seletGatewayTypePage = '/SelectGatewayTypePage'; // 我的-选择网关类型 - static const seletGatewayTypeNextTipPage = + static const selectGatewayTypePage = '/SelectGatewayTypePage'; // 我的-选择网关类型 + static const selectGatewayTypeNextTipPage = '/SelectGatewayTypeNextTipPage'; // 我的-选择网关类型下一步 - static const seletGatewayPage = '/SelectGatewayPage'; // 我的-选择网关 + static const selectGatewayPage = '/SelectGatewayPage'; // 我的-选择网关 static const gatewayConfigurationWifiPage = '/GatewayConfigurationWifiPage'; // 我的-网关配置wifi @@ -350,7 +350,7 @@ abstract class Routers { static const starLockRegisterPage = '/StarLockRegisterPage'; // 注册 static const starLockForgetPasswordPage = '/StarLockForgetPasswordPage'; // 忘记密码 - static const seletCountryRegionPage = '/SelectCountryRegionPage'; // 选择国家和地区 + static const selectCountryRegionPage = '/SelectCountryRegionPage'; // 选择国家和地区 static const safetyVerificationPage = '/SafetyVerificationPage'; // 安全验证 static const keyOperationRecordPage = '/keyOperationRecordPage'; //钥匙详情-操作记录 @@ -435,7 +435,7 @@ abstract class AppRouters { page: () => const StarLockMinePage(), ), GetPage( - name: Routers.seletLockTypePage, + name: Routers.selectLockTypePage, page: () => const SelectLockTypePage(), ), GetPage( @@ -551,7 +551,7 @@ abstract class AppRouters { page: () => const StarLockForgetPasswordPage(), ), GetPage( - name: Routers.seletCountryRegionPage, + name: Routers.selectCountryRegionPage, page: () => const SelectCountryRegionPage(), ), GetPage( @@ -591,7 +591,7 @@ abstract class AppRouters { page: () => const AddWirelessKeyboardScreenNotLightOnPage(), ), GetPage( - name: Routers.seletWirelessKeyboardPage, + name: Routers.selectWirelessKeyboardPage, page: () => const SelectWirelessKeyboardPage(), ), GetPage( @@ -759,15 +759,15 @@ abstract class AppRouters { page: () => const GatewayConnectionLockListPage(), ), GetPage( - name: Routers.seletGatewayTypePage, + name: Routers.selectGatewayTypePage, page: () => const SelectGatewayTypePage(), ), GetPage( - name: Routers.seletGatewayTypeNextTipPage, + name: Routers.selectGatewayTypeNextTipPage, page: () => const SelectGatewayTypeNextTipPage(), ), GetPage( - name: Routers.seletGatewayPage, + name: Routers.selectGatewayPage, page: () => const SelectGatewayListPage(), ), GetPage( diff --git a/star_lock/lib/login/login/starLock_login_page.dart b/star_lock/lib/login/login/starLock_login_page.dart index 01569f7c..bca2f41b 100644 --- a/star_lock/lib/login/login/starLock_login_page.dart +++ b/star_lock/lib/login/login/starLock_login_page.dart @@ -90,7 +90,7 @@ class _StarLockLoginPageState extends State { state.agree.value = !state.agree.value; logic.changeAgreeState(); }, - child: Image.asset(state.agree.value ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,) + child: Image.asset(state.agree.value ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,) )), SizedBox(width: 15.w,), Flexible( diff --git a/star_lock/lib/login/register/starLock_register_page.dart b/star_lock/lib/login/register/starLock_register_page.dart index 96f00b9b..f0026f1b 100644 --- a/star_lock/lib/login/register/starLock_register_page.dart +++ b/star_lock/lib/login/register/starLock_register_page.dart @@ -142,7 +142,7 @@ class _StarLockRegisterPageState extends State { GestureDetector( onTap: () async { var result = await Navigator.pushNamed( - context, Routers.seletCountryRegionPage); + context, Routers.selectCountryRegionPage); if (result != null) { result as Map; logic.state.countryCode.value = result['code']; diff --git a/star_lock/lib/login/seletCountryRegion/common/countryRegionEntity.dart b/star_lock/lib/login/selectCountryRegion/common/countryRegionEntity.dart similarity index 100% rename from star_lock/lib/login/seletCountryRegion/common/countryRegionEntity.dart rename to star_lock/lib/login/selectCountryRegion/common/countryRegionEntity.dart diff --git a/star_lock/lib/login/seletCountryRegion/common/index.dart b/star_lock/lib/login/selectCountryRegion/common/index.dart similarity index 100% rename from star_lock/lib/login/seletCountryRegion/common/index.dart rename to star_lock/lib/login/selectCountryRegion/common/index.dart diff --git a/star_lock/lib/login/seletCountryRegion/common/utils.dart b/star_lock/lib/login/selectCountryRegion/common/utils.dart similarity index 96% rename from star_lock/lib/login/seletCountryRegion/common/utils.dart rename to star_lock/lib/login/selectCountryRegion/common/utils.dart index f3eea6f5..ec1dcf35 100644 --- a/star_lock/lib/login/seletCountryRegion/common/utils.dart +++ b/star_lock/lib/login/selectCountryRegion/common/utils.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:star_lock/app_settings/app_colors.dart'; -import 'package:star_lock/login/seletCountryRegion/common/countryRegionEntity.dart'; +import 'package:star_lock/login/selectCountryRegion/common/countryRegionEntity.dart'; class Utils { static String getImgPath(String name, {String format = 'png'}) { diff --git a/star_lock/lib/login/seletCountryRegion/seletCountryRegion_page.dart b/star_lock/lib/login/selectCountryRegion/selectCountryRegion_page.dart similarity index 94% rename from star_lock/lib/login/seletCountryRegion/seletCountryRegion_page.dart rename to star_lock/lib/login/selectCountryRegion/selectCountryRegion_page.dart index 5b0aa532..a93058b3 100644 --- a/star_lock/lib/login/seletCountryRegion/seletCountryRegion_page.dart +++ b/star_lock/lib/login/selectCountryRegion/selectCountryRegion_page.dart @@ -2,7 +2,7 @@ import 'package:azlistview/azlistview.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; -import 'package:star_lock/login/seletCountryRegion/common/countryRegionEntity.dart'; +import 'package:star_lock/login/selectCountryRegion/common/countryRegionEntity.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; @@ -72,7 +72,7 @@ class _SelectCountryRegionPageState extends State { backgroundColor: const Color(0xFFFFFFFF), appBar: TitleAppBar( barTitle: - "${TranslationLoader.lanKeys!.selet!.tr} ${TranslationLoader.lanKeys!.countryAndRegion!.tr}", + "${TranslationLoader.lanKeys!.select!.tr} ${TranslationLoader.lanKeys!.countryAndRegion!.tr}", haveBack: true, backgroundColor: AppColors.mainColor, ), diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart index c72a560f..51934ce7 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart @@ -284,13 +284,13 @@ class AuthorizedAdminLogic extends BaseGetXController { }, ), CupertinoDialogAction( - child: Text(TranslationLoader.lanKeys!.selet!.tr), + child: Text(TranslationLoader.lanKeys!.select!.tr), onPressed: () async { //选择国家代码 state.isCreateUser.value = true; Navigator.of(context).pop(); - var result = await Get.toNamed(Routers.seletCountryRegionPage); + var result = await Get.toNamed(Routers.selectCountryRegionPage); if (result != null) { result as Map; state.countryCode.value = result['code']; diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart index f23db1a7..f64ad11f 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart @@ -101,7 +101,7 @@ class _AuthorizedAdminPageState extends State { ), action: () async { var result = await Navigator.pushNamed( - context, Routers.seletCountryRegionPage); + context, Routers.selectCountryRegionPage); if (result != null) { result as Map; state.countryCode.value = result['code']; diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/volumeAuthorizationLock/volumeAuthorizationLock_page.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/volumeAuthorizationLock/volumeAuthorizationLock_page.dart index baaaaa87..b1e52e40 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/volumeAuthorizationLock/volumeAuthorizationLock_page.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/volumeAuthorizationLock/volumeAuthorizationLock_page.dart @@ -136,7 +136,7 @@ class _VolumeAuthorizationLockPageState ), action: () async { var result = await Navigator.pushNamed( - context, Routers.seletCountryRegionPage); + context, Routers.selectCountryRegionPage); if (result != null) { result as Map; countryCode = result['code']; diff --git a/star_lock/lib/main/lockDetail/card/addCardType/addCardManage/addCardTypeManage_tabbar.dart b/star_lock/lib/main/lockDetail/card/addCardType/addCardManage/addCardTypeManage_tabbar.dart index 6e42b12b..ed25cee6 100644 --- a/star_lock/lib/main/lockDetail/card/addCardType/addCardManage/addCardTypeManage_tabbar.dart +++ b/star_lock/lib/main/lockDetail/card/addCardType/addCardManage/addCardTypeManage_tabbar.dart @@ -26,9 +26,9 @@ class _AddCardManageTabbarState extends State with SingleTi late TabController _tabController; final List _itemTabs = [ - ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, seletType: "0"), - ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, seletType: "1"), - ItemView(title: TranslationLoader.lanKeys!.circulation!.tr, seletType: "2"), + ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, selectType: "0"), + ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, selectType: "1"), + ItemView(title: TranslationLoader.lanKeys!.circulation!.tr, selectType: "2"), ]; @override @@ -98,7 +98,7 @@ class _AddCardManageTabbarState extends State with SingleTi controller: _tabController, children: _itemTabs .map((ItemView item) => AddCardPage( - seletType: item.seletType, + selectType: item.selectType, lockId: widget.lockId, fromType: widget.fromType, fromTypeTwoStaffName:widget.fromTypeTwoStaffName @@ -109,8 +109,8 @@ class _AddCardManageTabbarState extends State with SingleTi } class ItemView { - const ItemView({required this.title, required this.seletType}); + const ItemView({required this.title, required this.selectType}); final String title; - final String seletType; + final String selectType; } diff --git a/star_lock/lib/main/lockDetail/card/addCardType/addCardType_logic.dart b/star_lock/lib/main/lockDetail/card/addCardType/addCardType_logic.dart index 9a5024c7..88b5ed0f 100644 --- a/star_lock/lib/main/lockDetail/card/addCardType/addCardType_logic.dart +++ b/star_lock/lib/main/lockDetail/card/addCardType/addCardType_logic.dart @@ -14,11 +14,11 @@ class AddCardTypeLogic extends BaseGetXController{ var fingerprintType = 0; // 永久:1;限时2,单次3,循环:4 var startDate = ""; var endDate = ""; - if (state.seletType.value == "0") { + if (state.selectType.value == "0") { fingerprintType = 1; startDate = "0"; endDate = "0"; - } else if (state.seletType.value == "1") { + } else if (state.selectType.value == "1") { fingerprintType = 2; if (state.beginTimeTimestamp.value.isEmpty) { showToast("请选择开始时间"); @@ -42,7 +42,7 @@ class AddCardTypeLogic extends BaseGetXController{ startDate = state.beginTimeTimestamp.value; endDate = state.endTimeTimestamp.value; - } else if (state.seletType.value == "2") { + } else if (state.selectType.value == "2") { if (state.effectiveDateTime.value <= 0) { showToast("请选择生效时间"); return; @@ -104,4 +104,4 @@ class AddCardTypeLogic extends BaseGetXController{ } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/card/addCardType/addCardType_page.dart b/star_lock/lib/main/lockDetail/card/addCardType/addCardType_page.dart index b7d4a6f6..1d331952 100644 --- a/star_lock/lib/main/lockDetail/card/addCardType/addCardType_page.dart +++ b/star_lock/lib/main/lockDetail/card/addCardType/addCardType_page.dart @@ -15,14 +15,14 @@ import '../../../../translations/trans_lib.dart'; import 'addCardType_logic.dart'; class AddCardPage extends StatefulWidget { - final String seletType; // 永久限时循环下标 + final String selectType; // 永久限时循环下标 final int lockId; final int fromType; // // 1从添加钥匙列表进入 2从考勤添加员工入口进入 final String fromTypeTwoStaffName; // 从添加员工进入 传入员工名字 const AddCardPage( {Key? key, - required this.seletType, + required this.selectType, required this.lockId, required this.fromType, required this.fromTypeTwoStaffName}) @@ -38,7 +38,7 @@ class _AddCardPageState extends State { @override Widget build(BuildContext context) { - state.seletType.value = widget.seletType; + state.selectType.value = widget.selectType; state.lockId.value = widget.lockId; // state.nameController.text = widget.fromTypeTwoStaffName; @@ -49,7 +49,7 @@ class _AddCardPageState extends State { } Widget indexChangeWidget() { - switch (int.parse(widget.seletType)) { + switch (int.parse(widget.selectType)) { case 0: { // 永久 @@ -193,7 +193,7 @@ class _AddCardPageState extends State { onClick: () async { var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { - // print("state.seletType:${state.seletType.value}"); + // print("state.selectType:${state.selectType.value}"); if (state.nameController.text.isEmpty) { logic.showToast("请输入姓名"); return; @@ -201,7 +201,7 @@ class _AddCardPageState extends State { logic.checkCardNameDuplicated(state.nameController.text); } else { - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }), diff --git a/star_lock/lib/main/lockDetail/card/addCardType/addCardType_state.dart b/star_lock/lib/main/lockDetail/card/addCardType/addCardType_state.dart index caa9da92..8b57a0d0 100644 --- a/star_lock/lib/main/lockDetail/card/addCardType/addCardType_state.dart +++ b/star_lock/lib/main/lockDetail/card/addCardType/addCardType_state.dart @@ -5,7 +5,7 @@ import 'package:get/get.dart'; class AddCardTypeState{ final lockId = 0.obs; - final seletType = "0".obs;// 0永久 1显示 2循环 + final selectType = "0".obs;// 0永久 1显示 2循环 final fromType = 1.obs; // // 1从添加钥匙列表进入 2从考勤添加员工入口进入 final isStressFingerprint = false.obs; @@ -24,4 +24,4 @@ class AddCardTypeState{ // lockId.value = map["lockId"]; // fromType.value = map["fromType"]; } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/card/cardList/cardList_page.dart b/star_lock/lib/main/lockDetail/card/cardList/cardList_page.dart index dc8f05bf..1f54793a 100644 --- a/star_lock/lib/main/lockDetail/card/cardList/cardList_page.dart +++ b/star_lock/lib/main/lockDetail/card/cardList/cardList_page.dart @@ -50,7 +50,7 @@ class _CardListPageState extends State with RouteAware { if (isDemoMode == false) { showDeletAlertDialog(context); } else { - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }, diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart index f7093db9..cecd68b0 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInAddHolidays/checkingInAddHolidays_page.dart @@ -51,7 +51,7 @@ class _CheckingInAddHolidaysPageState extends State { builder: (context) { return ShowCalendar( datePickerMode: DatePickerMode.day, - seletAction: (dateTime) { + selectAction: (dateTime) { String beginDate = formatDate(dateTime, [yyyy,'-',mm,'-',dd]); state.beginDate.value = beginDate; Get.back(); @@ -70,7 +70,7 @@ class _CheckingInAddHolidaysPageState extends State { builder: (context) { return ShowCalendar( datePickerMode: DatePickerMode.day, - seletAction: (dateTime) { + selectAction: (dateTime) { String endDate = formatDate(dateTime, [yyyy,'-',mm,'-',dd]); state.endDate.value = endDate; Get.back(); @@ -88,7 +88,7 @@ class _CheckingInAddHolidaysPageState extends State { builder: (context) { return ShowCalendar( datePickerMode: DatePickerMode.day, - seletAction: (dateTime) { + selectAction: (dateTime) { String makeUpWorkDate = formatDate(dateTime, [yyyy,'-',mm,'-',dd]); state.makeUpWorkDate.value = makeUpWorkDate; Get.back(); diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_logic.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_logic.dart index 7c506e68..c9685f70 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_logic.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_logic.dart @@ -12,7 +12,7 @@ class CheckingInSetHolidaysLogic extends BaseGetXController{ void editStaffLoadData() async{ var entity = await ApiRepository.to.holidaysListData( companyId: state.companyId.value, - vacationYear: state.seletYear.value.toString(), + vacationYear: state.selectYear.value.toString(), ); if(entity.errorCode!.codeIsSuccessful){ state.holidaysListData.value = entity.data!.holidayList!; @@ -42,4 +42,4 @@ class CheckingInSetHolidaysLogic extends BaseGetXController{ } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_page.dart index 192fc1b9..714fda1e 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_page.dart @@ -205,7 +205,7 @@ class _CheckingInSetHolidaysPageState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ Text( - "${state.seletYear.value}${TranslationLoader.lanKeys!.year!.tr}", + "${state.selectYear.value}${TranslationLoader.lanKeys!.year!.tr}", style: TextStyle(color: Colors.white, fontSize: 26.sp), ), SizedBox( @@ -259,7 +259,7 @@ class _CheckingInSetHolidaysPageState extends State { minDate: PDuration(year: 1900), maxDate: PDuration(year: 2100), onConfirm: (p) { - state.seletYear.value = p.year!; + state.selectYear.value = p.year!; logic.editStaffLoadData(); print("longer >>> 返回数据:${p.year}"); }, diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_state.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_state.dart index 5356c435..184158f7 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_state.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInHolidays/checkingInSetHolidays/checkingInSetHolidays_state.dart @@ -7,7 +7,7 @@ import 'checkingInSetHolidays_entity.dart'; class CheckingInSetHolidaysState{ final companyId = "".obs; final mouth = "".obs; - final seletYear = DateTime.now().year.obs; + final selectYear = DateTime.now().year.obs; final holidaysListData = [].obs; CheckingInSetHolidaysState() { @@ -15,4 +15,4 @@ class CheckingInSetHolidaysState{ companyId.value = map["companyId"]; } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart index 9f3a965f..66ae6155 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart @@ -44,7 +44,7 @@ class _CheckingInListPageState extends State { "getKeyInfosData": state.getKeyInfosData.value, }); }else{ - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }, @@ -104,7 +104,7 @@ class _CheckingInListPageState extends State { logic.loadDataByType(); }); }else{ - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }, @@ -141,7 +141,7 @@ class _CheckingInListPageState extends State { logic.loadDataByType(); }); }else{ - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }, @@ -171,7 +171,7 @@ class _CheckingInListPageState extends State { builder: (context) { return ShowCalendar( datePickerMode: DatePickerMode.day, - seletAction: (dateTime) { + selectAction: (dateTime) { setState(() { state.checkListDateTimestamp.value = dateTime.millisecondsSinceEpoch; String beginDate = formatDate(dateTime, state.isDay.value ? [mm,'-',dd] : [mm]); @@ -182,7 +182,7 @@ class _CheckingInListPageState extends State { }); }); }else{ - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }, @@ -343,7 +343,7 @@ class _CheckingInListPageState extends State { if(isDemoMode == false){ showListType(); }else{ - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }, diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart index 058e60d0..749ce6d6 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdaySet_page.dart @@ -138,7 +138,7 @@ class _CheckingInSetWorkdaySetState extends State { }, child: Row( children: [ - Image.asset(state.isSingledayWeekend.value == 0 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), + Image.asset(state.isSingledayWeekend.value == 0 ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), ], ), ) @@ -158,7 +158,7 @@ class _CheckingInSetWorkdaySetState extends State { }, child: Row( children: [ - Image.asset(state.isSingledayWeekend.value == 1 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), + Image.asset(state.isSingledayWeekend.value == 1 ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), ], ), ) @@ -224,7 +224,7 @@ class _CheckingInSetWorkdaySetState extends State { }, child: Obx(() => Row( children: [ - Image.asset(state.weekDays.value.contains(index) ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), + Image.asset(state.weekDays.value.contains(index) ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), ], ))) ); diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_logic.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_logic.dart index eab2e49a..d4a2b86e 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_logic.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_logic.dart @@ -7,7 +7,7 @@ import '../../../../../tools/eventBusEventManage.dart'; import 'checkingInAddStaffSelectKey_entity.dart'; import 'checkingInAddStaff_state.dart'; -typedef KeyClickCallback = void Function(List seletKeyList); +typedef KeyClickCallback = void Function(List selectKeyList); class CheckingInAddStaffLogic extends BaseGetXController{ CheckingInAddStaffState state = CheckingInAddStaffState(); @@ -25,7 +25,7 @@ class CheckingInAddStaffLogic extends BaseGetXController{ void addStaffLoadData() async{ var attendanceWay = ""; var usernameType = "1"; - switch(int.parse(state.seletPrintingMethodType.value)){ + switch(int.parse(state.selectPrintingMethodType.value)){ case 1: // 打卡方式APP if(state.appUnHaveAccount.value){ @@ -41,7 +41,7 @@ class CheckingInAddStaffLogic extends BaseGetXController{ return; } }else { - attendanceWay = state.seletKey.value; + attendanceWay = state.selectKey.value; if(attendanceWay.isEmpty){ showToast("请选择员工钥匙"); @@ -62,7 +62,7 @@ class CheckingInAddStaffLogic extends BaseGetXController{ } var entity = await ApiRepository.to.addStaffData( - attendanceType: state.seletPrintingMethodType.value, + attendanceType: state.selectPrintingMethodType.value, attendanceWay: attendanceWay, companyId: state.companyId.value, have: state.appUnHaveAccount.value ? "2" : "1", @@ -81,7 +81,7 @@ class CheckingInAddStaffLogic extends BaseGetXController{ void addStaffSelectKey(KeyClickCallback kyClickCallback) async{ var entity = await ApiRepository.to.addStaffSelectKeyData( companyId: state.companyId.value, - type:state.seletPrintingMethodType.value, + type:state.selectPrintingMethodType.value, ); if(entity.errorCode!.codeIsSuccessful){ state.keyEntity.value = entity.data!; @@ -93,7 +93,7 @@ class CheckingInAddStaffLogic extends BaseGetXController{ void editStaffLoadData() async{ var attendanceWay = ""; var usernameType = "1"; - switch(int.parse(state.seletPrintingMethodType.value)){ + switch(int.parse(state.selectPrintingMethodType.value)){ case 1: // 打卡方式APP if(state.appUnHaveAccount.value){ @@ -109,7 +109,7 @@ class CheckingInAddStaffLogic extends BaseGetXController{ return; } }else { - attendanceWay = state.seletKey.value; + attendanceWay = state.selectKey.value; if(attendanceWay.isEmpty){ showToast("请选择员工钥匙"); @@ -130,7 +130,7 @@ class CheckingInAddStaffLogic extends BaseGetXController{ } var entity = await ApiRepository.to.editStaffData( - attendanceType: state.seletPrintingMethodType.value, + attendanceType: state.selectPrintingMethodType.value, attendanceWay: attendanceWay, staffId: state.staffListItemData.value.staffId.toString(), have: state.appUnHaveAccount.value ? "2" : "1", diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_page.dart index f0dd9d41..b4c50840 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_page.dart @@ -44,7 +44,7 @@ class _CheckingInAddStaffPageState extends State { state.staffNameController)), Obx(() => CommonItem( leftTitel: TranslationLoader.lanKeys!.punchingMode!.tr, - rightTitle: state.seletPrintingMethodStr.value, + rightTitle: state.selectPrintingMethodStr.value, isHaveLine: false, isHaveDirection: true, action: () { @@ -82,7 +82,7 @@ class _CheckingInAddStaffPageState extends State { // 当选择App时显示 其他隐藏 Obx(() => Visibility( visible: (state.appUnHaveAccount.value && - state.seletPrintingMethodType.value == "1") + state.selectPrintingMethodType.value == "1") ? true : false, child: Column( @@ -111,7 +111,7 @@ class _CheckingInAddStaffPageState extends State { ), action: () async { var result = await Navigator.pushNamed( - context, Routers.seletCountryRegionPage); + context, Routers.selectCountryRegionPage); if (result != null) { result as Map; state.countryCode.value = result['code']; @@ -125,7 +125,7 @@ class _CheckingInAddStaffPageState extends State { )), // 当选择密码、卡、指纹时显示 Obx(() => Visibility( - visible: (state.seletPrintingMethodType.value != "1" && state.appUnHaveAccount.value) + visible: (state.selectPrintingMethodType.value != "1" && state.appUnHaveAccount.value) ? true : false, child: CommonItem( @@ -148,7 +148,7 @@ class _CheckingInAddStaffPageState extends State { color: Colors.white, fontSize: 22.sp)), onPressed: () async { switch (int.parse( - state.seletPrintingMethodType.value)) { + state.selectPrintingMethodType.value)) { case 2: // 获取密码 logic.getKeyboardPwdRequest(); @@ -206,7 +206,7 @@ class _CheckingInAddStaffPageState extends State { visible: !state.appUnHaveAccount.value, child: CommonItem( leftTitel: addStaffGetKeyType(), - rightTitle: state.seletKey.value, + rightTitle: state.selectKey.value, isHaveLine: false, isHaveDirection: true, action: () { @@ -296,14 +296,14 @@ class _CheckingInAddStaffPageState extends State { clickCallBack: (int index, var str) { setState(() { if (type == "1") { - state.seletPrintingMethodType.value = (index + 1).toString(); - state.seletPrintingMethodStr.value = str.toString(); + state.selectPrintingMethodType.value = (index + 1).toString(); + state.selectPrintingMethodStr.value = str.toString(); state.getDataPassword.value = ""; } else { - state.seletKey.value = str.toString(); + state.selectKey.value = str.toString(); } print( - "object:$index str:$str type:$type state.seletPrintingMethodType.value:${state.seletPrintingMethodType.value}"); + "object:$index str:$str type:$type state.selectPrintingMethodType.value:${state.selectPrintingMethodType.value}"); }); }); } @@ -316,7 +316,7 @@ class _CheckingInAddStaffPageState extends State { children: [ Image.asset( appUnHaveAccount - ? 'images/icon_round_selet.png' + ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 26.w, height: 26.w, @@ -337,7 +337,7 @@ class _CheckingInAddStaffPageState extends State { String addStaffGetIfHaveKey() { String title = ""; - switch (int.parse(state.seletPrintingMethodType.value)) { + switch (int.parse(state.selectPrintingMethodType.value)) { case 1: title = TranslationLoader.lanKeys!.whetherTheEmployeeHasAKey!.tr; break; @@ -356,7 +356,7 @@ class _CheckingInAddStaffPageState extends State { String addStaffGetKeyType() { String title = ""; - switch (int.parse(state.seletPrintingMethodType.value)) { + switch (int.parse(state.selectPrintingMethodType.value)) { case 1: title = TranslationLoader.lanKeys!.accountNumber!.tr; break; @@ -375,7 +375,7 @@ class _CheckingInAddStaffPageState extends State { String addStaffSelectKeyType() { String title = ""; - switch (int.parse(state.seletPrintingMethodType.value)) { + switch (int.parse(state.selectPrintingMethodType.value)) { case 1: title = TranslationLoader.lanKeys!.getKey!.tr; break; diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_state.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_state.dart index 3232f61d..5d601a38 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_state.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_state.dart @@ -14,15 +14,15 @@ class CheckingInAddStaffState{ final TextEditingController staffNameController = TextEditingController(); final TextEditingController staffAccountController = TextEditingController(); - final seletPrintingMethodType = "1".obs;// 选择打卡类型 - final seletPrintingMethodStr = "APP".obs;// 选择打卡类型字符串 + final selectPrintingMethodType = "1".obs;// 选择打卡类型 + final selectPrintingMethodStr = "APP".obs;// 选择打卡类型字符串 final countryName = "中国".obs; final countryCode = "86".obs; final appUnHaveAccount = true.obs;// 默认没有账号 final keyEntity = [].obs;// 选择钥匙数据 - final seletKey = "".obs; + final selectKey = "".obs; final isAdd = "1".obs; // 1添加 2编辑 final getDataPassword = "".obs; @@ -37,25 +37,25 @@ class CheckingInAddStaffState{ staffListItemData.value = map["staffListItem"]; staffNameController.text = staffListItemData.value.staffName!; - seletPrintingMethodType.value = staffListItemData.value.attendanceType.toString(); + selectPrintingMethodType.value = staffListItemData.value.attendanceType.toString(); switch(staffListItemData.value.attendanceType){ case 1: - seletPrintingMethodStr.value = "APP"; + selectPrintingMethodStr.value = "APP"; break; case 2: - seletPrintingMethodStr.value = "密码"; + selectPrintingMethodStr.value = "密码"; break; case 3: - seletPrintingMethodStr.value = "卡"; + selectPrintingMethodStr.value = "卡"; break; case 4: - seletPrintingMethodStr.value = "指纹"; + selectPrintingMethodStr.value = "指纹"; break; } if(staffListItemData.value.attendanceWay!.isNotEmpty){ appUnHaveAccount.value = false; - seletKey.value = staffListItemData.value.attendanceWay!; + selectKey.value = staffListItemData.value.attendanceWay!; }else{ appUnHaveAccount.value = true; } diff --git a/star_lock/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart b/star_lock/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart index f8422ba0..33bfe351 100644 --- a/star_lock/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart +++ b/star_lock/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart @@ -47,7 +47,7 @@ class _DoorLockLogPageState extends State { var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { } else { - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }, diff --git a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey_page.dart b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey_page.dart index 31fe9026..1fca986a 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey_page.dart @@ -248,7 +248,7 @@ class _MassSendElectronicKeyPageState extends State { ), action: () async { var result = await Navigator.pushNamed( - context, Routers.seletCountryRegionPage); + context, Routers.selectCountryRegionPage); if (result != null) { result as Map; countryCode = result['code']; diff --git a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_page.dart b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_page.dart index 75f6b599..eb6a1846 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_page.dart @@ -201,7 +201,7 @@ class _LockUserListPageState extends State { }, child: Image.asset( itemData.isCheck! - ? 'images/icon_round_selet.png' + ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, diff --git a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupCell.dart b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupCell.dart index a0d4a2bb..f78ab3fd 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupCell.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupCell.dart @@ -66,7 +66,7 @@ class massSendLockGroupCell extends StatelessWidget { )), Image.asset( itemData.isChecked - ? "images/icon_round_selet.png" + ? "images/icon_round_select.png" : "images/icon_round_unSelect.png", width: 30.w, height: 30.w, diff --git a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart index 6960fbd7..c0fa0216 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart @@ -123,15 +123,15 @@ class _MassSendLockGroupListPageState extends State { // clickIndex = index; //是否选中组 if (itemData.isChecked) { - var seletList = itemData.lockList; - for(LockListItem lockListItem in seletList!){ + var selectList = itemData.lockList; + for(LockListItem lockListItem in selectList!){ lockListItem.isChecked = true; selectLockIdList.add(lockListItem.lockId); } // lockItemList[selectIndex] = }else{ - var seletList = itemData.lockList; - for(LockListItem lockListItem in seletList!){ + var selectList = itemData.lockList; + for(LockListItem lockListItem in selectList!){ lockListItem.isChecked = false; selectLockIdList.remove(lockListItem.lockId); } diff --git a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiver_page.dart b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiver_page.dart index b9bd561f..97a9de03 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiver_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiver_page.dart @@ -80,7 +80,7 @@ class _MassSendReceiverPageState extends State { ), action: () async { var result = await Navigator.pushNamed( - context, Routers.seletCountryRegionPage); + context, Routers.selectCountryRegionPage); if (result != null) { result as Map; countryCode = result['code']; diff --git a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart index 65e4e191..7d7577da 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart @@ -106,7 +106,7 @@ class SendElectronicKeyLogic extends BaseGetXController { ), CupertinoDialogAction( child: Text( - TranslationLoader.lanKeys!.selet!.tr, + TranslationLoader.lanKeys!.select!.tr, style: TextStyle(color: AppColors.mainColor), ), onPressed: () async { @@ -114,7 +114,7 @@ class SendElectronicKeyLogic extends BaseGetXController { state.isCreateUser.value = true; Navigator.of(context).pop(); - var result = await Get.toNamed(Routers.seletCountryRegionPage); + var result = await Get.toNamed(Routers.selectCountryRegionPage); if (result != null) { result as Map; state.countryCode.value = result['code']; diff --git a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart index 05dbcc09..1dac77e1 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart @@ -139,7 +139,7 @@ class _SendElectronicKeyPageState extends State { ), action: () async { var result = await Navigator.pushNamed( - context, Routers.seletCountryRegionPage); + context, Routers.selectCountryRegionPage); if (result != null) { result as Map; state.countryCode.value = result['code']; diff --git a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceTypeManage/addFaceTypeManage_tabbar.dart b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceTypeManage/addFaceTypeManage_tabbar.dart index 5fea8222..6bb172cb 100644 --- a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceTypeManage/addFaceTypeManage_tabbar.dart +++ b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceTypeManage/addFaceTypeManage_tabbar.dart @@ -21,9 +21,9 @@ class _AddFaceTypeManageTabbarState extends State with late TabController _tabController; final List _itemTabs = [ - ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, seletType: "0"), - ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, seletType: "1"), - ItemView(title: TranslationLoader.lanKeys!.circulation!.tr, seletType: "2"), + ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, selectType: "0"), + ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, selectType: "1"), + ItemView(title: TranslationLoader.lanKeys!.circulation!.tr, selectType: "2"), ]; @override @@ -83,7 +83,7 @@ class _AddFaceTypeManageTabbarState extends State with child: TabBarView( controller: _tabController, children: _itemTabs - .map((ItemView item) => AddFaceTypePage(seletType: item.seletType,)) + .map((ItemView item) => AddFaceTypePage(selectType: item.selectType,)) .toList(), ), ); @@ -91,8 +91,8 @@ class _AddFaceTypeManageTabbarState extends State with } class ItemView { - const ItemView({required this.title, required this.seletType}); + const ItemView({required this.title, required this.selectType}); final String title; - final String seletType; + final String selectType; } diff --git a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_page.dart b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_page.dart index 6a16b593..1c247a99 100644 --- a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_page.dart +++ b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_page.dart @@ -14,9 +14,9 @@ import '../../../../translations/trans_lib.dart'; import 'addFaceType_logic.dart'; class AddFaceTypePage extends StatefulWidget { - final String seletType; + final String selectType; - const AddFaceTypePage({Key? key, required this.seletType}) : super(key: key); + const AddFaceTypePage({Key? key, required this.selectType}) : super(key: key); @override State createState() => _AddFaceTypePageState(); @@ -32,7 +32,7 @@ class _AddFaceTypePageState extends State { } Widget indexChangeWidget() { - switch (int.parse(widget.seletType)) { + switch (int.parse(widget.selectType)) { case 0: { // 永久 @@ -176,7 +176,7 @@ class _AddFaceTypePageState extends State { onClick: () async { var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { - // print("state.seletType:${state.seletType.value}"); + // print("state.selectType:${state.selectType.value}"); if (state.nameController.text.isEmpty) { logic.showToast("请输入姓名"); return; @@ -184,7 +184,7 @@ class _AddFaceTypePageState extends State { Get.toNamed(Routers.addFaceTipPage); } else { - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }), diff --git a/star_lock/lib/main/lockDetail/face/faceList/faceList_page.dart b/star_lock/lib/main/lockDetail/face/faceList/faceList_page.dart index be012428..9f30fa5b 100644 --- a/star_lock/lib/main/lockDetail/face/faceList/faceList_page.dart +++ b/star_lock/lib/main/lockDetail/face/faceList/faceList_page.dart @@ -44,7 +44,7 @@ class _FaceListState extends State { if (isDemoMode == false) { showDeletAlertDialog(context); } else { - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }, diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintManage/addFingerprintTypeManage_tabbar.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintManage/addFingerprintTypeManage_tabbar.dart index 3378e53b..baef6122 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintManage/addFingerprintTypeManage_tabbar.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintManage/addFingerprintTypeManage_tabbar.dart @@ -25,9 +25,9 @@ class _AddFingerprintTypeManageTabbarState extends State _itemTabs = [ - ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, seletType: "0"), - ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, seletType: "1"), - ItemView(title: TranslationLoader.lanKeys!.circulation!.tr, seletType: "2"), + ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, selectType: "0"), + ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, selectType: "1"), + ItemView(title: TranslationLoader.lanKeys!.circulation!.tr, selectType: "2"), ]; @override @@ -97,7 +97,7 @@ class _AddFingerprintTypeManageTabbarState extends State AddFingerprintTypePage( - seletType: item.seletType, + selectType: item.selectType, lockId: widget.lockId, fromType: widget.fromType, fromTypeTwoStaffName:widget.fromTypeTwoStaffName @@ -109,8 +109,8 @@ class _AddFingerprintTypeManageTabbarState extends State { @override Widget build(BuildContext context) { - state.seletType.value = widget.seletType; + state.selectType.value = widget.selectType; state.lockId.value = widget.lockId; // state.nameController.text = widget.fromTypeTwoStaffName; @@ -49,7 +49,7 @@ class _AddFingerprintTypePageState extends State { } Widget indexChangeWidget() { - switch (int.parse(widget.seletType)) { + switch (int.parse(widget.selectType)) { case 0: { // 永久 @@ -193,14 +193,14 @@ class _AddFingerprintTypePageState extends State { onClick: () async { var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { - // print("state.seletType:${state.seletType.value}"); + // print("state.selectType:${state.selectType.value}"); if (state.nameController.text.isEmpty) { logic.showToast("请输入姓名"); return; } logic.checkFingerprintNameDuplicated(state.nameController.text); } else { - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }), diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_state.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_state.dart index 18e3573f..eaf5039c 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_state.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_state.dart @@ -4,7 +4,7 @@ import 'package:get/get.dart'; class AddFingerprintState{ final lockId = 0.obs; - final seletType = "0".obs;// 0永久 1显示 2循环 + final selectType = "0".obs;// 0永久 1显示 2循环 final fromType = 1.obs; // // 1从添加钥匙列表进入 2从考勤添加员工入口进入 final isStressFingerprint = false.obs; @@ -23,4 +23,4 @@ class AddFingerprintState{ // lockId.value = map["lockId"]; // fromType.value = map["fromType"]; } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart b/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart index 1f75997d..3a0a3dc4 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart @@ -50,7 +50,7 @@ class _FingerprintListPageState extends State with RouteAwa if (isDemoMode == false) { showDeletAlertDialog(context); } else { - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }, diff --git a/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart b/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart index 627755ed..f3fd5131 100644 --- a/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart +++ b/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart @@ -59,7 +59,7 @@ class _LockOperatingRecordPageState extends State { _openModalBottomSheet(); }else{ - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }, diff --git a/star_lock/lib/main/lockDetail/lockSet/lockSoundSet/lockSoundSet_page.dart b/star_lock/lib/main/lockDetail/lockSet/lockSoundSet/lockSoundSet_page.dart index 957d6b3e..b27e61a8 100644 --- a/star_lock/lib/main/lockDetail/lockSet/lockSoundSet/lockSoundSet_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/lockSoundSet/lockSoundSet_page.dart @@ -87,7 +87,7 @@ class _LockSoundSetPageState extends State with RouteAware { child: Row( children: [ Image.asset( - state.lockSoundLevel.value == 1 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', + state.lockSoundLevel.value == 1 ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -108,7 +108,7 @@ class _LockSoundSetPageState extends State with RouteAware { child: Row( children: [ Image.asset( - state.lockSoundLevel.value == 2 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', + state.lockSoundLevel.value == 2 ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -129,7 +129,7 @@ class _LockSoundSetPageState extends State with RouteAware { child: Row( children: [ Image.asset( - state.lockSoundLevel.value == 3 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', + state.lockSoundLevel.value == 3 ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -150,7 +150,7 @@ class _LockSoundSetPageState extends State with RouteAware { child: Row( children: [ Image.asset( - state.lockSoundLevel.value == 4 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', + state.lockSoundLevel.value == 4 ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -171,7 +171,7 @@ class _LockSoundSetPageState extends State with RouteAware { child: Row( children: [ Image.asset( - state.lockSoundLevel.value == 5 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', + state.lockSoundLevel.value == 5 ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), diff --git a/star_lock/lib/main/lockDetail/lockSet/lockUser/lockUser_page.dart b/star_lock/lib/main/lockDetail/lockSet/lockUser/lockUser_page.dart index 86bf8882..ab4af23a 100644 --- a/star_lock/lib/main/lockDetail/lockSet/lockUser/lockUser_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/lockUser/lockUser_page.dart @@ -156,7 +156,7 @@ class _LockUserPageState extends State { ), Obx(() => Image.asset( state.isCheck.value == true - ? 'images/icon_round_selet.png' + ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, diff --git a/star_lock/lib/main/lockDetail/lockSet/markedHouseState/markedHouseState_page.dart b/star_lock/lib/main/lockDetail/lockSet/markedHouseState/markedHouseState_page.dart index bcbc7f4c..f34d4cce 100644 --- a/star_lock/lib/main/lockDetail/lockSet/markedHouseState/markedHouseState_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/markedHouseState/markedHouseState_page.dart @@ -44,7 +44,7 @@ class _MarkedHouseStatePageState extends State { child: Row( children: [ Image.asset( - state.roomStatus.value == 0 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', + state.roomStatus.value == 0 ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -65,7 +65,7 @@ class _MarkedHouseStatePageState extends State { child: Row( children: [ Image.asset( - state.roomStatus.value == 1 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', + state.roomStatus.value == 1 ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), diff --git a/star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart b/star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart index 77d33232..feda7712 100644 --- a/star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart @@ -158,7 +158,7 @@ class _CoerceFingerprintListPageState extends State { ), Obx(() => Image.asset( state.isCheck.value == true - ? 'images/icon_round_selet.png' + ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, diff --git a/star_lock/lib/main/lockDetail/lockSet/normallyOpenMode/normallyOpenMode_page.dart b/star_lock/lib/main/lockDetail/lockSet/normallyOpenMode/normallyOpenMode_page.dart index 22971a8e..6c938d82 100644 --- a/star_lock/lib/main/lockDetail/lockSet/normallyOpenMode/normallyOpenMode_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/normallyOpenMode/normallyOpenMode_page.dart @@ -253,7 +253,7 @@ class _NormallyOpenModePageState extends State with RouteA ), Image.asset( state.isAllDay.value == 1 - ? 'images/icon_round_selet.png' + ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, diff --git a/star_lock/lib/main/lockDetail/lockSet/notificationMode/notificationMode_page.dart b/star_lock/lib/main/lockDetail/lockSet/notificationMode/notificationMode_page.dart index 24969c72..4275c33c 100644 --- a/star_lock/lib/main/lockDetail/lockSet/notificationMode/notificationMode_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/notificationMode/notificationMode_page.dart @@ -262,7 +262,7 @@ class _NotificationModePageState extends State { ), ), onTap: () async { - var result = await Get.toNamed(Routers.seletCountryRegionPage); + var result = await Get.toNamed(Routers.selectCountryRegionPage); if (result != null) { result as Map; state.countryCode.value = result['code']; diff --git a/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboard/addWirelessKeyboard_page.dart b/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboard/addWirelessKeyboard_page.dart index 1a702446..11c5a8fe 100644 --- a/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboard/addWirelessKeyboard_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboard/addWirelessKeyboard_page.dart @@ -72,7 +72,7 @@ class _AddWirelessKeyboardPageState extends State { btnName: TranslationLoader.lanKeys!.next!.tr, onClick: () { Navigator.pushNamed( - context, Routers.seletWirelessKeyboardPage); + context, Routers.selectWirelessKeyboardPage); }), ), SizedBox( diff --git a/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboardScreenNotLightOn/addWirelessKeyboardScreenNotLightOn_page.dart b/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboardScreenNotLightOn/addWirelessKeyboardScreenNotLightOn_page.dart index 5efce422..22b46edc 100644 --- a/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboardScreenNotLightOn/addWirelessKeyboardScreenNotLightOn_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/addWirelessKeyboardScreenNotLightOn/addWirelessKeyboardScreenNotLightOn_page.dart @@ -85,7 +85,7 @@ class _AddWirelessKeyboardScreenNotLightOnPageState btnName: TranslationLoader.lanKeys!.next!.tr, onClick: () { Navigator.pushNamed( - context, Routers.seletWirelessKeyboardPage); + context, Routers.selectWirelessKeyboardPage); }), ), ], diff --git a/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart b/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/selectWirelessKeyboard/selectWirelessKeyboard_page.dart similarity index 96% rename from star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart rename to star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/selectWirelessKeyboard/selectWirelessKeyboard_page.dart index 476dbeae..5a6833be 100644 --- a/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/seletWirelessKeyboard/seletWirelessKeyboard_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/wirelessKeyboard/selectWirelessKeyboard/selectWirelessKeyboard_page.dart @@ -23,7 +23,7 @@ class _SelectWirelessKeyboardPageState extends State backgroundColor: AppColors.mainBackgroundColor, appBar: TitleAppBar( barTitle: - "${TranslationLoader.lanKeys!.selet!.tr}${TranslationLoader.lanKeys!.wirelessKeyboard!.tr}", + "${TranslationLoader.lanKeys!.select!.tr}${TranslationLoader.lanKeys!.wirelessKeyboard!.tr}", haveBack: true, backgroundColor: AppColors.mainColor), body: dataList.isEmpty diff --git a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart index 55d086a2..3992c601 100644 --- a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart +++ b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart @@ -5,7 +5,7 @@ import 'package:get/get.dart'; import 'package:star_lock/talk/call/callTalk.dart'; import '../../../../app_settings/app_colors.dart'; -import '../../../../login/seletCountryRegion/common/index.dart'; +import '../../../../login/selectCountryRegion/common/index.dart'; import '../../../../tools/showTFView.dart'; import 'lockMonitoring_logic.dart'; diff --git a/star_lock/lib/main/lockDetail/remoteControl/addRemoteControl/addRemoteControlManage/addRemoteControlManage_tabbar.dart b/star_lock/lib/main/lockDetail/remoteControl/addRemoteControl/addRemoteControlManage/addRemoteControlManage_tabbar.dart index c0efdb5d..537ced04 100644 --- a/star_lock/lib/main/lockDetail/remoteControl/addRemoteControl/addRemoteControlManage/addRemoteControlManage_tabbar.dart +++ b/star_lock/lib/main/lockDetail/remoteControl/addRemoteControl/addRemoteControlManage/addRemoteControlManage_tabbar.dart @@ -22,9 +22,9 @@ class _AddRemoteControlManageTabbarState extends State _itemTabs = [ - ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, seletType: "0"), - ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, seletType: "1"), - ItemView(title: TranslationLoader.lanKeys!.circulation!.tr, seletType: "2"), + ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, selectType: "0"), + ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, selectType: "1"), + ItemView(title: TranslationLoader.lanKeys!.circulation!.tr, selectType: "2"), ]; @override @@ -84,7 +84,7 @@ class _AddRemoteControlManageTabbarState extends State AddRemoteControlPage(seletType: item.seletType,)) + .map((ItemView item) => AddRemoteControlPage(selectType: item.selectType,)) .toList(), ), ); @@ -92,9 +92,9 @@ class _AddRemoteControlManageTabbarState extends State { } Widget indexChangeWidget() { - switch (int.parse(widget.seletType)) { + switch (int.parse(widget.selectType)) { case 0: { // 永久 @@ -178,7 +178,7 @@ class _AddRemoteControlPageState extends State { onClick: () async { var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { - // print("state.seletType:${state.seletType.value}"); + // print("state.selectType:${state.selectType.value}"); if (state.nameController.text.isEmpty) { logic.showToast("请输入姓名"); return; @@ -186,7 +186,7 @@ class _AddRemoteControlPageState extends State { logic.showToast("请确保在设备附近"); // logic.addFingerprintsData(); } else { - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }), diff --git a/star_lock/lib/main/lockDetail/remoteControl/remoteControlList/remoteControlList_page.dart b/star_lock/lib/main/lockDetail/remoteControl/remoteControlList/remoteControlList_page.dart index 87bba6aa..07a89927 100644 --- a/star_lock/lib/main/lockDetail/remoteControl/remoteControlList/remoteControlList_page.dart +++ b/star_lock/lib/main/lockDetail/remoteControl/remoteControlList/remoteControlList_page.dart @@ -45,7 +45,7 @@ class _RemoteControlListPageState extends State { if (isDemoMode == false) { showDeletAlertDialog(context); } else { - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } }, diff --git a/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_page.dart b/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_page.dart index a2f4a345..3889695f 100644 --- a/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_page.dart +++ b/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_page.dart @@ -23,7 +23,7 @@ class _EditVideoLogPageState extends State { return Scaffold( backgroundColor: Colors.white, appBar: TitleAppBar( - barTitle: "已选${state.seletVideoLog.value}项", + barTitle: "已选${state.selectVideoLog.value}项", haveBack: true, backgroundColor: AppColors.mainColor, actionsList: [ @@ -115,7 +115,7 @@ class _EditVideoLogPageState extends State { onTap: (){ }, - child: Image(width: 40.w, height: 40.w, image: state.isSelectAll.value ? const AssetImage("images/icon_round_selet.png") : const AssetImage("images/icon_round_unSelect.png")) + child: Image(width: 40.w, height: 40.w, image: state.isSelectAll.value ? const AssetImage("images/icon_round_select.png") : const AssetImage("images/icon_round_unSelect.png")) ) ), ) diff --git a/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_state.dart b/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_state.dart index 270020a6..900badec 100644 --- a/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_state.dart +++ b/star_lock/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_state.dart @@ -4,7 +4,7 @@ import 'package:get/get.dart'; class EditVideoLogState{ - var seletVideoLog = 0.obs; + var selectVideoLog = 0.obs; var isSelectAll = false.obs; } diff --git a/star_lock/lib/main/lockMian/demoMode/demoModeLockDetail/demoModeLockDetail_page.dart b/star_lock/lib/main/lockMian/demoMode/demoModeLockDetail/demoModeLockDetail_page.dart index 21d0d8e1..dc8618c1 100644 --- a/star_lock/lib/main/lockMian/demoMode/demoModeLockDetail/demoModeLockDetail_page.dart +++ b/star_lock/lib/main/lockMian/demoMode/demoModeLockDetail/demoModeLockDetail_page.dart @@ -375,7 +375,7 @@ class _DemoModeLockDetailPageState extends State { } void gotoLogin() { - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); logic.showToast("演示模式"); } diff --git a/star_lock/lib/main/lockMian/demoMode/demoModeLockSet/demoModeLockSet_page.dart b/star_lock/lib/main/lockMian/demoMode/demoModeLockSet/demoModeLockSet_page.dart index 5d877735..befc6a56 100644 --- a/star_lock/lib/main/lockMian/demoMode/demoModeLockSet/demoModeLockSet_page.dart +++ b/star_lock/lib/main/lockMian/demoMode/demoModeLockSet/demoModeLockSet_page.dart @@ -344,7 +344,7 @@ class _DemoModeLockSetPageState extends State { } void gotoAddLock(){ - // Get.toNamed(Routers.seletLockTypePage); + // Get.toNamed(Routers.selectLockTypePage); EasyLoading.showToast("演示模式",duration: 2000.milliseconds); } diff --git a/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart b/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart index 97401bd5..f6dcdc47 100644 --- a/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart +++ b/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart @@ -146,7 +146,7 @@ class _StarLockMainPageState extends State with BaseWidget { onTap: () { //实现回调函数 Navigator.pushNamed( - context, Routers.seletLockTypePage, + context, Routers.selectLockTypePage, // arguments: { // "url": ConstConfig.privacAgreementUrl, // "title": '隐私政策' diff --git a/star_lock/lib/mine/addLock/addLockSelectCountry/addLockSelectCountry_page.dart b/star_lock/lib/mine/addLock/addLockSelectCountry/addLockSelectCountry_page.dart index cc7e599b..b7112ab4 100644 --- a/star_lock/lib/mine/addLock/addLockSelectCountry/addLockSelectCountry_page.dart +++ b/star_lock/lib/mine/addLock/addLockSelectCountry/addLockSelectCountry_page.dart @@ -8,7 +8,7 @@ import 'package:star_lock/tools/baseGetXController.dart'; import '../../../appRouters.dart'; import '../../../app_settings/app_colors.dart'; -import '../../../login/seletCountryRegion/common/countryRegionEntity.dart'; +import '../../../login/selectCountryRegion/common/countryRegionEntity.dart'; import '../../../network/api_repository.dart'; import '../../../tools/commonItem.dart'; import '../../../tools/titleAppBar.dart'; @@ -27,7 +27,7 @@ class _AddLockSelectCountryPageState extends State { final state = Get.find().state; List countriesList = []; - int seletindex = 10000; + int selectindex = 10000; @override void initState() { @@ -99,12 +99,12 @@ class _AddLockSelectCountryPageState extends State { isHaveRightWidget: true, action: (){ setState(() { - seletindex = index; + selectindex = index; }); }, rightWidget: Row( children: [ - Image.asset((seletindex == index) ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), + Image.asset((selectindex == index) ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w,), ], ) ); @@ -139,11 +139,11 @@ class _AddLockSelectCountryPageState extends State { style: TextStyle(color: Colors.black, fontSize: 24.sp), ), onPressed: () { - if(seletindex == 10000){ + if(selectindex == 10000){ logic.showToast("请选择国家"); return; } - CountryRegionModel model = countriesList[seletindex]; + CountryRegionModel model = countriesList[selectindex]; Get.toNamed(Routers.saveLockPage, arguments: { "addressInfo": {"country":model.name}, "pwdTimestamp": state.pwdTimestamp.value, diff --git a/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_page.dart b/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_page.dart index 57da7bcf..c9469477 100644 --- a/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_page.dart +++ b/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_page.dart @@ -55,7 +55,7 @@ class _NearbyLockPageState extends State with RouteAware { return nearbyLockItem('images/icon_lockGroup_item.png', state.devices[index], () { // Navigator.pushNamed(context, Routers.lockAddressPage); // logic.getPublicKey(state.devices[index].serviceUuids[0].toString()); - state.seletLockName.value = state.devices[index].name; + state.selectLockName.value = state.devices[index].name; // print("connect-lockId:${state.devices[index].id} deviceName:${state.devices[index].name}"); logic.connect(state.devices[index].name); // Get.toNamed(Routers.lockAddressGaoDePage); diff --git a/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_state.dart b/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_state.dart index b40cbab0..5331c5c2 100644 --- a/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_state.dart +++ b/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_state.dart @@ -8,7 +8,7 @@ class NearbyLockState { RxList devices = [].obs; var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 - var seletLockName = "".obs; + var selectLockName = "".obs; var timestampValue = 0; var lockInfo = {}; @@ -16,4 +16,4 @@ class NearbyLockState { var featureSettingValue = ''; var featureSettingParams = []; -} \ No newline at end of file +} diff --git a/star_lock/lib/mine/addLock/seletLockType/seletLockType_page.dart b/star_lock/lib/mine/addLock/selectLockType/selectLockType_page.dart similarity index 100% rename from star_lock/lib/mine/addLock/seletLockType/seletLockType_page.dart rename to star_lock/lib/mine/addLock/selectLockType/selectLockType_page.dart diff --git a/star_lock/lib/mine/gateway/addGateway/gatewayConfigurationWifi/gatewayConfigurationWifi_page.dart b/star_lock/lib/mine/gateway/addGateway/gatewayConfigurationWifi/gatewayConfigurationWifi_page.dart index c0ae5903..d1794ef5 100644 --- a/star_lock/lib/mine/gateway/addGateway/gatewayConfigurationWifi/gatewayConfigurationWifi_page.dart +++ b/star_lock/lib/mine/gateway/addGateway/gatewayConfigurationWifi/gatewayConfigurationWifi_page.dart @@ -153,7 +153,7 @@ class _GatewayConfigurationWifiPageState left: 30.w, right: 30.w, top: 20.w, bottom: 20.w), padding: EdgeInsets.only(top: 15.w, bottom: 15.w), onClick: () { - // Navigator.pushNamed(context, Routers.seletGatewayPage); + // Navigator.pushNamed(context, Routers.selectGatewayPage); }), ), SizedBox( diff --git a/star_lock/lib/mine/gateway/addGateway/seletGateway/seletGatewayList_page.dart b/star_lock/lib/mine/gateway/addGateway/selectGateway/selectGatewayList_page.dart similarity index 96% rename from star_lock/lib/mine/gateway/addGateway/seletGateway/seletGatewayList_page.dart rename to star_lock/lib/mine/gateway/addGateway/selectGateway/selectGatewayList_page.dart index d04ae881..d812ce6d 100644 --- a/star_lock/lib/mine/gateway/addGateway/seletGateway/seletGatewayList_page.dart +++ b/star_lock/lib/mine/gateway/addGateway/selectGateway/selectGatewayList_page.dart @@ -26,7 +26,7 @@ class _SelectGatewayListPageState extends State { body: ListView.builder( itemCount: 10, itemBuilder: (c, index) { - return _seletGatewayListListItem( + return _selectGatewayListListItem( 'images/mine/icon_mine_gatewayListMainIcon.png', "G2 41c21c", "-34", () { @@ -37,7 +37,7 @@ class _SelectGatewayListPageState extends State { ); } - Widget _seletGatewayListListItem(String lockTypeIcon, String gateWayName, + Widget _selectGatewayListListItem(String lockTypeIcon, String gateWayName, String networkSignal, Function() action) { return GestureDetector( onTap: action, diff --git a/star_lock/lib/mine/gateway/addGateway/seletGatewayType/seletGatewayType_page.dart b/star_lock/lib/mine/gateway/addGateway/selectGatewayType/selectGatewayType_page.dart similarity index 81% rename from star_lock/lib/mine/gateway/addGateway/seletGatewayType/seletGatewayType_page.dart rename to star_lock/lib/mine/gateway/addGateway/selectGatewayType/selectGatewayType_page.dart index 19285235..c8b9a5dc 100644 --- a/star_lock/lib/mine/gateway/addGateway/seletGatewayType/seletGatewayType_page.dart +++ b/star_lock/lib/mine/gateway/addGateway/selectGatewayType/selectGatewayType_page.dart @@ -25,24 +25,24 @@ class _SelectGatewayTypePageState extends State { backgroundColor: AppColors.mainColor), body: ListView( children: [ - _seletGatewayType( - 'images/mine/icon_mine_seletGatewayType_G2.png', "G2(Wi-Fi)", + _selectGatewayType( + 'images/mine/icon_mine_selectGatewayType_G2.png', "G2(Wi-Fi)", () { - Navigator.pushNamed(context, Routers.seletGatewayTypeNextTipPage); + Navigator.pushNamed(context, Routers.selectGatewayTypeNextTipPage); }), SizedBox( height: 2.h, ), - _seletGatewayType( - 'images/mine/icon_mine_seletGatewayType_G4.png', "G4(4G) ", + _selectGatewayType( + 'images/mine/icon_mine_selectGatewayType_G4.png', "G4(4G) ", () { - Navigator.pushNamed(context, Routers.seletGatewayTypeNextTipPage); + Navigator.pushNamed(context, Routers.selectGatewayTypeNextTipPage); }), ], )); } - Widget _seletGatewayType( + Widget _selectGatewayType( String iconStr, String gatewayType, Function() action) { return GestureDetector( onTap: action, diff --git a/star_lock/lib/mine/gateway/addGateway/seletGatewayTypeNextTip/seletGatewayTypeNextTip_page.dart b/star_lock/lib/mine/gateway/addGateway/selectGatewayTypeNextTip/selectGatewayTypeNextTip_page.dart similarity index 91% rename from star_lock/lib/mine/gateway/addGateway/seletGatewayTypeNextTip/seletGatewayTypeNextTip_page.dart rename to star_lock/lib/mine/gateway/addGateway/selectGatewayTypeNextTip/selectGatewayTypeNextTip_page.dart index 7518d3b5..20571a19 100644 --- a/star_lock/lib/mine/gateway/addGateway/seletGatewayTypeNextTip/seletGatewayTypeNextTip_page.dart +++ b/star_lock/lib/mine/gateway/addGateway/selectGatewayTypeNextTip/selectGatewayTypeNextTip_page.dart @@ -45,7 +45,7 @@ class _SelectGatewayTypeNextTipPageState TranslationLoader.lanKeys!.indicatorLight!.tr, style: TextStyle(fontSize: 20.sp), )), - Image.asset("images/mine/icon_mine_seletGatewayType_next.png", + Image.asset("images/mine/icon_mine_selectGatewayType_next.png", width: 220.w, height: 220.w), ], ), @@ -54,7 +54,7 @@ class _SelectGatewayTypeNextTipPageState padding: EdgeInsets.all(20.w), child: Center( child: Text( - TranslationLoader.lanKeys!.seletGatewayTypeNextTip!.tr, + TranslationLoader.lanKeys!.selectGatewayTypeNextTip!.tr, textAlign: TextAlign.center, style: TextStyle(fontSize: 18.sp), ))), @@ -64,7 +64,7 @@ class _SelectGatewayTypeNextTipPageState child: SubmitBtn( btnName: TranslationLoader.lanKeys!.next!.tr, onClick: () { - Navigator.pushNamed(context, Routers.seletGatewayPage); + Navigator.pushNamed(context, Routers.selectGatewayPage); }), ), ], diff --git a/star_lock/lib/mine/gateway/gatewayList/gatewayList_page.dart b/star_lock/lib/mine/gateway/gatewayList/gatewayList_page.dart index b34709f0..7721c875 100644 --- a/star_lock/lib/mine/gateway/gatewayList/gatewayList_page.dart +++ b/star_lock/lib/mine/gateway/gatewayList/gatewayList_page.dart @@ -26,7 +26,7 @@ class _GatewayListPageState extends State { actionsList: [ GestureDetector( onTap: () { - Navigator.pushNamed(context, Routers.seletGatewayTypePage); + Navigator.pushNamed(context, Routers.selectGatewayTypePage); }, child: Image.asset( 'images/icon_add_white.png', diff --git a/star_lock/lib/mine/message/messageList_page.dart b/star_lock/lib/mine/message/messageList_page.dart index 98135ee4..547ddbdb 100644 --- a/star_lock/lib/mine/message/messageList_page.dart +++ b/star_lock/lib/mine/message/messageList_page.dart @@ -30,7 +30,7 @@ class _MessageListPageState extends State { : ListView.builder( itemCount: 10, itemBuilder: (c, index) { - return _seletGatewayListListItem( + return _selectGatewayListListItem( 'images/controls_user.png', "您的钥匙已发送成功", "2023.6.21 11.15", () { // Navigator.pushNamed(context, Routers.gatewayConfigurationWifiPage); @@ -39,7 +39,7 @@ class _MessageListPageState extends State { ); } - Widget _seletGatewayListListItem(String lockTypeIcon, String gateWayName, + Widget _selectGatewayListListItem(String lockTypeIcon, String gateWayName, String networkSignal, Function() action) { return GestureDetector( onTap: action, diff --git a/star_lock/lib/mine/mine/safeVerify/safeVerify_state.dart b/star_lock/lib/mine/mine/safeVerify/safeVerify_state.dart index 1c41f3a4..18b5ed67 100644 --- a/star_lock/lib/mine/mine/safeVerify/safeVerify_state.dart +++ b/star_lock/lib/mine/mine/safeVerify/safeVerify_state.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:star_lock/login/login/entity/LoginData.dart'; -import 'package:star_lock/login/seletCountryRegion/common/index.dart'; +import 'package:star_lock/login/selectCountryRegion/common/index.dart'; import 'package:star_lock/tools/storage.dart'; import 'package:star_lock/translations/trans_lib.dart'; diff --git a/star_lock/lib/mine/mine/starLockMine_page.dart b/star_lock/lib/mine/mine/starLockMine_page.dart index 3ee00177..0cdb41fe 100644 --- a/star_lock/lib/mine/mine/starLockMine_page.dart +++ b/star_lock/lib/mine/mine/starLockMine_page.dart @@ -120,7 +120,7 @@ class _StarLockMinePageState extends State with BaseWidget { mineItem('images/mine/icon_mine_main_addLock.png', TranslationLoader.lanKeys!.addDevice!.tr, () { Get.back(); - Get.toNamed(Routers.seletLockTypePage); + Get.toNamed(Routers.selectLockTypePage); }), // mineItem('images/mine/icon_mine_main_gateway.png', // TranslationLoader.lanKeys!.gateway!.tr, () { diff --git a/star_lock/lib/mine/minePersonInfo/minePersonInfoEditAccount/minePersonInfoEditAccountNext/minePersonInfoEditAccountNext_state.dart b/star_lock/lib/mine/minePersonInfo/minePersonInfoEditAccount/minePersonInfoEditAccountNext/minePersonInfoEditAccountNext_state.dart index 85d7a308..c2f75430 100644 --- a/star_lock/lib/mine/minePersonInfo/minePersonInfoEditAccount/minePersonInfoEditAccountNext/minePersonInfoEditAccountNext_state.dart +++ b/star_lock/lib/mine/minePersonInfo/minePersonInfoEditAccount/minePersonInfoEditAccountNext/minePersonInfoEditAccountNext_state.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:star_lock/login/login/entity/LoginData.dart'; -import 'package:star_lock/login/seletCountryRegion/common/index.dart'; +import 'package:star_lock/login/selectCountryRegion/common/index.dart'; import 'package:star_lock/tools/storage.dart'; import 'package:star_lock/translations/trans_lib.dart'; diff --git a/star_lock/lib/mine/minePersonInfo/minePersonInfoEditIphone/minePersonInfoEditIphone_page.dart b/star_lock/lib/mine/minePersonInfo/minePersonInfoEditIphone/minePersonInfoEditIphone_page.dart index 5dc2103b..93bff920 100644 --- a/star_lock/lib/mine/minePersonInfo/minePersonInfoEditIphone/minePersonInfoEditIphone_page.dart +++ b/star_lock/lib/mine/minePersonInfo/minePersonInfoEditIphone/minePersonInfoEditIphone_page.dart @@ -47,7 +47,7 @@ class _MinePersonInfoEditIphonePageState )), GestureDetector( onTap: () { - Navigator.pushNamed(context, Routers.seletCountryRegionPage); + Navigator.pushNamed(context, Routers.selectCountryRegionPage); }, child: Container( height: 70.h, diff --git a/star_lock/lib/mine/mineSet/addAuthorizedAdministrator/addAuthorizedAdministrator_logic.dart b/star_lock/lib/mine/mineSet/addAuthorizedAdministrator/addAuthorizedAdministrator_logic.dart index ec728ff7..2eb818a2 100644 --- a/star_lock/lib/mine/mineSet/addAuthorizedAdministrator/addAuthorizedAdministrator_logic.dart +++ b/star_lock/lib/mine/mineSet/addAuthorizedAdministrator/addAuthorizedAdministrator_logic.dart @@ -101,13 +101,13 @@ class AddAuthorizedAdministratorLogic extends BaseGetXController { }, ), CupertinoDialogAction( - child: Text(TranslationLoader.lanKeys!.selet!.tr), + child: Text(TranslationLoader.lanKeys!.select!.tr), onPressed: () async { //选择国家代码 state.isCreateUser.value = true; Navigator.of(context).pop(); - var result = await Get.toNamed(Routers.seletCountryRegionPage); + var result = await Get.toNamed(Routers.selectCountryRegionPage); if (result != null) { result as Map; state.countryCode.value = result['code']; diff --git a/star_lock/lib/mine/mineSet/addAuthorizedAdministrator/addAuthorizedAdministrator_page.dart b/star_lock/lib/mine/mineSet/addAuthorizedAdministrator/addAuthorizedAdministrator_page.dart index c5ee01be..3ed8f486 100644 --- a/star_lock/lib/mine/mineSet/addAuthorizedAdministrator/addAuthorizedAdministrator_page.dart +++ b/star_lock/lib/mine/mineSet/addAuthorizedAdministrator/addAuthorizedAdministrator_page.dart @@ -274,7 +274,7 @@ class _AddAuthorizedAdministratorPageState extends State; countryCode = result['code']; diff --git a/star_lock/lib/mine/mineSet/appUnlockNeedMobileNetworkingLock/appUnlockNeedMobileNetworkingLock_page.dart b/star_lock/lib/mine/mineSet/appUnlockNeedMobileNetworkingLock/appUnlockNeedMobileNetworkingLock_page.dart index dbf0e303..0430c9e9 100644 --- a/star_lock/lib/mine/mineSet/appUnlockNeedMobileNetworkingLock/appUnlockNeedMobileNetworkingLock_page.dart +++ b/star_lock/lib/mine/mineSet/appUnlockNeedMobileNetworkingLock/appUnlockNeedMobileNetworkingLock_page.dart @@ -85,7 +85,7 @@ class _APPUnlockNeedMobileNetworkingLockPageState extends State Row( children: [ Image.asset( - state.isCheckAll.value ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', + state.isCheckAll.value ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -156,7 +156,7 @@ class _APPUnlockNeedMobileNetworkingLockPageState extends State { Image.asset( isNameSelect == false ? 'images/icon_round_unSelect.png' - : 'images/icon_round_selet.png', + : 'images/icon_round_select.png', width: 30.sp, height: 30.sp, ), diff --git a/star_lock/lib/mine/mineSet/authorityManagement/getNameList_page.dart b/star_lock/lib/mine/mineSet/authorityManagement/getNameList_page.dart index d5078fa1..f63fb1c9 100644 --- a/star_lock/lib/mine/mineSet/authorityManagement/getNameList_page.dart +++ b/star_lock/lib/mine/mineSet/authorityManagement/getNameList_page.dart @@ -118,7 +118,7 @@ class _GetNameListPageState extends State { Image.asset( isNameSelect == false ? 'images/icon_round_unSelect.png' - : 'images/icon_round_selet.png', + : 'images/icon_round_select.png', width: 30.sp, height: 30.sp, ), diff --git a/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_logic.dart b/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_logic.dart index da6dc709..df148714 100644 --- a/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_logic.dart +++ b/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_logic.dart @@ -13,7 +13,7 @@ class GroupEditLockLogic extends BaseGetXController { Future lockGroupAddLock(List lockId) async { var entity = await ApiRepository.to.lockGroupAddLock( lockIds: lockId, - groupId: state.seletGroupListItem.keyGroupId!); + groupId: state.selectGroupListItem.keyGroupId!); if (entity.errorCode!.codeIsSuccessful) { showToast("添加成功"); eventBus.fire(LockGroupEditGroupLockRefreshEvent()); @@ -33,4 +33,4 @@ class GroupEditLockLogic extends BaseGetXController { } } -} \ No newline at end of file +} diff --git a/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_page.dart b/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_page.dart index cac0f902..55c9d152 100644 --- a/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_page.dart +++ b/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_page.dart @@ -97,7 +97,7 @@ class _GroupEditLockPageState extends State { GestureDetector( child: Image.asset( itemData.isChecked - ? 'images/icon_round_selet.png' + ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 35.w, height: 35.w, diff --git a/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_state.dart b/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_state.dart index 2e65cff8..dc2adaf3 100644 --- a/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_state.dart +++ b/star_lock/lib/mine/mineSet/lockGroup/groupEditLock/groupEditLock_state.dart @@ -5,17 +5,17 @@ import '../../../../main/lockDetail/electronicKey/massSendElectronicKey/massSend class GroupEditLockState { var lockList = []; var type = 0;// 0添加 1删除 - var seletGroupListItem = GroupListItem(); + var selectGroupListItem = GroupListItem(); var ungrouped = GroupListItem(); GroupEditLockState() { Map map = Get.arguments; type = map["type"]; - seletGroupListItem = map["groupListItem"]; + selectGroupListItem = map["groupListItem"]; ungrouped = map["ungrouped"]; if(type == 0){ lockList = ungrouped.lockList!; }else{ - lockList = seletGroupListItem.lockList!; + lockList = selectGroupListItem.lockList!; } for(int i = 0; i { for (var element in state.getewayListData.value) { if(state.isSelectAll == true){ state.isSelectAll = false; - element.selet = 0; + element.select = 0; }else{ state.isSelectAll = true; - element.selet = 1; + element.select = 1; } } }); @@ -80,10 +80,10 @@ class _SelectGetewayListPageState extends State { GetewayItemData getewayItemData = state.getewayListData.value[index]; return _electronicKeyItem(getewayItemData, () { setState(() { - if(getewayItemData.selet == 1){ - getewayItemData.selet = 0; + if(getewayItemData.select == 1){ + getewayItemData.select = 0; }else{ - getewayItemData.selet = 1; + getewayItemData.select = 1; } }); }); @@ -105,7 +105,7 @@ class _SelectGetewayListPageState extends State { ), GestureDetector( child: Image.asset( - (getewayItemData.selet == 1) ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', + (getewayItemData.select == 1) ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w, ), @@ -140,7 +140,7 @@ class _SelectGetewayListPageState extends State { bool isCanNext = false; var idList = []; for (var element in state.getewayListData.value) { - if(element.selet == 1){ + if(element.select == 1){ isCanNext = true; idList.add(element.plugId); } diff --git a/star_lock/lib/mine/mineSet/transferSmartLock/recipientInformation/recipientInformation_page.dart b/star_lock/lib/mine/mineSet/transferSmartLock/recipientInformation/recipientInformation_page.dart index dc78de13..adc31a3e 100644 --- a/star_lock/lib/mine/mineSet/transferSmartLock/recipientInformation/recipientInformation_page.dart +++ b/star_lock/lib/mine/mineSet/transferSmartLock/recipientInformation/recipientInformation_page.dart @@ -174,7 +174,7 @@ class _RecipientInformationPageState extends State { ), action: () async { var result = await Navigator.pushNamed( - context, Routers.seletCountryRegionPage); + context, Routers.selectCountryRegionPage); if (result != null) { result as Map; state.countryCode.value = result['code']; diff --git a/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_entity.dart b/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_entity.dart index 03ed8ee4..0427b2ab 100644 --- a/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_entity.dart +++ b/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_entity.dart @@ -51,7 +51,7 @@ class TransferSmartLockListData { class TransferSmartLockItemData { int? lockId; - int? selet = 0; + int? select = 0; String? lockAlias; LockVersion? lockVersion; diff --git a/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_page.dart b/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_page.dart index fc94902f..0ad823f9 100644 --- a/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_page.dart +++ b/star_lock/lib/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_page.dart @@ -36,10 +36,10 @@ class _TransferSmartLockPageState extends State { for (var element in state.transferSmartLockListData.value) { if(state.isSelectAll == true){ state.isSelectAll = false; - element.selet = 0; + element.select = 0; }else{ state.isSelectAll = true; - element.selet = 1; + element.select = 1; } } }); @@ -128,10 +128,10 @@ class _TransferSmartLockPageState extends State { TransferSmartLockItemData transferSmartLockItemData = state.transferSmartLockListData.value[index]; return _electronicKeyItem(transferSmartLockItemData, () { setState(() { - if(transferSmartLockItemData.selet == 1){ - transferSmartLockItemData.selet = 0; + if(transferSmartLockItemData.select == 1){ + transferSmartLockItemData.select = 0; }else{ - transferSmartLockItemData.selet = 1; + transferSmartLockItemData.select = 1; } }); }); @@ -149,7 +149,7 @@ class _TransferSmartLockPageState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox(width: 20.w), - Image.asset((transferSmartLockItemData.selet == 1) ? 'images/icon_round_selet.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w), + Image.asset((transferSmartLockItemData.select == 1) ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', width: 30.w, height: 30.w), SizedBox(width: 16.w), Image.asset('images/icon_lockGroup_item.png', width: 50.h, height: 50.h, fit: BoxFit.fill), SizedBox(width: 10.w), @@ -171,7 +171,7 @@ class _TransferSmartLockPageState extends State { bool isCanNext = false; var idList = []; for (var element in state.transferSmartLockListData.value) { - if(element.selet == 1){ + if(element.select == 1){ isCanNext = true; idList.add(element.lockId); } diff --git a/star_lock/lib/mine/valueAddedServices/valueAddedServicesBuy/valueAddedServicesBuy_page.dart b/star_lock/lib/mine/valueAddedServices/valueAddedServicesBuy/valueAddedServicesBuy_page.dart index acd02cf3..ac7453a2 100644 --- a/star_lock/lib/mine/valueAddedServices/valueAddedServicesBuy/valueAddedServicesBuy_page.dart +++ b/star_lock/lib/mine/valueAddedServices/valueAddedServicesBuy/valueAddedServicesBuy_page.dart @@ -94,7 +94,7 @@ class _ValueAddedServicesBuyPageState extends State { fontSize: 24.sp, color: AppColors.blackColor))), SizedBox(width: 5.w), Image.asset( - 'images/icon_round_selet.png', + 'images/icon_round_select.png', width: 40.w, height: 40.w, ) diff --git a/star_lock/lib/nav/navPages.dart b/star_lock/lib/nav/navPages.dart index 23832bfa..2391fc87 100644 --- a/star_lock/lib/nav/navPages.dart +++ b/star_lock/lib/nav/navPages.dart @@ -60,8 +60,8 @@ class _NavPagesState extends State { // height: 56.w, // child: Image.asset( // _currentIndex == 0 - // ? 'images/tabbar/icon_tab_main_selet.png' - // : 'images/tabbar/icon_tab_main_unselet.png', + // ? 'images/tabbar/icon_tab_main_select.png' + // : 'images/tabbar/icon_tab_main_unselect.png', // fit: BoxFit.cover), // ), // label: '首页'), @@ -71,8 +71,8 @@ class _NavPagesState extends State { // height: 56.w, // child: Image.asset( // _currentIndex == 1 - // ? 'images/tabbar/icon_tab_my_selet.png' - // : 'images/tabbar/icon_tab_my_unselet.png', + // ? 'images/tabbar/icon_tab_my_select.png' + // : 'images/tabbar/icon_tab_my_unselect.png', // fit: BoxFit.cover), // ), // label: '我的'), diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index 3ca85b51..1708c3ac 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -1,5 +1,5 @@ import 'package:get/get.dart'; -import 'package:star_lock/login/seletCountryRegion/common/countryRegionEntity.dart'; +import 'package:star_lock/login/selectCountryRegion/common/countryRegionEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart'; diff --git a/star_lock/lib/tools/ExpandedListView.dart b/star_lock/lib/tools/ExpandedListView.dart index d735df2c..67ad5ae0 100644 --- a/star_lock/lib/tools/ExpandedListView.dart +++ b/star_lock/lib/tools/ExpandedListView.dart @@ -64,7 +64,7 @@ class _ExpandedListTileState extends State { ), Image.asset( _isCheck - ? "images/icon_round_selet.png" + ? "images/icon_round_select.png" : "images/icon_round_unSelect.png", width: 30.w, height: 30.w, diff --git a/star_lock/lib/tools/showCalendar.dart b/star_lock/lib/tools/showCalendar.dart index 2ac0b7aa..09e6c815 100644 --- a/star_lock/lib/tools/showCalendar.dart +++ b/star_lock/lib/tools/showCalendar.dart @@ -6,10 +6,10 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; typedef SelectDateCallback(DateTime dateTime); class ShowCalendar extends StatelessWidget { - SelectDateCallback? seletAction; + SelectDateCallback? selectAction; DatePickerMode? datePickerMode; - ShowCalendar({Key? key, this.seletAction, this.datePickerMode}) : super(key: key); + ShowCalendar({Key? key, this.selectAction, this.datePickerMode}) : super(key: key); @override Widget build(BuildContext context) { @@ -37,7 +37,7 @@ class ShowCalendar extends StatelessWidget { lastDate: DateTime(2100, 1, 1), // 结束日期 initialCalendarMode: mode, // 日期选择样式 // 选中日期改变回调函数 - onDateChanged:seletAction!, + onDateChanged:selectAction!, // 月份改变回调函数 onDisplayedMonthChanged: (dateTime){ print("onDisplayedMonthChanged $dateTime"); diff --git a/star_lock/lib/translations/lanKeyEntity.dart b/star_lock/lib/translations/lanKeyEntity.dart index e9f307d7..8646be21 100644 --- a/star_lock/lib/translations/lanKeyEntity.dart +++ b/star_lock/lib/translations/lanKeyEntity.dart @@ -276,7 +276,7 @@ class LanKeyEntity { this.addGateway, this.turnThePowerBackOn, this.indicatorLight, - this.seletGatewayTypeNextTip, + this.selectGatewayTypeNextTip, this.selectGateway, this.gatewayConfigurationWifiTip, this.wifiPassward, @@ -317,7 +317,7 @@ class LanKeyEntity { this.email, this.mobileNumber, this.countryAndRegion, - this.selet, + this.select, this.businessCooperation, this.officialWebsite, this.computerWebVersion, @@ -400,9 +400,9 @@ class LanKeyEntity { this.whetherTheEmployeeHasPassword, this.whetherTheEmployeeHasCard, this.whetherTheEmployeeHasFingerprint, - this.seletPassword, - this.seletCard, - this.seletFingerprint, + this.selectPassword, + this.selectCard, + this.selectFingerprint, this.getKey, this.getCard, this.getFingerprint, @@ -746,7 +746,7 @@ class LanKeyEntity { addGateway = json['addGateway']; turnThePowerBackOn = json['turnThePowerBackOn']; indicatorLight = json['indicatorLight']; - seletGatewayTypeNextTip = json['seletGatewayTypeNextTip']; + selectGatewayTypeNextTip = json['selectGatewayTypeNextTip']; selectGateway = json['selectGateway']; gatewayConfigurationWifiTip = json['gatewayConfigurationWifiTip']; wifiPassward = json['wifiPassward']; @@ -793,7 +793,7 @@ class LanKeyEntity { email = json['email']; mobileNumber = json['mobileNumber']; countryAndRegion = json['countryAndRegion']; - selet = json['selet']; + select = json['select']; businessCooperation = json['businessCooperation']; officialWebsite = json['officialWebsite']; @@ -887,9 +887,9 @@ class LanKeyEntity { whetherTheEmployeeHasPassword = json['whetherTheEmployeeHasPassword']; whetherTheEmployeeHasCard = json['whetherTheEmployeeHasCard']; whetherTheEmployeeHasFingerprint = json['whetherTheEmployeeHasFingerprint']; - seletPassword = json['seletPassword']; - seletCard = json['seletCard']; - seletFingerprint = json['seletFingerprint']; + selectPassword = json['selectPassword']; + selectCard = json['selectCard']; + selectFingerprint = json['selectFingerprint']; getKey = json['getKey']; getCard = json['getCard']; getFingerprint = json['getFingerprint']; @@ -1232,7 +1232,7 @@ class LanKeyEntity { String? addGateway; String? turnThePowerBackOn; String? indicatorLight; - String? seletGatewayTypeNextTip; + String? selectGatewayTypeNextTip; String? selectGateway; String? gatewayConfigurationWifiTip; String? wifiPassward; @@ -1275,7 +1275,7 @@ class LanKeyEntity { String? email; String? mobileNumber; String? countryAndRegion; - String? selet; + String? select; String? businessCooperation; String? officialWebsite; @@ -1366,9 +1366,9 @@ class LanKeyEntity { String? whetherTheEmployeeHasPassword; String? whetherTheEmployeeHasCard; String? whetherTheEmployeeHasFingerprint; - String? seletPassword; - String? seletCard; - String? seletFingerprint; + String? selectPassword; + String? selectCard; + String? selectFingerprint; String? getKey; String? getCard; String? getFingerprint; @@ -1716,7 +1716,7 @@ class LanKeyEntity { map['addGateway'] = addGateway; map['turnThePowerBackOn'] = turnThePowerBackOn; map['indicatorLight'] = indicatorLight; - map['seletGatewayTypeNextTip'] = seletGatewayTypeNextTip; + map['selectGatewayTypeNextTip'] = selectGatewayTypeNextTip; map['selectGateway'] = selectGateway; map['gatewayConfigurationWifiTip'] = gatewayConfigurationWifiTip; map['wifiPassward'] = wifiPassward; @@ -1761,7 +1761,7 @@ class LanKeyEntity { map['email'] = email; map['mobileNumber'] = mobileNumber; map['countryAndRegion'] = countryAndRegion; - map['selet'] = selet; + map['select'] = select; map['businessCooperation'] = businessCooperation; map['officialWebsite'] = officialWebsite; @@ -1855,9 +1855,9 @@ class LanKeyEntity { map['whetherTheEmployeeHasPassword'] = whetherTheEmployeeHasPassword; map['whetherTheEmployeeHasCard'] = whetherTheEmployeeHasCard; map['whetherTheEmployeeHasFingerprint'] = whetherTheEmployeeHasFingerprint; - map['seletPassword'] = seletPassword; - map['seletCard'] = seletCard; - map['seletFingerprint'] = seletFingerprint; + map['selectPassword'] = selectPassword; + map['selectCard'] = selectCard; + map['selectFingerprint'] = selectFingerprint; map['getKey'] = getKey; map['getCard'] = getCard; map['getFingerprint'] = getFingerprint; From 2b7a351347215dd479c2fc620a8bdb4aa024458b Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Tue, 23 Jan 2024 18:12:51 +0800 Subject: [PATCH 8/8] =?UTF-8?q?1=EF=BC=8C=E6=96=B0=E5=A2=9E=E4=BA=BA?= =?UTF-8?q?=E8=84=B8=E6=B7=BB=E5=8A=A0=E7=9B=B8=E5=85=B3=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E5=8F=8A=E9=A1=B5=E9=9D=A2=EF=BC=88=E6=9C=AA=E5=AE=8C=E6=88=90?= =?UTF-8?q?=EF=BC=89=202=EF=BC=8C=E6=96=B0=E5=A2=9E=E4=BA=BA=E8=84=B8?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=EF=BC=88=E6=9C=AA=E5=AE=8C?= =?UTF-8?q?=E6=88=90=EF=BC=89=E4=BA=BA=E8=84=B8=E5=88=97=E8=A1=A8=E3=80=81?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=BA=E8=84=B8=E3=80=81=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E4=BA=BA=E8=84=B8=E5=90=8D=E7=A7=B0=E6=98=AF=E5=90=A6=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E3=80=81=E6=9B=B4=E6=96=B0=E4=BA=BA=E8=84=B8=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=8E=A5=E5=8F=A3=203=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=BA=BA=E8=84=B8=E7=9B=B8=E5=85=B3=E5=8D=8F=E8=AE=AE=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=EF=BC=88=E6=9C=AA=E5=AE=8C=E5=96=84=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/images/main/icon_addFace_step1.png | Bin 0 -> 81420 bytes star_lock/images/main/icon_addFace_step2.png | Bin 0 -> 97731 bytes star_lock/images/main/icon_main_addFace.png | Bin 24895 -> 0 bytes star_lock/lib/appRouters.dart | 10 +- .../lib/blue/io_protocol/io_addFace.dart | 153 +++ .../io_protocol/io_queryingFaceStatus.dart | 118 +++ star_lock/lib/blue/reciver_data.dart | 131 ++- star_lock/lib/blue/sender_manage.dart | 875 ++++++++++-------- .../face/addFace/addFace_entity.dart | 0 .../face/addFace/addFace_logic.dart | 294 ++++++ .../lockDetail/face/addFace/addFace_page.dart | 61 +- .../face/addFace/addFace_state.dart | 35 + .../face/addFaceType/addFaceType_logic.dart | 96 +- .../face/addFaceType/addFaceType_page.dart | 18 +- .../face/addFaceType/addFaceType_state.dart | 27 +- .../face/faceDetail/faceDetail_logic.dart | 193 ++++ .../face/faceDetail/faceDetail_page.dart | 374 ++++++++ .../face/faceDetail/faceDetail_state.dart | 38 + .../face/faceList/faceListData_entity.dart | 131 +++ .../face/faceList/faceList_logic.dart | 425 ++++++++- .../face/faceList/faceList_page.dart | 181 ++-- .../face/faceList/faceList_state.dart | 24 +- star_lock/lib/network/api.dart | 5 + star_lock/lib/network/api_provider.dart | 216 +++-- star_lock/lib/network/api_repository.dart | 182 ++-- .../lib/network/response_interceptor_log.dart | 3 +- star_lock/lib/tools/xs_aliyunPush.dart | 16 +- 27 files changed, 2855 insertions(+), 751 deletions(-) create mode 100644 star_lock/images/main/icon_addFace_step1.png create mode 100644 star_lock/images/main/icon_addFace_step2.png delete mode 100644 star_lock/images/main/icon_main_addFace.png create mode 100644 star_lock/lib/blue/io_protocol/io_addFace.dart create mode 100644 star_lock/lib/blue/io_protocol/io_queryingFaceStatus.dart create mode 100644 star_lock/lib/main/lockDetail/face/addFace/addFace_entity.dart create mode 100644 star_lock/lib/main/lockDetail/face/addFace/addFace_logic.dart create mode 100644 star_lock/lib/main/lockDetail/face/addFace/addFace_state.dart create mode 100644 star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_logic.dart create mode 100644 star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_state.dart create mode 100644 star_lock/lib/main/lockDetail/face/faceList/faceListData_entity.dart diff --git a/star_lock/images/main/icon_addFace_step1.png b/star_lock/images/main/icon_addFace_step1.png new file mode 100644 index 0000000000000000000000000000000000000000..7affaf462dfe858724706526bc54a883ab7ff4cf GIT binary patch literal 81420 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

ojXJA-WRVO7xt6hMKOt2}SJcK)L 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 literal 0 HcmV?d00001 diff --git a/star_lock/images/main/icon_addFace_step2.png b/star_lock/images/main/icon_addFace_step2.png new file mode 100644 index 0000000000000000000000000000000000000000..81f03981d4ee3321f4f719386aedf61e6112e7b2 GIT binary patch literal 97731 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

jBlBKsmZVu8n0O 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

UDefAnIt??XQH+L$)^W&1t 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 z z5vpPR6WQ#8{(LMBOzL9`UM9?&NV0kFOCnoe;YkyNfuoTfstjO5`U>}UBr!<%Ce%=% z-PJAyHY4&a-%7(A0KI-jI{L&E%1G41i{Cp^UEY4{)v_zF1MbD;W$nW=CmX#!=B!Gl zR1T~CX%4RrMpLjhsZ2e=9m94XP3ez42ad;q3BDF6b;I8$RTiXmMSVR3YS4>r-s<6s zFxXKqcJ!2VeO;gCG|FZ6l!^j686ZUMXg~}GlLGy$q_rL>3G57l-J$a73z6(kIe%u+ zK<8VrfE`tcc>}Ks+O$bQMm(w*y1Z83un{2(Ogui>QWm7d`z9RE53F}8x`iRBijDq6uj!) zu{i(`!*m#6-`m~*yT(7Dw{W#O9zgd~RW?txx}gcD*2frvQZv|Gmx(Bnc~9oaJ%N6E zYg>|E--=N@?`gGdk%nb*}HYr{x|!Qyl-h0qrSo}zd^4vss?^Lg`q_XBjtI@%GVv4c(PqO zcLr$LMx9A5s?4kggYzh!Wd&QC8)a?nPT9QmPTAeijt2pGTXS~xkji%x*RS!Qx~a=| z602DevX{20%zh$EfAsFy9AFYVDZp+DTL5WSD#wjWua}jlJ|>AD(iNB)^hkHWuYrP^ z!ZH8=Ix!Ql1Ivl++gTlV_-bvU>A|2FP@|^w#TEqsW6K_lJ;m z_QYCou8Kh<$oqj<9Z)*aB)0=^FX_dE-aQ-#rWaQtgMcK(rM&a<4+_fy>;lJ)mmuoU z9@}NJmPUE3hcg+LV-W1u;_oU`*N{>fMpV7xOUj4y$r4|XWDhrDa zw;6-jCAD`LK<2uZJW>JF)|borUYYL-wYynNHyKG*}J z@vw^t$|8<#GI_5_$qBNjw zi^nu7RR>wl&v*gs0u$x<4c40M0Cer0|<^Kn5!72dQUwE?s0000 const MsgNotificationPage()), - GetPage(name: Routers.addFaceTipPage, page: () => const AddFaceTipPage()), + GetPage(name: Routers.addFacePage, page: () => const AddFacePage()), GetPage( name: Routers.nDaysUnopenedPage, page: () => const NDaysUnopenedPage()), GetPage( @@ -1013,6 +1016,7 @@ abstract class AppRouters { name: Routers.catEyeCustomModePage, page: () => const CatEyeCustomModePage()), GetPage(name: Routers.videoSlotPage, page: (() => const VideoSlotPage())), - GetPage(name: Routers.liveVideoPage, page: (() => const LiveVideoPage())) + GetPage(name: Routers.liveVideoPage, page: (() => const LiveVideoPage())), + GetPage(name: Routers.faceDetailPage, page: (() => const FaceDetailPage())), ]; } diff --git a/star_lock/lib/blue/io_protocol/io_addFace.dart b/star_lock/lib/blue/io_protocol/io_addFace.dart new file mode 100644 index 00000000..6ce9f1fd --- /dev/null +++ b/star_lock/lib/blue/io_protocol/io_addFace.dart @@ -0,0 +1,153 @@ +import 'dart:convert'; + +import '../io_tool/io_tool.dart'; +import '../sm4Encipher/sm4.dart'; +import '../io_reply.dart'; +import '../io_sender.dart'; +import '../io_type.dart'; +import 'package:crypto/crypto.dart' as crypto; + +///TODO:添加人脸 +/* +备注: +删除单个人脸规则:UseCountLimit 设置为 0。删除全部指纹规则: UseCountLimit 设置为 0,FingerNo 设置为 255,userId 设置为“Delete All !@#”,只有门锁管理员才有权限 +**/ +class SenderAddFaceCommand extends SenderProtocol { + String? keyID; + String? userID; + int? faceNo; + int? useCountLimit; + List? token; + int? startTime; + int? endTime; + int? needAuthor; + List? publicKey; + List? privateKey; + + SenderAddFaceCommand({ + this.keyID, + this.userID, + this.faceNo, + this.useCountLimit, + this.token, + this.startTime, + this.endTime, + this.needAuthor, + this.publicKey, + this.privateKey, + }) : super(CommandType.generalExtendedCommond); + + @override + List messageDetail() { + List data = []; + List subData = []; + List ebcData = []; + + // 指令类型 + int type = commandType!.typeValue; + double typeDouble = type / 256; + int type1 = typeDouble.toInt(); + int type2 = type % 256; + data.add(type1); + data.add(type2); + + // 子命令类型--注册人脸开始 + data.add(81); + + // keyID 40 + int keyIDLength = utf8.encode(keyID!).length; + // print("${commandType!.typeValue}LockIDLength:$lockIDLength utf8.encode(lockID!)${utf8.encode(lockID!)}"); + subData.addAll(utf8.encode(keyID!)); + subData = getFixedLengthList(subData, 40 - keyIDLength); + + //userID 20 + int userIDLength = utf8.encode(userID!).length; + // print("${commandType!.typeValue}IDLength:$authUserIDLength utf8.encode(authUserID!)${utf8.encode(authUserID!)}"); + subData.addAll(utf8.encode(userID!)); + subData = getFixedLengthList(subData, 20 - userIDLength); + + // PwdNo + subData.add(faceNo!); + + // UseCountLimit + subData.add(useCountLimit!); + + // token + subData.addAll(token!); + + // startTime 4 + subData.add((startTime! & 0xff000000) >> 24); + subData.add((startTime! & 0xff0000) >> 16); + subData.add((startTime! & 0xff00) >> 8); + subData.add((startTime! & 0xff)); + + // endTime 4 + subData.add((endTime! & 0xff000000) >> 24); + subData.add((endTime! & 0xff0000) >> 16); + subData.add((endTime! & 0xff00) >> 8); + subData.add((endTime! & 0xff)); + + if (needAuthor == 0) { + //AuthCodeLen 1 + subData.add(0); + } else { + List authCodeData = []; + + //authUserID + authCodeData.addAll(utf8.encode(userID!)); + + //KeyID + authCodeData.addAll(utf8.encode(keyID!)); + + //token 4 首次请求 Token 填 0,如果锁需要鉴权操作者身份,则会分配动态口令并在应答消息中返回,二次请求时带上。 + authCodeData.addAll(token!); + + authCodeData.addAll(publicKey!); + + print("${commandType!.typeValue}-authCodeData:$authCodeData"); + + // 把KeyID、authUserID、时间戳、公钥通过md5加密之后就是authCode + var authCode = crypto.md5.convert(authCodeData); + + subData.add(authCode.bytes.length); + subData.addAll(authCode.bytes); + } + + data.add(subData.length); + data.addAll(subData); + + if ((data.length % 16) != 0) { + int add = (16 - data.length % 16); + for (int i = 0; i < add; i++) { + data.add(0); + } + } + print("${commandType!.typeName} SM4Data:$data"); + // 拿到数据之后通过LockId进行SM4 ECB加密 key:544d485f633335373034383064613864 + ebcData = SM4.encrypt(data, key: privateKey, mode: SM4CryptoMode.ECB); + return ebcData; + } +} + +class SenderAddFaceReply extends Reply { + SenderAddFaceReply.parseData(CommandType commandType, List dataDetail) + : super.parseData(commandType, dataDetail) { + data = dataDetail; + } +} + +class SenderAddFaceProcessReply extends Reply { + SenderAddFaceProcessReply.parseData( + CommandType commandType, List dataDetail) + : super.parseData(commandType, dataDetail) { + data = dataDetail; + } +} + +class SenderAddFaceConfirmationReply extends Reply { + SenderAddFaceConfirmationReply.parseData( + CommandType commandType, List dataDetail) + : super.parseData(commandType, dataDetail) { + data = dataDetail; + } +} diff --git a/star_lock/lib/blue/io_protocol/io_queryingFaceStatus.dart b/star_lock/lib/blue/io_protocol/io_queryingFaceStatus.dart new file mode 100644 index 00000000..6f72416d --- /dev/null +++ b/star_lock/lib/blue/io_protocol/io_queryingFaceStatus.dart @@ -0,0 +1,118 @@ +//TODO:查询指纹状态 +import 'dart:convert'; + +import '../io_reply.dart'; +import '../io_sender.dart'; +import '../io_tool/io_tool.dart'; +import '../io_type.dart'; +import '../sm4Encipher/sm4.dart'; +import 'package:crypto/crypto.dart' as crypto; + +class SenderQueryingFaceStatusCommand extends SenderProtocol { + String? keyID; + String? userID; + int? role; + int? fingerCount; + int? fingerNo; + List? token; + int? needAuthor; + List? publicKey; + List? privateKey; + + SenderQueryingFaceStatusCommand({ + this.keyID, + this.userID, + this.role, + this.fingerCount, + this.fingerNo, + this.token, + this.needAuthor, + this.publicKey, + this.privateKey, + }) : super(CommandType.generalExtendedCommond); + + @override + List messageDetail() { + List data = []; + List subData = []; + List ebcData = []; + + // 指令类型 + int type = commandType!.typeValue; + double typeDouble = type / 256; + int type1 = typeDouble.toInt(); + int type2 = type % 256; + data.add(type1); + data.add(type2); + + // 子命令类型--查询人脸状态 + data.add(80); + + // keyID 40 + int keyIDLength = utf8.encode(keyID!).length; + subData.addAll(utf8.encode(keyID!)); + subData = getFixedLengthList(subData, 40 - keyIDLength); + + //userID 20 + int userIDLength = utf8.encode(userID!).length; + subData.addAll(utf8.encode(userID!)); + subData = getFixedLengthList(subData, 20 - userIDLength); + + // role + subData.add(role!); + + // fingerCount + subData.add(fingerCount!); + + // FingerNo + subData.add(fingerNo!); + + if (needAuthor == 0) { + //AuthCodeLen 1 + subData.add(0); + } else { + List authCodeData = []; + + //authUserID + authCodeData.addAll(utf8.encode(userID!)); + + //KeyID + authCodeData.addAll(utf8.encode(keyID!)); + + //token 4 首次请求 Token 填 0,如果锁需要鉴权操作者身份,则会分配动态口令并在应答消息中返回,二次请求时带上。 + authCodeData.addAll(token!); + + authCodeData.addAll(publicKey!); + + print("${commandType!.typeValue}-authCodeData:$authCodeData"); + + // 把KeyID、authUserID、时间戳、公钥通过md5加密之后就是authCode + var authCode = crypto.md5.convert(authCodeData); + + subData.add(authCode.bytes.length); + subData.addAll(authCode.bytes); + } + + data.add(subData.length); + data.addAll(subData); + + if ((data.length % 16) != 0) { + int add = (16 - data.length % 16); + for (int i = 0; i < add; i++) { + data.add(0); + } + } + print("${commandType!.typeName} SM4Data:$data"); + // 拿到数据之后通过LockId进行SM4 ECB加密 key:544d485f633335373034383064613864 + ebcData = SM4.encrypt(data, key: privateKey, mode: SM4CryptoMode.ECB); + return ebcData; + } +} + +class SenderQueryingFaceStatusReply extends Reply { + SenderQueryingFaceStatusReply.parseData( + CommandType commandType, List dataDetail) + : super.parseData(commandType, dataDetail) { + data = dataDetail; + } +} diff --git a/star_lock/lib/blue/reciver_data.dart b/star_lock/lib/blue/reciver_data.dart index 1a87e517..7665d9d8 100644 --- a/star_lock/lib/blue/reciver_data.dart +++ b/star_lock/lib/blue/reciver_data.dart @@ -1,14 +1,14 @@ - - import 'dart:convert'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:star_lock/blue/blue_manage.dart'; +import 'package:star_lock/blue/io_protocol/io_addFace.dart'; import 'package:star_lock/blue/io_protocol/io_changeAdministratorPassword.dart'; import 'package:star_lock/blue/io_protocol/io_deletUser.dart'; import 'package:star_lock/blue/io_protocol/io_editUser.dart'; import 'package:star_lock/blue/io_protocol/io_factoryDataReset.dart'; import 'package:star_lock/blue/io_protocol/io_getLockStatu.dart'; +import 'package:star_lock/blue/io_protocol/io_queryingFaceStatus.dart'; import 'package:star_lock/blue/io_protocol/io_readAdminPassword.dart'; import 'package:star_lock/blue/io_protocol/io_readSupportFunctionsNoParameters.dart'; import 'package:star_lock/blue/io_protocol/io_readSupportFunctionsWithParameters.dart'; @@ -44,29 +44,31 @@ import 'io_tool/manager_event_bus.dart'; import 'sm4Encipher/sm4.dart'; class CommandReciverManager { - static void appDataReceive(List data) async { ///解析数据 - if(data.isEmpty){ + if (data.isEmpty) { return; } int dataSize = data.length; // 当小于包头加起来13个字节 - if(dataSize < 13){ + if (dataSize < 13) { return; } - print("appDataReceiveData:$data"); // &&(data[4] == 0x11) - if((data[0] == 0xEF)&&(data[1] == 0x01)&&(data[2] == 0xEE)&&(data[3] == 0x02)){ - var tmpType = (data[7] & 0x0f);// 包标识 + print("appDataReceiveData:$data"); // &&(data[4] == 0x11) + if ((data[0] == 0xEF) && + (data[1] == 0x01) && + (data[2] == 0xEE) && + (data[3] == 0x02)) { + var tmpType = (data[7] & 0x0f); // 包标识 // print("temType:$tmpType"); - var dataLen = data[8] * 256 + data[9];// 高16位用来指示后面数据块内容的长度 - var oriLen = data[10] * 256 + data[11];// 低16位用来指示数据加密前的原长度 + var dataLen = data[8] * 256 + data[9]; // 高16位用来指示后面数据块内容的长度 + var oriLen = data[10] * 256 + data[11]; // 低16位用来指示数据加密前的原长度 // print("dataLen:$dataLen oriLen:$oriLen"); // List dataList = []; List oriDataList = []; - switch(tmpType){ + switch (tmpType) { case 0: //不加密 // for (var i = 0; i < oriLen ; i++) { // oriDataList.add(data[12 + i]); @@ -84,7 +86,9 @@ class CommandReciverManager { // 解密 // String key = SM4.createHexKey(key: IoManager().getCurrentDeviceLockId); - oriDataList = SM4.decrypt(getDataList, key: utf8.encode(BlueManage().connectDeviceName), mode: SM4CryptoMode.ECB); + oriDataList = SM4.decrypt(getDataList, + key: utf8.encode(BlueManage().connectDeviceName), + mode: SM4CryptoMode.ECB); oriDataList = oriDataList.sublist(0, oriLen); // print("SM4 oriDataList:$oriDataList"); break; @@ -98,11 +102,11 @@ class CommandReciverManager { // print("getPrivateKeyList$getPrivateKeyList"); // 解密 - oriDataList = SM4.decrypt(getDataList, key: getPrivateKeyList, mode: SM4CryptoMode.ECB); + oriDataList = SM4.decrypt(getDataList, + key: getPrivateKeyList, mode: SM4CryptoMode.ECB); oriDataList = oriDataList.sublist(0, oriLen); print("SM4 oriDataList:$oriDataList"); break; - } parseData(oriDataList).then((value) { EasyLoading.dismiss(); @@ -113,14 +117,14 @@ class CommandReciverManager { } static Future parseData(List data) async { - if(data.isNotEmpty){ + if (data.isNotEmpty) { var cmd = data[0] * 256 + data[1]; - CommandType commandType = ExtensionCommandType.getCommandType(cmd); + CommandType commandType = ExtensionCommandType.getCommandType(cmd); await IoManager().increaseCommandIndex(); // data.removeRange(0, 2); // print("111111data cmd:$cmd commandType:$commandType data:$data"); var reply; - switch(commandType) { + switch (commandType) { case CommandType.getLockPublicKey: { reply = GetPublicKeyReply.parseData(commandType, data); @@ -180,17 +184,19 @@ class CommandReciverManager { { // 子命令类型 int subType = data[3]; - switch(subType){ + switch (subType) { case 2: { // 修改管理员密码 - reply = ChangeAdministratorPasswordReply.parseData(commandType, data); + reply = ChangeAdministratorPasswordReply.parseData( + commandType, data); } break; case 3: { // 设置开锁密码 - reply = SenderCustomPasswordsReply.parseData(commandType, data); + reply = + SenderCustomPasswordsReply.parseData(commandType, data); } break; case 4: @@ -202,13 +208,15 @@ class CommandReciverManager { case 15: { // 查询用户、指纹、密码、卡片数量(用于判断是否同步) - reply = SenderCheckingUserInfoCountReply.parseData(commandType, data); + reply = SenderCheckingUserInfoCountReply.parseData( + commandType, data); } break; case 20: { // 查询卡片状态 - reply = SenderCheckingCardStatusReply.parseData(commandType, data); + reply = SenderCheckingCardStatusReply.parseData( + commandType, data); } break; case 21: @@ -220,43 +228,50 @@ class CommandReciverManager { case 22: { // 注册卡片确认 - reply = SenderAddICCardConfirmationReply.parseData(commandType, data); + reply = SenderAddICCardConfirmationReply.parseData( + commandType, data); } break; case 30: { // 查询指纹状态 - reply = SenderQueryingFingerprintStatusReply.parseData(commandType, data); + reply = SenderQueryingFingerprintStatusReply.parseData( + commandType, data); } break; case 31: { // 注册指纹开始 - reply = SenderAddFingerprintReply.parseData(commandType, data); + reply = + SenderAddFingerprintReply.parseData(commandType, data); } break; case 32: { // 注册指纹确认 - reply = SenderAddFingerprintConfirmationReply.parseData(commandType, data); + reply = SenderAddFingerprintConfirmationReply.parseData( + commandType, data); } break; case 33: { // 注册指纹过程 - reply = SenderAddFingerprintProcessReply.parseData(commandType, data); + reply = SenderAddFingerprintProcessReply.parseData( + commandType, data); } break; case 40: { // 事件查询记录 - reply = SenderReferEventRecordNumberReply.parseData(commandType, data); + reply = SenderReferEventRecordNumberReply.parseData( + commandType, data); } break; case 41: { // 事件查询记录 - reply = SenderReferEventRecordTimeReply.parseData(commandType, data); + reply = SenderReferEventRecordTimeReply.parseData( + commandType, data); } break; // case 50: @@ -268,55 +283,92 @@ class CommandReciverManager { case 51: { // wifi配网结果 - reply = SenderConfiguringWifiReply.parseData(commandType, data); + reply = + SenderConfiguringWifiReply.parseData(commandType, data); } break; case 60: { // 注册胁迫密码 - reply = SenderAddStressPasswordReply.parseData(commandType, data); + reply = + SenderAddStressPasswordReply.parseData(commandType, data); } break; case 61: { // 注册胁迫卡片 - reply = SenderAddStressICCardReply.parseData(commandType, data); + reply = + SenderAddStressICCardReply.parseData(commandType, data); } break; case 62: { // 注册胁迫指纹 - reply = SenderAddStressFingerprintReply.parseData(commandType, data); + reply = SenderAddStressFingerprintReply.parseData( + commandType, data); } break; case 70: { // 设置支持功能(不带参数)启用/禁用 - reply = SetSupportFunctionsNoParametersReply.parseData(commandType, data); + reply = SetSupportFunctionsNoParametersReply.parseData( + commandType, data); } break; case 71: { // 读取支持功能(不带参数)启用/禁用状态 - reply = ReadSupportFunctionsNoParametersReply.parseData(commandType, data); + reply = ReadSupportFunctionsNoParametersReply.parseData( + commandType, data); } break; case 72: { // 设置支持功能(带参数) - reply = SetSupportFunctionsWithParametersReply.parseData(commandType, data); + reply = SetSupportFunctionsWithParametersReply.parseData( + commandType, data); } break; case 73: { // 读取支持功能(带参数)参数 - reply = ReadSupportFunctionsWithParametersReply.parseData(commandType, data); + reply = ReadSupportFunctionsWithParametersReply.parseData( + commandType, data); } break; case 74: { // 读取管理员密码 - reply = SenderReadAdminPasswordReply.parseData(commandType, data); + reply = + SenderReadAdminPasswordReply.parseData(commandType, data); + } + break; + case 80: + { + // 查询人脸状态 + reply = SenderQueryingFaceStatusReply.parseData( + commandType, data); + } + break; + case 81: + { + // 注册人脸开始 + reply = SenderAddFaceReply.parseData(commandType, data); + } + break; + case 82: + { + // 注册人脸确认 + reply = SenderAddFaceConfirmationReply.parseData( + commandType, data); + } + break; + + case 83: + { + // 注册人脸过程 + reply = + SenderAddFaceProcessReply.parseData(commandType, data); } break; } @@ -326,5 +378,4 @@ class CommandReciverManager { return reply; } } - -} \ No newline at end of file +} diff --git a/star_lock/lib/blue/sender_manage.dart b/star_lock/lib/blue/sender_manage.dart index 32cc168c..50021afa 100644 --- a/star_lock/lib/blue/sender_manage.dart +++ b/star_lock/lib/blue/sender_manage.dart @@ -1,9 +1,10 @@ - +import 'package:star_lock/blue/io_protocol/io_addFace.dart'; import 'package:star_lock/blue/io_protocol/io_addICCard.dart'; import 'package:star_lock/blue/io_protocol/io_addStressICCard.dart'; import 'package:star_lock/blue/io_protocol/io_changeAdministratorPassword.dart'; import 'package:star_lock/blue/io_protocol/io_deletUser.dart'; import 'package:star_lock/blue/io_protocol/io_getLockStatu.dart'; +import 'package:star_lock/blue/io_protocol/io_queryingFaceStatus.dart'; import 'package:star_lock/blue/io_protocol/io_readAdminPassword.dart'; import 'io_protocol/io_addFingerprint.dart'; @@ -33,50 +34,53 @@ import 'io_protocol/io_transferPermissions.dart'; import 'sender_data.dart'; class IoSenderManage { - //todo:获取公钥 - static void getPublicKey({String? lockId ,CommandSendCallBack? callBack}) { - CommandSenderManager().managerSendData(command: GetPublicKeyCommand( + static void getPublicKey({String? lockId, CommandSendCallBack? callBack}) { + CommandSenderManager().managerSendData( + command: GetPublicKeyCommand( lockID: lockId, - ), callBack:callBack); + ), + callBack: callBack); } //todo:获取私钥 - static void getPrivateKey({ - String? lockId, - String? keyID, // 钥匙ID - String? authUserID,// 钥匙授权人ID - int? nowTime, - List? publicKeyData, - int? needAuthor, - CommandSendCallBack? callBack}) { - CommandSenderManager().managerSendData(command: GetPrivateKeyCommand( - lockID: lockId, - keyID: keyID, - authUserID: authUserID, - nowTime: nowTime, - publicKeyData:publicKeyData, - needAuthor: needAuthor, - ), callBack:callBack); + static void getPrivateKey( + {String? lockId, + String? keyID, // 钥匙ID + String? authUserID, // 钥匙授权人ID + int? nowTime, + List? publicKeyData, + int? needAuthor, + CommandSendCallBack? callBack}) { + CommandSenderManager().managerSendData( + command: GetPrivateKeyCommand( + lockID: lockId, + keyID: keyID, + authUserID: authUserID, + nowTime: nowTime, + publicKeyData: publicKeyData, + needAuthor: needAuthor, + ), + callBack: callBack); } //todo:添加用户 - static void senderAddUser({ - String? lockID, - String? authUserID, - String? keyID, - String? userID, - int? openMode, - int? keyType, - int? startDate, - int? expireDate, - int? role, - String? password, - int? needAuthor, - List? publicKey, - List? privateKey, - List? token, - CommandSendCallBack? callBack}) { + static void senderAddUser( + {String? lockID, + String? authUserID, + String? keyID, + String? userID, + int? openMode, + int? keyType, + int? startDate, + int? expireDate, + int? role, + String? password, + int? needAuthor, + List? publicKey, + List? privateKey, + List? token, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: AddUserCommand( lockID: lockID, @@ -92,27 +96,27 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - token: token - ), callBack:callBack); + token: token), + callBack: callBack); } //todo:修改用户 - static void senderEditUser({ - String? lockID, - String? authUserID, - String? keyID, - String? userID, - int? openMode, - int? keyType, - int? startDate, - int? expireDate, - int? role, - String? password, - int? needAuthor, - List? publicKey, - List? privateKey, - List? token, - CommandSendCallBack? callBack}) { + static void senderEditUser( + {String? lockID, + String? authUserID, + String? keyID, + String? userID, + int? openMode, + int? keyType, + int? startDate, + int? expireDate, + int? role, + String? password, + int? needAuthor, + List? publicKey, + List? privateKey, + List? token, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: EditUserCommand( lockID: lockID, @@ -128,46 +132,46 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - token: token - ), callBack:callBack); + token: token), + callBack: callBack); } //todo:删除 - static void deletUser({ - String? lockID, - String? authUserID, - String? keyID, - String? delUserID, - int? needAuthor, - List? publicKey, - List? privateKey, - List? token, - CommandSendCallBack? callBack}) { + static void deletUser( + {String? lockID, + String? authUserID, + String? keyID, + String? delUserID, + int? needAuthor, + List? publicKey, + List? privateKey, + List? token, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: DeletUserCommand( lockID: lockID, authUserID: authUserID, keyID: keyID, - delUserID:delUserID, + delUserID: delUserID, needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - token: token - ), callBack:callBack); + token: token), + callBack: callBack); } //todo:开锁 - static void senderOpenLock({ - String? keyID, - String? userID, - int? openMode, - int? openTime, - String? onlineToken, - List? token, - int? needAuthor, - List? signKey, - List? privateKey, - CommandSendCallBack? callBack}) { + static void senderOpenLock( + {String? keyID, + String? userID, + int? openMode, + int? openTime, + String? onlineToken, + List? token, + int? needAuthor, + List? signKey, + List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: OpenLockCommand( keyID: keyID, @@ -179,49 +183,52 @@ class IoSenderManage { needAuthor: needAuthor, signKey: signKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:获取锁状态 - static void senderGetLockStatu({ - String? lockID, - String? userID, - List? privateKey, - CommandSendCallBack? callBack}) { + static void senderGetLockStatu( + {String? lockID, + String? userID, + List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: GetLockStatuCommand( lockID: lockID, userID: userID, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:获取星锁状态信息 - static void senderGetStarLockStatuInfo({ - String? lockID, - String? userID, - List? privateKey, - CommandSendCallBack? callBack}) { + static void senderGetStarLockStatuInfo( + {String? lockID, + String? userID, + List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: GetStarLockStatuInfoCommand( lockID: lockID, userID: userID, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:转移权限 - static void senderTransferPermissions({ - required String? lockID, - required String? authUserID, - required String? keyID, - required String? oldUserID, - required String? newUserID, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - required List? token, - CommandSendCallBack? callBack}) { + static void senderTransferPermissions( + {required String? lockID, + required String? authUserID, + required String? keyID, + required String? oldUserID, + required String? newUserID, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + required List? token, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: TransferPermissionsCommand( lockID: lockID, @@ -232,20 +239,20 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - token: token - ), callBack:callBack); + token: token), + callBack: callBack); } //todo:恢复出厂设置 - static void senderFactoryDataReset({ - required String? lockID, - required String? userID, - required String? keyID, - required List? publicKey, - required List? privateKey, - required List? token, - required int? needAuthor, - CommandSendCallBack? callBack}) { + static void senderFactoryDataReset( + {required String? lockID, + required String? userID, + required String? keyID, + required List? publicKey, + required List? privateKey, + required List? token, + required int? needAuthor, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: FactoryDataResetCommand( lockID: lockID, @@ -254,60 +261,30 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - token: token - ), callBack:callBack); + token: token), + callBack: callBack); } //todo:设置开锁密码 - static void senderCustomPasswordsCommand({ - required String? keyID, - required String? userID, - required int? pwdNo, - required String? pwd, - required int? useCountLimit, - required List? token, - required int? startTime, - required int? endTime, - required int? needAuthor, - required List? signKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void senderCustomPasswordsCommand( + {required String? keyID, + required String? userID, + required int? pwdNo, + required String? pwd, + required int? useCountLimit, + required List? token, + required int? startTime, + required int? endTime, + required int? needAuthor, + required List? signKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SenderCustomPasswordsCommand( - keyID: keyID, - userID: userID, - pwdNo: pwdNo, - pwd:pwd, - useCountLimit: useCountLimit, - token: token, - startTime: startTime, - endTime: endTime, - needAuthor: needAuthor, - signKey: signKey, - privateKey: privateKey, - ), callBack:callBack); - } - - //todo:修改管理员密码 - static void changeAdministratorPasswordCommand({ - required String? keyID, - required String? userID, - required int? pwdNo, - required String? pwd, - required int? useCountLimit, - required List? token, - required int? startTime, - required int? endTime, - required int? needAuthor, - required List? signKey, - required List? privateKey, - CommandSendCallBack? callBack}) { - CommandSenderManager().managerSendData( - command: ChangeAdministratorPasswordCommand( keyID: keyID, userID: userID, pwdNo: pwdNo, - pwd:pwd, + pwd: pwd, useCountLimit: useCountLimit, token: token, startTime: startTime, @@ -315,22 +292,54 @@ class IoSenderManage { needAuthor: needAuthor, signKey: signKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); + } + + //todo:修改管理员密码 + static void changeAdministratorPasswordCommand( + {required String? keyID, + required String? userID, + required int? pwdNo, + required String? pwd, + required int? useCountLimit, + required List? token, + required int? startTime, + required int? endTime, + required int? needAuthor, + required List? signKey, + required List? privateKey, + CommandSendCallBack? callBack}) { + CommandSenderManager().managerSendData( + command: ChangeAdministratorPasswordCommand( + keyID: keyID, + userID: userID, + pwdNo: pwdNo, + pwd: pwd, + useCountLimit: useCountLimit, + token: token, + startTime: startTime, + endTime: endTime, + needAuthor: needAuthor, + signKey: signKey, + privateKey: privateKey, + ), + callBack: callBack); } //todo:添加指纹开始 - static void senderAddFingerprintCommand({ - required String? keyID, - required String? userID, - required int? fingerNo, - required int? useCountLimit, - required List? token, - required int? startTime, - required int? endTime, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void senderAddFingerprintCommand( + {required String? keyID, + required String? userID, + required int? fingerNo, + required int? useCountLimit, + required List? token, + required int? startTime, + required int? endTime, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SenderAddFingerprintCommand( keyID: keyID, @@ -343,22 +352,23 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:添加卡开始 - static void senderAddICCardCommand({ - required String? keyID, - required String? userID, - required int? cardNo, - required int? useCountLimit, - required List? token, - required int? startTime, - required int? endTime, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void senderAddICCardCommand( + {required String? keyID, + required String? userID, + required int? cardNo, + required int? useCountLimit, + required List? token, + required int? startTime, + required int? endTime, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SenderAddICCardCommand( keyID: keyID, @@ -371,19 +381,49 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); + } + + //todo:添加人脸开始 + static void senderAddFaceCommand( + {required String? keyID, + required String? userID, + required int? faceNo, + required int? useCountLimit, + required List? token, + required int? startTime, + required int? endTime, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { + CommandSenderManager().managerSendData( + command: SenderAddFaceCommand( + keyID: keyID, + userID: userID, + faceNo: faceNo, + useCountLimit: useCountLimit, + token: token, + startTime: startTime, + endTime: endTime, + needAuthor: needAuthor, + publicKey: publicKey, + privateKey: privateKey, + ), + callBack: callBack); } //todo:校验时间 - static void senderTimingCommand({ - required String? lockID, - required String? userID, - required int? nowTime, - required List? token, - required int? needAuthor, - required List? signKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void senderTimingCommand( + {required String? lockID, + required String? userID, + required int? nowTime, + required List? token, + required int? needAuthor, + required List? signKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: TimingCommand( lockID: lockID, @@ -393,7 +433,8 @@ class IoSenderManage { needAuthor: needAuthor, signKey: signKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:自动落锁 - 废弃 @@ -419,16 +460,16 @@ class IoSenderManage { // } //todo:事件记录(页数查询) - static void senderReferEventRecordNumberCommand({ - required String? keyID, - required String? userID, - required int? logsCount, - required int? logsNo, - required List? token, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void senderReferEventRecordNumberCommand( + {required String? keyID, + required String? userID, + required int? logsCount, + required int? logsNo, + required List? token, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SenderReferEventRecordNumberCommand( keyID: keyID, @@ -439,20 +480,21 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:事件记录(时间查询) - static void senderReferEventRecordTimeCommand({ - required String? keyID, - required String? userID, - required int? logsCount, - required int? time, - required List? token, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void senderReferEventRecordTimeCommand( + {required String? keyID, + required String? userID, + required int? logsCount, + required int? time, + required List? token, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SenderReferEventRecordTimeCommand( keyID: keyID, @@ -463,21 +505,22 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:查询指纹状态 - static void senderQueryingFingerprintStatusCommand({ - required String? keyID, - required String? userID, - required int? role, - required int? fingerCount, - required int? fingerNo, - required List? token, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void senderQueryingFingerprintStatusCommand( + {required String? keyID, + required String? userID, + required int? role, + required int? fingerCount, + required int? fingerNo, + required List? token, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SenderQueryingFingerprintStatusCommand( keyID: keyID, @@ -489,21 +532,22 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:查询卡片状态 - static void senderCheckingCardStatusCommand({ - required String? keyID, - required String? userID, - required int? role, - required int? cardCount, - required int? cardNo, - required List? token, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void senderCheckingCardStatusCommand( + {required String? keyID, + required String? userID, + required int? role, + required int? cardCount, + required int? cardNo, + required List? token, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SenderCheckingCardStatusCommand( keyID: keyID, @@ -515,20 +559,48 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); + } + + //todo:查询人脸状态 + static void senderQueryingFaceStatusCommand( + {required String? keyID, + required String? userID, + required int? role, + required int? fingerCount, + required int? fingerNo, + required List? token, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { + CommandSenderManager().managerSendData( + command: SenderQueryingFaceStatusCommand( + keyID: keyID, + userID: userID, + role: role, + fingerCount: fingerCount, + fingerNo: fingerNo, + token: token, + needAuthor: needAuthor, + publicKey: publicKey, + privateKey: privateKey, + ), + callBack: callBack); } //todo:查询用户、指纹、密码、卡片数量(用于判断是否同步) - static void senderCheckingUserInfoCountCommand({ - required String? keyID, - required String? userID, - required int? role, - required int? nowTime, - required List? token, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void senderCheckingUserInfoCountCommand( + {required String? keyID, + required String? userID, + required int? role, + required int? nowTime, + required List? token, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SenderCheckingUserInfoCountCommand( keyID: keyID, @@ -539,24 +611,25 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:配置wifi - static void senderConfiguringWifiCommand({ - required String? keyID, - required String? userID, - required String? ssid, - required String? password, - required int? numberOfServers, - required List? listOfServers, - required int? numberOfPhone, - required List? listOfPhone, - required List? token, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void senderConfiguringWifiCommand( + {required String? keyID, + required String? userID, + required String? ssid, + required String? password, + required int? numberOfServers, + required List? listOfServers, + required int? numberOfPhone, + required List? listOfPhone, + required List? token, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SenderConfiguringWifiCommand( keyID: keyID, @@ -571,86 +644,87 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:添加胁迫指纹 - static void senderAddStressFingerprintCommand({ - required String? keyID, - required String? userID, - required int? fingerNo, - required int? fingerType, - required int? useCountLimit, - required List? token, - required int? startTime, - required int? endTime, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - required List? signKey, - CommandSendCallBack? callBack}) { + static void senderAddStressFingerprintCommand( + {required String? keyID, + required String? userID, + required int? fingerNo, + required int? fingerType, + required int? useCountLimit, + required List? token, + required int? startTime, + required int? endTime, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + required List? signKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SenderAddStressFingerprintCommand( - keyID: keyID, - userID: userID, - fingerNo: fingerNo, - fingerType: fingerType, - useCountLimit: useCountLimit, - token: token, - startTime: startTime, - endTime: endTime, - needAuthor: needAuthor, - publicKey: publicKey, - privateKey: privateKey, - signKey: signKey - ), callBack:callBack); + keyID: keyID, + userID: userID, + fingerNo: fingerNo, + fingerType: fingerType, + useCountLimit: useCountLimit, + token: token, + startTime: startTime, + endTime: endTime, + needAuthor: needAuthor, + publicKey: publicKey, + privateKey: privateKey, + signKey: signKey), + callBack: callBack); } //todo:添加胁迫卡片 - static void senderAddStressICCardCommand({ - required String? keyID, - required String? userID, - required int? icCardNo, - required int? cardType, - required int? useCountLimit, - required List? token, - required int? startTime, - required int? endTime, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - required List? signKey, - CommandSendCallBack? callBack}) { + static void senderAddStressICCardCommand( + {required String? keyID, + required String? userID, + required int? icCardNo, + required int? cardType, + required int? useCountLimit, + required List? token, + required int? startTime, + required int? endTime, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + required List? signKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SenderAddStressICCardCommand( - keyID: keyID, - userID: userID, - icCardNo: icCardNo, - cardType: cardType, - useCountLimit: useCountLimit, - token: token, - startTime: startTime, - endTime: endTime, - needAuthor: needAuthor, - publicKey: publicKey, - privateKey: privateKey, - signKey: signKey - ), callBack:callBack); + keyID: keyID, + userID: userID, + icCardNo: icCardNo, + cardType: cardType, + useCountLimit: useCountLimit, + token: token, + startTime: startTime, + endTime: endTime, + needAuthor: needAuthor, + publicKey: publicKey, + privateKey: privateKey, + signKey: signKey), + callBack: callBack); } //todo:添加胁迫密码 - static void senderAddStressPasswordCommand({ - required String? keyID, - required String? userID, - required int? passwordNo, - required int? useCountLimit, - required List? token, - required int? startTime, - required int? endTime, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void senderAddStressPasswordCommand( + {required String? keyID, + required String? userID, + required int? passwordNo, + required int? useCountLimit, + required List? token, + required int? startTime, + required int? endTime, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SenderAddStressPasswordCommand( keyID: keyID, @@ -663,19 +737,20 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:读取支持功能(不带参数)启用/禁用 - static void readSupportFunctionsNoParametersCommand({ - required String? keyID, - required String? userID, - required int? featureBit, - required List? token, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void readSupportFunctionsNoParametersCommand( + {required String? keyID, + required String? userID, + required int? featureBit, + required List? token, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: ReadSupportFunctionsNoParametersCommand( keyID: keyID, @@ -685,43 +760,45 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:设置支持功能(不带参数)启用/禁用 - static void setSupportFunctionsNoParametersCommand({ - required String? keyID, - required String? userID, - required int? featureBit, - required int? featureEnable, - required List? token, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void setSupportFunctionsNoParametersCommand( + {required String? keyID, + required String? userID, + required int? featureBit, + required int? featureEnable, + required List? token, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SetSupportFunctionsNoParametersCommand( keyID: keyID, userID: userID, featureBit: featureBit, - featureEnable:featureEnable, + featureEnable: featureEnable, token: token, needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:读取支持功能(带参数)启用/禁用 - static void readSupportFunctionsWithParametersCommand({ - required String? keyID, - required String? userID, - required int? featureBit, - required List? token, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void readSupportFunctionsWithParametersCommand( + {required String? keyID, + required String? userID, + required int? featureBit, + required List? token, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: ReadSupportFunctionsWithParametersCommand( keyID: keyID, @@ -731,47 +808,49 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:设置支持功能(带参数)启用/禁用 - static void setSupportFunctionsWithParametersCommand({ - required String? keyID, - required String? userID, - required int? featureBit, - required int? featureParaLength, - required List? featureData, - required List? token, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void setSupportFunctionsWithParametersCommand( + {required String? keyID, + required String? userID, + required int? featureBit, + required int? featureParaLength, + required List? featureData, + required List? token, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SetSupportFunctionsWithParametersCommand( keyID: keyID, userID: userID, featureBit: featureBit, - featureParaLength:featureParaLength, - featureData:featureData, + featureParaLength: featureParaLength, + featureData: featureData, token: token, needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } //todo:读取管理员密码 - static void senderReadAdminPasswordCommand({ - required String? keyID, - required String? userID, - required int? role, - required int? pwdNum, - required int? pwdNo, - required List? token, - required int? needAuthor, - required List? publicKey, - required List? privateKey, - CommandSendCallBack? callBack}) { + static void senderReadAdminPasswordCommand( + {required String? keyID, + required String? userID, + required int? role, + required int? pwdNum, + required int? pwdNo, + required List? token, + required int? needAuthor, + required List? publicKey, + required List? privateKey, + CommandSendCallBack? callBack}) { CommandSenderManager().managerSendData( command: SenderReadAdminPasswordCommand( keyID: keyID, @@ -783,7 +862,7 @@ class IoSenderManage { needAuthor: needAuthor, publicKey: publicKey, privateKey: privateKey, - ), callBack:callBack); + ), + callBack: callBack); } - -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/face/addFace/addFace_entity.dart b/star_lock/lib/main/lockDetail/face/addFace/addFace_entity.dart new file mode 100644 index 00000000..e69de29b diff --git a/star_lock/lib/main/lockDetail/face/addFace/addFace_logic.dart b/star_lock/lib/main/lockDetail/face/addFace/addFace_logic.dart new file mode 100644 index 00000000..a991f631 --- /dev/null +++ b/star_lock/lib/main/lockDetail/face/addFace/addFace_logic.dart @@ -0,0 +1,294 @@ +import 'dart:async'; + +import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/blue/io_protocol/io_addFace.dart'; +import 'package:star_lock/blue/io_type.dart'; +import 'package:star_lock/main/lockDetail/face/addFace/addFace_state.dart'; +import 'package:star_lock/tools/eventBusEventManage.dart'; + +import '../../../../../blue/blue_manage.dart'; +import '../../../../../blue/io_reply.dart'; +import '../../../../../blue/io_tool/io_tool.dart'; +import '../../../../../blue/io_tool/manager_event_bus.dart'; +import '../../../../../blue/sender_manage.dart'; +import '../../../../../network/api_repository.dart'; +import '../../../../../tools/baseGetXController.dart'; +import '../../../../../tools/storage.dart'; + +class AddFaceLogic extends BaseGetXController { + final AddFaceState state = AddFaceState(); + + // 监听设备返回的数据 + late StreamSubscription _replySubscription; + void _initReplySubscription() { + _replySubscription = + EventBusManager().eventBus!.on().listen((reply) async { + // 添加指纹开始 + if (reply is SenderAddFaceReply) { + _replyAddFaceBegin(reply); + } + + // 添加指纹过程 + if (reply is SenderAddFaceProcessReply) { + _replyAddFaceProcess(reply); + } + + // 添加指纹确认 + if (reply is SenderAddFaceConfirmationReply) { + _replyAddFaceConfirmation(reply); + } + }); + } + + Future _replyAddFaceBegin(Reply reply) async { + int status = reply.data[2]; + print("status:$status"); + + switch (status) { + case 0x00: + //成功 + print("${reply.commandType!.typeValue} 人脸开始数据解析成功"); + state.ifConnectScuess.value = true; + + // 最大图片数 + state.maxRegCount.value = reply.data[10]; + print("人脸开始state.maxRegCount.value:${state.maxRegCount.value}"); + // state.fingerprintNumber.value = reply.data.last.toString(); + break; + case 0x06: + //无权限 + print("${reply.commandType!.typeValue} 需要鉴权"); + var privateKey = await Storage.getStringList(saveBluePrivateKey); + List getPrivateKeyList = changeStringListToIntList(privateKey!); + + var publicKey = await Storage.getStringList(saveBluePublicKey); + List publicKeyDataList = changeStringListToIntList(publicKey!); + + var token = reply.data.sublist(5, 9); + var saveStrList = changeIntListToStringList(token); + print("_replyAddFaceReplyToken:$token"); + Storage.setStringList(saveBlueToken, saveStrList); + + IoSenderManage.senderAddFaceCommand( + keyID: "1", + userID: await Storage.getUid(), + faceNo: 1, + useCountLimit: 0xff, + // startTime:0x11223344, + // endTime:0x11223344, + startTime: state.startDate.value ~/ 1000, + endTime: state.endDate.value ~/ 1000, + needAuthor: 1, + publicKey: publicKeyDataList, + privateKey: getPrivateKeyList, + token: token, + ); + break; + case 0x07: + //无权限 + print("${reply.commandType!.typeValue} 用户无权限"); + + break; + case 0x09: + // 权限校验错误 + print("${reply.commandType!.typeValue} 权限校验错误"); + + break; + default: + //失败 + print("${reply.commandType!.typeValue} 失败"); + + break; + } + } + + Future _replyAddFaceProcess(Reply reply) async { + int status = reply.data[2]; + print("33 status:$status"); + + switch (status) { + case 0x00: + //成功 + print("${reply.commandType!.typeValue} 注册人脸过程数据解析成功"); + if (reply.data[5] == 255) { + // 注册指纹失败 + print("${reply.commandType!.typeValue} 注册人脸过程失败"); + showToast("添加失败"); + Get.close(2); + } else { + // state.addFaceProcessNumber.value++; + + // 当前注册数 + state.regIndex.value = reply.data[6]; + print("state.regIndex.value:${state.regIndex.value}"); + } + break; + case 0x06: + //需要权限 + + break; + case 0x07: + //无权限 + print("${reply.commandType!.typeValue} 用户无权限"); + + break; + case 0x09: + // 权限校验错误 + print("${reply.commandType!.typeValue} 权限校验错误"); + + break; + default: + //失败 + print("${reply.commandType!.typeValue} 注册人脸过程default失败"); + + break; + } + } + + Future _replyAddFaceConfirmation(Reply reply) async { + int status = reply.data[2]; + print("status:$status"); + + switch (status) { + case 0x00: + //成功 + print("${reply.commandType!.typeValue} 人脸确认数据解析成功"); + // print("添加人脸确认成功,调用添加指纹接口"); + if (state.faceNumber.value == (reply.data[6]).toString()) { + return; + } else { + state.faceNumber.value = (reply.data[6]).toString(); + } + addFaceData(); + break; + case 0x06: + //需要权限 + + break; + case 0x07: + //无权限 + print("${reply.commandType!.typeValue} 用户无权限"); + + break; + case 0x09: + // 权限校验错误 + print("${reply.commandType!.typeValue} 权限校验错误"); + + break; + default: + //失败 + print("${reply.commandType!.typeValue} 人脸确认default失败"); + + break; + } + } + + // 添加人脸开始 + Future senderAddFace() async { + showBlueConnetctToastTimer(action: () { + Get.close(1); + }); + BlueManage().bludSendData(BlueManage().connectDeviceName, + (DeviceConnectionState deviceConnectionState) async { + if (deviceConnectionState == DeviceConnectionState.connected) { + cancelBlueConnetctToastTimer(); + var publicKey = await Storage.getStringList(saveBluePublicKey); + List publicKeyDataList = changeStringListToIntList(publicKey!); + + var privateKey = await Storage.getStringList(saveBluePrivateKey); + List getPrivateKeyList = changeStringListToIntList(privateKey!); + + var token = await Storage.getStringList(saveBlueToken); + List getTokenList = changeStringListToIntList(token!); + print( + "openDoorTokenPubToken:$getTokenList state.startDate.value:${state.startDate.value}"); + + IoSenderManage.senderAddFaceCommand( + keyID: "1", + userID: await Storage.getUid(), + faceNo: 1, + useCountLimit: 0xff, + // startTime:0x11223344, + // endTime:0x11223344, + startTime: state.startDate.value ~/ 1000, + endTime: state.endDate.value ~/ 1000, + needAuthor: 1, + publicKey: publicKeyDataList, + privateKey: getPrivateKeyList, + token: getTokenList, + ); + } else if (deviceConnectionState == DeviceConnectionState.disconnected) { + if (state.ifCurrentScreen.value == true) { + showBlueConnetctToast(); + } + cancelBlueConnetctToastTimer(); + Get.close(1); + } + }); + } + + // 添加人脸 + void addFaceData() async { + var entity = await ApiRepository.to.addFaceData( + lockId: state.lockId.value, + faceName: state.faceName.value, + faceNumber: state.faceNumber.value, + faceType: state.faceType.value, + startDate: state.startDate.value, + endDate: state.endDate.value, + featureData: state.featureData.value, + addType: state.addType.value, + cyclicConfig: state.cyclicConfig.value, + ); + + if (entity.errorCode!.codeIsSuccessful) { + // Toast.show(msg: "添加成功"); + updateFaceUserNoLoadData(entity.data!.fingerprintId.toString()); + } + } + + // 更新人脸用户账号 + void updateFaceUserNoLoadData(String faceId) async { + var entity = await ApiRepository.to.updateFaceUserNoLoadData( + faceId: faceId, + lockId: state.lockId.value.toString(), + faceUserNo: state.faceNumber.value, + ); + if (entity.errorCode!.codeIsSuccessful) { + showToast("添加成功"); + if (state.fromType.value == 2) { + // 回调人脸号 + eventBus + .fire(ChickInAddStaffCardAndFingerprintBlockNumberEvent(faceId)); + } else if (state.fromType.value == 1) { + eventBus.fire(OtherTypeRefreshListEvent()); + } + Get.close(2); + } + } + + @override + void onReady() { + // TODO: implement onReady + super.onReady(); + + _initReplySubscription(); + } + + @override + void onInit() { + // TODO: implement onInit + super.onInit(); +//开始添加后发送指令 + // senderAddFace(); + } + + @override + void onClose() { + // TODO: implement onClose + super.onClose(); + + _replySubscription.cancel(); + } +} diff --git a/star_lock/lib/main/lockDetail/face/addFace/addFace_page.dart b/star_lock/lib/main/lockDetail/face/addFace/addFace_page.dart index a6a390e9..c0e363d5 100644 --- a/star_lock/lib/main/lockDetail/face/addFace/addFace_page.dart +++ b/star_lock/lib/main/lockDetail/face/addFace/addFace_page.dart @@ -1,39 +1,40 @@ 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/face/addFace/addFace_logic.dart'; -import '../../../../../appRouters.dart'; import '../../../../../app_settings/app_colors.dart'; import '../../../../../tools/submitBtn.dart'; import '../../../../../tools/titleAppBar.dart'; import '../../../../../translations/trans_lib.dart'; -class AddFaceTipPage extends StatefulWidget { - const AddFaceTipPage({Key? key}) : super(key: key); +class AddFacePage extends StatefulWidget { + const AddFacePage({Key? key}) : super(key: key); @override - State createState() => _AddFaceTipPageState(); + State createState() => _AddFacePageState(); } -class _AddFaceTipPageState extends State { +class _AddFacePageState extends State { + final logic = Get.put(AddFaceLogic()); + final state = Get.find().state; + @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, appBar: TitleAppBar( - barTitle: "${TranslationLoader.lanKeys!.addTip!.tr}${TranslationLoader.lanKeys!.face!.tr}", + barTitle: + "${TranslationLoader.lanKeys!.addTip!.tr}${TranslationLoader.lanKeys!.face!.tr}", haveBack: true, backgroundColor: AppColors.mainColor), body: ListView( - // mainAxisAlignment: MainAxisAlignment.center, - // crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox( height: 50.h, ), Image.asset( - 'images/main/icon_main_addFace.png', + 'images/main/icon_addFace_step1.png', width: 100.w, height: 457.h, fit: BoxFit.fitHeight, @@ -48,9 +49,8 @@ class _AddFaceTipPageState extends State { children: [ Expanded( child: Text( - "请单人正对门锁,距离一个成年人手臂长度(约0.6米).\n保持脸部无遮挡,露出五官", - // TranslationLoader.lanKeys!.lightTouchScreenTip!.tr, - textAlign: TextAlign.center, + "请单人正对门锁,距离一个成年人手臂长度\n(约0.6米)。\n保持脸部无遮挡,露出五官。", + textAlign: TextAlign.left, maxLines: null, style: TextStyle(fontSize: 24.sp, fontWeight: FontWeight.w600), @@ -62,15 +62,32 @@ class _AddFaceTipPageState extends State { SizedBox( height: 120.h, ), - Container( - padding: EdgeInsets.only(left: 20.w, right: 20.w), - child: SubmitBtn( - btnName: "开始添加", //TranslationLoader.lanKeys!.next!.tr, - borderRadius: 20.w, - onClick: () { - EasyLoading.showToast("请确保在设备附近,设备未被连接,设备已打开", duration: 2000.milliseconds); - }), - ), + Obx( + () => state.isClickAddFace.value == false + ? Container( + padding: EdgeInsets.only(left: 20.w, right: 20.w), + child: SubmitBtn( + btnName: + "准备好了,开始添加", //TranslationLoader.lanKeys!.next!.tr, + borderRadius: 20.w, + onClick: () { + state.isClickAddFace.value = true; + logic.senderAddFace(); + }), + ) + : Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + '正在录入中...', + style: TextStyle( + color: AppColors.darkGrayTextColor, + fontSize: 22.sp), + textAlign: TextAlign.center, + ) + ], + ), + ) ], ), ); diff --git a/star_lock/lib/main/lockDetail/face/addFace/addFace_state.dart b/star_lock/lib/main/lockDetail/face/addFace/addFace_state.dart new file mode 100644 index 00000000..37d0b763 --- /dev/null +++ b/star_lock/lib/main/lockDetail/face/addFace/addFace_state.dart @@ -0,0 +1,35 @@ +import 'package:get/get.dart'; + +class AddFaceState { + var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 + + var ifConnectScuess = false.obs; + var maxRegCount = 0.obs; // 最大注册次数 + var regIndex = 0.obs; // 当前注册次数 + + var faceNumber = "".obs; + + final lockId = 0.obs; + final endDate = 0.obs; + final addType = "".obs; + final faceName = "".obs; + final faceType = 0.obs; + final startDate = 0.obs; + final cyclicConfig = [].obs; + final fromType = 1.obs; + final featureData = ''.obs; + final isClickAddFace = false.obs; + + AddFaceState() { + Map map = Get.arguments; + lockId.value = map["lockId"]; + endDate.value = map["endDate"]; + addType.value = map["addType"]; + faceName.value = map["faceName"]; + faceType.value = map["faceType"]; + startDate.value = map["startDate"]; + lockId.value = map["lockId"]; + cyclicConfig.value = map["cyclicConfig"]; + fromType.value = map["fromType"]; + } +} diff --git a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_logic.dart b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_logic.dart index cb0d1ffd..3f4536e3 100644 --- a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_logic.dart +++ b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_logic.dart @@ -1,8 +1,96 @@ - +import 'package:get/get.dart'; +import 'package:star_lock/main/lockDetail/face/addFaceType/addFaceType_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; -import 'addFaceType_state.dart'; +import '../../../../appRouters.dart'; +import '../../../../network/api_repository.dart'; -class AddFaceTypeLogic extends BaseGetXController{ +class AddFaceTypeLogic extends BaseGetXController { AddFaceTypeState state = AddFaceTypeState(); -} \ No newline at end of file + // 添加指纹 + void addFaceData() async { + var faceType = 0; // 永久:1;限时2,单次3,循环:4 + var startDate = ""; + var endDate = ""; + if (state.seletType.value == "0") { + faceType = 1; + startDate = "0"; + endDate = "0"; + } else if (state.seletType.value == "1") { + faceType = 2; + if (state.beginTimeTimestamp.value.isEmpty) { + showToast("请选择开始时间"); + return; + } + if (state.endTimeTimestamp.value.isEmpty) { + showToast("请选择结束时间"); + return; + } + + // if(DateTime.now().millisecondsSinceEpoch > int.parse(state.beginTimeTimestamp.value)){ + // Toast.show(msg: "生效时间要大于当前时间"); + // return; + // } + + if (int.parse(state.beginTimeTimestamp.value) >= + int.parse(state.endTimeTimestamp.value)) { + showToast("失效时间要大于生效时间"); + return; + } + + startDate = state.beginTimeTimestamp.value; + endDate = state.endTimeTimestamp.value; + } else if (state.seletType.value == "2") { + if (state.effectiveDateTime.value <= 0) { + showToast("请选择生效时间"); + return; + } + if (state.failureDateTime.value <= 0) { + showToast("请选择失效时间"); + return; + } + + if (state.weekdaysList.value.isEmpty) { + showToast("请选择有效日"); + return; + } + + // if(DateTime.now().millisecondsSinceEpoch >= state.effectiveDateTime.value){ + // Toast.show(msg: "生效时间要大于当前时间"); + // return; + // } + + if (state.effectiveDateTime.value >= state.failureDateTime.value) { + showToast("失效时间要大于生效时间"); + return; + } + startDate = state.effectiveDateTime.value.toString(); + endDate = state.failureDateTime.value.toString(); + faceType = 4; + } + + // 人脸 + Get.toNamed(Routers.addFacePage, arguments: { + "lockId": state.lockId.value, + "endDate": int.parse(endDate), + "addType": "1", + "faceName": state.nameController.text, + "faceNumber": "123456", + "faceType": faceType, + "startDate": int.parse(startDate), + "cyclicConfig": state.weekdaysList.value, + "fromType": state.fromType.value, + }); + } + + // 校验指纹名字是否重复 + void checkFaceNameDuplicated(String faceName) async { + var entity = await ApiRepository.to.checkFaceNameDuplicatedData( + lockId: state.lockId.value.toString(), + faceName: faceName, + ); + if (entity.errorCode!.codeIsSuccessful) { + addFaceData(); + } + } +} diff --git a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_page.dart b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_page.dart index 6a16b593..e6b1e4fd 100644 --- a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_page.dart +++ b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_page.dart @@ -181,8 +181,7 @@ class _AddFaceTypePageState extends State { logic.showToast("请输入姓名"); return; } - - Get.toNamed(Routers.addFaceTipPage); + logic.checkFaceNameDuplicated(state.nameController.text); } else { // Get.toNamed(Routers.seletLockTypePage); logic.showToast("演示模式"); @@ -293,19 +292,4 @@ class _AddFaceTypePageState extends State { ), ); } - - //isStressFingerprint false:不是胁迫指纹 ture:胁迫指纹 - CupertinoSwitch _isStressFingerprint() { - return CupertinoSwitch( - activeColor: CupertinoColors.activeBlue, - trackColor: CupertinoColors.systemGrey5, - thumbColor: CupertinoColors.white, - value: true, - onChanged: (value) { - setState(() { - // state.isStressFingerprint.value = value; - }); - }, - ); - } } diff --git a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_state.dart b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_state.dart index ea1ddc6c..b2b59331 100644 --- a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_state.dart +++ b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_state.dart @@ -1,16 +1,25 @@ - import 'package:flutter/material.dart'; import 'package:get/get.dart'; -class AddFaceTypeState{ - var beginTime = "".obs;// 开始时间 - var endTime = "".obs;// 结束时间 - var beginTimeTimestamp = "".obs;// 开始时间时间戳 - var endTimeTimestamp = "".obs;// 结束时间时间戳 +class AddFaceTypeState { + final lockId = 0.obs; + final seletType = "0".obs; // 0永久 1显示 2循环 + final fromType = 1.obs; // // 1从添加钥匙列表进入 2从考勤添加员工入口进入 + final isStressFingerprint = false.obs; - var effectiveDateTime = 0.obs;// 生效时间 - var failureDateTime = 0.obs;// 失效时间 + var beginTime = "".obs; // 开始时间 + var endTime = "".obs; // 结束时间 + var beginTimeTimestamp = "".obs; // 开始时间时间戳 + var endTimeTimestamp = "".obs; // 结束时间时间戳 + + var effectiveDateTime = 0.obs; // 生效时间 + var failureDateTime = 0.obs; // 失效时间 var weekdaysList = [].obs; final TextEditingController nameController = TextEditingController(); -} \ No newline at end of file + AddFaceTypeState() { + Map map = Get.arguments; + lockId.value = map["lockId"]; + fromType.value = map["fromType"]; + } +} diff --git a/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_logic.dart b/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_logic.dart new file mode 100644 index 00000000..709887f5 --- /dev/null +++ b/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_logic.dart @@ -0,0 +1,193 @@ +import 'dart:async'; + +import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/blue/io_type.dart'; +import 'package:star_lock/main/lockDetail/face/faceDetail/faceDetail_state.dart'; +import 'package:star_lock/tools/baseGetXController.dart'; +import '../../../../blue/blue_manage.dart'; +import '../../../../blue/io_protocol/io_addFingerprint.dart'; +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 '../../../../network/api_repository.dart'; +import '../../../../tools/storage.dart'; + +class FaceDetailLogic extends BaseGetXController { + FaceDetailState state = FaceDetailState(); + + // 获取解析后的数据 + late StreamSubscription _replySubscription; + void _initReplySubscription() { + _replySubscription = + EventBusManager().eventBus!.on().listen((reply) { + // 添加指纹开始(此处用作删除指纹) + if ((reply is SenderAddFingerprintReply)) { + _replyAddFingerprintBegin(reply); + } + }); + } + + // 添加指纹开始 + Future _replyAddFingerprintBegin(Reply reply) async { + int status = reply.data[2]; + print("status:$status"); + + switch (status) { + case 0x00: + //成功 + print("${reply.commandType!.typeValue} 数据解析成功"); + state.sureBtnState.value = 0; + cancelBlueConnetctToastTimer(); + dismissEasyLoading(); + deletFingerprintsData(); + break; + case 0x06: + //无权限 + print("${reply.commandType!.typeValue} 需要鉴权"); + var privateKey = await Storage.getStringList(saveBluePrivateKey); + List getPrivateKeyList = changeStringListToIntList(privateKey!); + + var publicKey = await Storage.getStringList(saveBluePublicKey); + List publicKeyDataList = changeStringListToIntList(publicKey!); + + var token = await Storage.getStringList(saveBlueToken); + List getTokenList = changeStringListToIntList(token!); + + String? userID = await Storage.getUid(); + IoSenderManage.senderAddFingerprintCommand( + keyID: state.keyId.value.toString(), + userID: userID, + fingerNo: int.parse(state.typeNumber.value), + useCountLimit: 0, + startTime: state.effectiveDateTime.value, + endTime: state.failureDateTime.value, + needAuthor: 1, + publicKey: publicKeyDataList, + privateKey: getPrivateKeyList, + token: getTokenList, + ); + break; + case 0x07: + //无权限 + print("${reply.commandType!.typeValue} 用户无权限"); + + break; + case 0x09: + // 权限校验错误 + print("${reply.commandType!.typeValue} 权限校验错误"); + + break; + default: + //失败 + print("${reply.commandType!.typeValue} 失败"); + + break; + } + } + + // 删除指纹 + Future senderAddFingerprint() async { + if (state.sureBtnState.value == 1) { + return; + } + state.sureBtnState.value = 1; + + showEasyLoading(); + showBlueConnetctToastTimer(action: () { + dismissEasyLoading(); + state.sureBtnState.value = 0; + }); + BlueManage().bludSendData(BlueManage().connectDeviceName, + (DeviceConnectionState deviceConnectionState) async { + if (deviceConnectionState == DeviceConnectionState.connected) { + var publicKey = await Storage.getStringList(saveBluePublicKey); + List publicKeyDataList = changeStringListToIntList(publicKey!); + + var privateKey = await Storage.getStringList(saveBluePrivateKey); + List getPrivateKeyList = changeStringListToIntList(privateKey!); + + var token = await Storage.getStringList(saveBlueToken); + List getTokenList = changeStringListToIntList(token!); + + String? userID = await Storage.getUid(); + + IoSenderManage.senderAddFingerprintCommand( + keyID: state.keyId.value.toString(), + userID: userID, + fingerNo: int.parse(state.typeNumber.value), + useCountLimit: 0, + startTime: state.effectiveDateTime.value, + endTime: state.failureDateTime.value, + needAuthor: 1, + publicKey: publicKeyDataList, + privateKey: getPrivateKeyList, + token: getTokenList, + ); + } else if (deviceConnectionState == DeviceConnectionState.disconnected) { + dismissEasyLoading(); + cancelBlueConnetctToastTimer(); + state.sureBtnState.value = 0; + if (state.ifCurrentScreen.value == true) { + showBlueConnetctToast(); + } + } + }); + } + + // 删除指纹 + void deletFingerprintsData() async { + var entity = await ApiRepository.to.deletFingerprintsData( + fingerprintId: state.faceItemData.value.faceId.toString(), + lockId: state.faceItemData.value.lockId.toString(), + type: "0", + deleteType: "1"); + if (entity.errorCode!.codeIsSuccessful) { + showToast("删除成功", something: () { + Get.back(result: "addScuess"); + }); + } + } + + // 编辑指纹 + void editFingerprintsData() async { + var entity = await ApiRepository.to.editFingerprintsData( + fingerprintId: state.keyId.value.toString(), + lockId: state.faceItemData.value.lockId.toString(), + weekDay: state.weekDay.value, + startDate: state.effectiveDateTime.value.toString(), + endDate: state.failureDateTime.value.toString(), + isCoerced: state.isStressFingerprint.value ? "2" : "1", + fingerprintName: state.changeNameController.text, + changeType: "1", + ); + if (entity.errorCode!.codeIsSuccessful) { + showToast("修改成功", something: () { + Get.back(result: "addScuess"); + }); + } + } + + @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/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_page.dart b/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_page.dart index e69de29b..26023d6a 100644 --- a/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_page.dart +++ b/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_page.dart @@ -0,0 +1,374 @@ +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/face/faceDetail/faceDetail_logic.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/showIosTipView.dart'; +import '../../../../tools/showTFView.dart'; +import '../../../../tools/submitBtn.dart'; +import '../../../../tools/titleAppBar.dart'; +import '../../../../translations/trans_lib.dart'; + +class FaceDetailPage extends StatefulWidget { + const FaceDetailPage({Key? key}) : super(key: key); + + @override + State createState() => _FingerprintDetailPageState(); +} + +class _FingerprintDetailPageState extends State + with RouteAware { + final logic = Get.put(FaceDetailLogic()); + final state = Get.find().state; + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.mainBackgroundColor, + appBar: TitleAppBar( + barTitle: "指纹详情", + haveBack: true, + backgroundColor: AppColors.mainColor, + // actionsList: [ + // TextButton( + // child: Text(TranslationLoader.lanKeys!.share!.tr, style: TextStyle(color: Colors.white, fontSize: 24.sp),), + // onPressed: () { + // + // }, + // ), + // ], + ), + body: Column( + children: [ + Obx(() => CommonItem( + leftTitel: + "${TranslationLoader.lanKeys!.fingerprint!.tr}${TranslationLoader.lanKeys!.number!.tr}", + rightTitle: state.typeNumber.value, + isHaveDirection: false, + isHaveLine: true)), + Obx(() => CommonItem( + leftTitel: TranslationLoader.lanKeys!.name!.tr, + rightTitle: state.typeName.value, + isHaveDirection: true, + isHaveLine: true, + action: () { + showCupertinoAlertDialog(context); + })), + Obx(() => Visibility( + visible: (state.keyType.value == 4 || state.keyType.value == 2) + ? true + : false, + child: CommonItem( + leftTitel: TranslationLoader.lanKeys!.periodValidity!.tr, + allHeight: 70.h, + // rightTitle:"2023.09.19 11:27\n2023.09.25 11:27", + rightTitle: state.keyType.value == 1 + ? "永久" + : "${DateTool().dateToYMDHNString(state.effectiveDateTime.value.toString())}\n${DateTool().dateToYMDHNString(state.failureDateTime.value.toString())}", + isHaveDirection: true, + isHaveLine: true, + action: () async { + // switch(state.type.value){ + // case 0: + // // 卡 + // + // break; + // case 1: + // 当是指纹的时候 + if (state.keyType.value == 2) { + // 限时 + var data = await Get.toNamed( + Routers.otherTypeKeyChangeDatePage, + arguments: { + "fingerprintItemData": state.faceItemData.value, + "pushType": 1, + }); + if (data != null) { + setState(() { + state.effectiveDateTime.value = + data["beginTimeTimestamp"]; + state.failureDateTime.value = + data["endTimeTimestamp"]; + }); + } + } else if (state.keyType.value == 4) { + // 循环 + var data = await Get.toNamed( + Routers.otherTypeKeyChangeValidityDatePage, + arguments: { + "fingerprintItemData": state.faceItemData.value, + }); + if (data != null) { + setState(() { + state.effectiveDateTime.value = + data["beginTimeTimestamp"]; + state.failureDateTime.value = + data["endTimeTimestamp"]; + state.weekDay.value = data["weekDay"]; + }); + } + } + }))), + Obx(() => Visibility( + visible: state.keyType.value == 4 ? true : false, + child: Obx(() => CommonItem( + leftTitel: TranslationLoader.lanKeys!.effectiveDay!.tr, + rightTitle: state.weekDay.value.join(','), + isHaveDirection: true, + action: () async { + // 当是指纹的时候 + var data = await Get.toNamed( + Routers.otherTypeKeyChangeValidityDatePage, + arguments: { + "fingerprintItemData": state.faceItemData.value, + }); + if (data != null) { + setState(() { + state.effectiveDateTime.value = + data["beginTimeTimestamp"]; + state.failureDateTime.value = data["endTimeTimestamp"]; + state.weekDay.value = data["weekDay"]; + }); + } + })))), + Container(height: 10.h), + Obx(() => CommonItem( + leftTitel: TranslationLoader.lanKeys!.additive!.tr, + rightTitle: state.adder.value, + isHaveLine: true, + action: () {})), + Obx(() => CommonItem( + leftTitel: TranslationLoader.lanKeys!.addTime!.tr, + rightTitle: + DateTool().dateToYMDHNString(state.addTime.value.toString()), + action: () {})), + SizedBox(height: 10.h), + + Container(height: 10.h), + CommonItem( + leftTitel: TranslationLoader.lanKeys!.operatingRecord!.tr, + rightTitle: "", + isHaveDirection: true, + action: () { + // 人脸 + Get.toNamed(Routers.keyOperationRecordPage, arguments: { + 'lockId': state.faceItemData.value.lockId.toString(), + 'faceId': state.faceItemData.value.faceId.toString() + }); + }), + // SizedBox(height: 40.h), + // addControlsBtn(type), + SizedBox(height: 30.h), + SubmitBtn( + btnName: TranslationLoader.lanKeys!.delete!.tr, + isDelete: true, + borderRadius: 20.w, + 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: () { + showIosTipViewDialog(context); + }), + ], + ), + ); + } + + // Widget addControlsBtn(int type) { + // List widgetList = []; + // List> routerList = []; + // //卡详情 + // if (type == 0) { + // routerList.add({ + // 'btnTitle': '设置密码', + // 'routerName': Routers.passwordKeyDetailPage, + // 'type': 9 + // }); + // routerList.add({ + // 'btnTitle': '设置指纹', + // 'routerName': Routers.otherTypeKeyManagePage, + // 'type': 1 + // }); + // routerList.add({ + // 'btnTitle': '设置遥控', + // 'routerName': Routers.otherTypeKeyManagePage, + // 'type': 2 + // }); + // } else if (type == 1) { + // //指纹详情 + // routerList.add({ + // 'btnTitle': '设置密码', + // 'routerName': Routers.passwordKeyDetailPage, + // 'type': 9 + // }); + // routerList.add({ + // 'btnTitle': '设置卡', + // 'routerName': Routers.otherTypeKeyManagePage, + // 'type': 0 + // }); + // routerList.add({ + // 'btnTitle': '设置遥控', + // 'routerName': Routers.otherTypeKeyManagePage, + // 'type': 2 + // }); + // } else if (type == 2) { + // //遥控详情 + // routerList.add({ + // 'btnTitle': '设置密码', + // 'routerName': Routers.passwordKeyDetailPage, + // 'type': 9 + // }); + // routerList.add({ + // 'btnTitle': '设置卡', + // 'routerName': Routers.otherTypeKeyManagePage, + // 'type': 0 + // }); + // routerList.add({ + // 'btnTitle': '设置指纹', + // 'routerName': Routers.otherTypeKeyManagePage, + // 'type': 1 + // }); + // } + // + // for (int i = 0; i < routerList.length; i++) { + // widgetList.add(SizedBox( + // width: ScreenUtil().screenWidth - 40.w, + // height: 60.h, + // child: OutlinedButton( + // style: OutlinedButton.styleFrom( + // // backgroundColor: Colors.white, + // side: BorderSide(width: 1, color: AppColors.mainColor)), + // onPressed: () { + // if (routerList[i]['type'] == 9) { + // Navigator.pushNamed(context, Routers.passwordKeyManagePage); + // } else { + // Navigator.pushNamed(context, Routers.otherTypeKeyManagePage, + // arguments: routerList[i]['type']); + // } + // }, + // child: Text( + // routerList[i]['btnTitle'], + // style: TextStyle(color: AppColors.mainColor, fontSize: 24.sp), + // )), + // )); + // + // widgetList.add( + // SizedBox( + // height: 10.h, + // ), + // ); + // } + // + // return Column( + // children: widgetList, + // ); + // } + + void showCupertinoAlertDialog(BuildContext context) { + showDialog( + context: context, + builder: (BuildContext context) { + return ShowTFView( + title: + "${TranslationLoader.lanKeys!.amend!.tr}${TranslationLoader.lanKeys!.name!.tr}", + tipTitle: "", + controller: state.changeNameController, + sureClick: () { + if (state.changeNameController.text.isEmpty) { + logic.showToast("请输入姓名"); + return; + } + Get.back(); + // 指纹 + logic.editFingerprintsData(); + }, + cancelClick: () { + Get.back(); + }, + ); + }); + } + + void showIosTipViewDialog(BuildContext context) { + showDialog( + context: context, + builder: (BuildContext context) { + return ShowIosTipView( + title: "提示", + tipTitle: "确定要删除吗?", + sureClick: () { + Get.back(); + // 指纹 + logic.senderAddFingerprint(); + }, + cancelClick: () { + Get.back(); + }, + ); + }); + } + + @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(); + } + + /// 从上级界面进入 当前界面即将出现 + @override + void didPush() { + super.didPush(); + print("lockSet===didPush"); + state.ifCurrentScreen.value = true; + } + + /// 返回上一个界面 当前界面即将消失 + @override + void didPop() { + super.didPop(); + print("lockSet===didPop"); + logic.cancelBlueConnetctToastTimer(); + if (EasyLoading.isShow) EasyLoading.dismiss(animation: true); + BlueManage().stopScan(); + state.ifCurrentScreen.value = false; + state.sureBtnState.value = 0; + } + + /// 从下级返回 当前界面即将出现 + @override + void didPopNext() { + super.didPopNext(); + print("lockSet===didPopNext"); + state.ifCurrentScreen.value = true; + } + + /// 进入下级界面 当前界面即将消失 + @override + void didPushNext() { + super.didPushNext(); + print("lockSet===didPushNext"); + logic.cancelBlueConnetctToastTimer(); + if (EasyLoading.isShow) EasyLoading.dismiss(animation: true); + BlueManage().stopScan(); + state.ifCurrentScreen.value = false; + state.sureBtnState.value = 0; + } +} diff --git a/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_state.dart b/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_state.dart new file mode 100644 index 00000000..d631d6db --- /dev/null +++ b/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_state.dart @@ -0,0 +1,38 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/main/lockDetail/face/faceList/faceListData_entity.dart'; + +class FaceDetailState { + final faceItemData = FaceItemData().obs; + + final TextEditingController changeNameController = TextEditingController(); + + final typeNumber = "".obs; // 指纹号 + final typeName = "".obs; // 指纹名字 + var effectiveDateTime = 0.obs; // 生效时间 + var failureDateTime = 0.obs; // 失效时间 + final keyType = 0.obs; // 永久:1;限时2,单次3,循环:4 + var weekDay = [].obs; // 有效日 + var adder = "".obs; // 添加者 + var addTime = 0.obs; // 添加时间 + var keyId = 0.obs; + + var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 + var sureBtnState = 0.obs; // 0普通状态(可用) 1连接中(不可用) + + final isStressFingerprint = false.obs; + FaceDetailState() { + Map map = Get.arguments; + faceItemData.value = map["faceItemData"]; + keyId.value = faceItemData.value.faceId!; + typeNumber.value = faceItemData.value.faceNumber!; + typeName.value = faceItemData.value.faceName!; + changeNameController.text = typeName.value; + effectiveDateTime.value = faceItemData.value.startDate!; + failureDateTime.value = faceItemData.value.endDate!; + keyType.value = faceItemData.value.faceType!; + adder.value = faceItemData.value.senderUsername!; + addTime.value = faceItemData.value.createDate!; + weekDay.value = faceItemData.value.cyclicConfig!; + } +} diff --git a/star_lock/lib/main/lockDetail/face/faceList/faceListData_entity.dart b/star_lock/lib/main/lockDetail/face/faceList/faceListData_entity.dart new file mode 100644 index 00000000..942f823c --- /dev/null +++ b/star_lock/lib/main/lockDetail/face/faceList/faceListData_entity.dart @@ -0,0 +1,131 @@ +class FaceListDataEntity { + int? errorCode; + String? description; + String? errorMsg; + Data? data; + + FaceListDataEntity( + {this.errorCode, this.description, this.errorMsg, this.data}); + + FaceListDataEntity.fromJson(Map json) { + errorCode = json['errorCode']; + description = json['description']; + errorMsg = json['errorMsg']; + data = json['data'] != null ? Data.fromJson(json['data']) : null; + } + + Map toJson() { + final Map data = {}; + data['errorCode'] = errorCode; + data['description'] = description; + data['errorMsg'] = errorMsg; + if (this.data != null) { + data['data'] = this.data!.toJson(); + } + return data; + } +} + +class Data { + List? list; + int? pageNo; + int? pageSize; + int? pages; + int? total; + + Data({this.list, this.pageNo, this.pageSize, this.pages, this.total}); + + Data.fromJson(Map json) { + if (json['list'] != null) { + list = []; + json['list'].forEach((v) { + list!.add(FaceItemData.fromJson(v)); + }); + } + pageNo = json['pageNo']; + pageSize = json['pageSize']; + pages = json['pages']; + total = json['total']; + } + + Map toJson() { + final Map data = {}; + if (list != null) { + data['list'] = list!.map((v) => v.toJson()).toList(); + } + data['pageNo'] = pageNo; + data['pageSize'] = pageSize; + data['pages'] = pages; + data['total'] = total; + return data; + } +} + +class FaceItemData { + int? lockId; + int? faceId; + String? faceName; + String? faceNumber; + int? startDate; + int? endDate; + int? status; + int? addType; + int? faceType; + List? cyclicConfig; + String? featureData; + int? createDate; + String? senderUsername; + String? validTimeStr; + + FaceItemData( + {this.lockId, + this.faceId, + this.faceName, + this.faceNumber, + this.startDate, + this.endDate, + this.status, + this.addType, + this.faceType, + this.cyclicConfig, + this.featureData, + this.createDate, + this.senderUsername, + this.validTimeStr}); + + FaceItemData.fromJson(Map json) { + lockId = json['lockId']; + faceId = json['faceId']; + faceName = json['faceName']; + faceNumber = json['faceNumber']; + startDate = json['startDate']; + endDate = json['endDate']; + status = json['status']; + addType = json['addType']; + faceType = json['faceType']; + cyclicConfig = json['cyclicConfig']; + featureData = json['featureData']; + createDate = json['createDate']; + senderUsername = json['senderUsername']; + validTimeStr = json['validTimeStr']; + } + + Map toJson() { + final Map data = {}; + data['lockId'] = lockId; + data['faceId'] = faceId; + data['faceName'] = faceName; + data['faceNumber'] = faceNumber; + data['startDate'] = startDate; + data['endDate'] = endDate; + data['status'] = status; + data['addType'] = addType; + data['faceType'] = faceType; + data['cyclicConfig'] = cyclicConfig; + data['featureData'] = featureData; + data['createDate'] = createDate; + data['senderUsername'] = senderUsername; + data['validTimeStr'] = validTimeStr; + return data; + } +} diff --git a/star_lock/lib/main/lockDetail/face/faceList/faceList_logic.dart b/star_lock/lib/main/lockDetail/face/faceList/faceList_logic.dart index 00cff678..6d04677c 100644 --- a/star_lock/lib/main/lockDetail/face/faceList/faceList_logic.dart +++ b/star_lock/lib/main/lockDetail/face/faceList/faceList_logic.dart @@ -1,8 +1,427 @@ +import 'dart:async'; +import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; +import 'package:star_lock/blue/io_protocol/io_addFace.dart'; +import 'package:star_lock/blue/io_protocol/io_queryingFaceStatus.dart'; +import 'package:star_lock/blue/io_type.dart'; +import 'package:star_lock/main/lockDetail/face/faceList/faceList_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; -import 'faceList_state.dart'; +import '../../../../blue/blue_manage.dart'; +import '../../../../blue/io_protocol/io_checkingUserInfoCount.dart'; +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 '../../../../network/api_repository.dart'; +import '../../../../tools/eventBusEventManage.dart'; +import '../../../../tools/storage.dart'; -class FaceListLogic extends BaseGetXController{ +class FaceListLogic extends BaseGetXController { FaceListState state = FaceListState(); -} \ No newline at end of file + // 获取解析后的数据 + late StreamSubscription _replySubscription; + void _initReplySubscription() { + _replySubscription = + EventBusManager().eventBus!.on().listen((reply) { + // 添加人脸开始(此处用作删除人脸) + if ((reply is SenderAddFaceReply) && (state.isDeletFaceData == true)) { + _replyAddFaceBegin(reply); + } + + if (reply is SenderQueryingFaceStatusReply) { + // 获取人脸状态 + _replyQueryingFaceStatus(reply); + } + + if (reply is SenderCheckingUserInfoCountReply) { + _replyCheckingUserInfoCount(reply); + } + }); + } + + // 添加人脸开始---这里用作删除人脸 + Future _replyAddFaceBegin(Reply reply) async { + int status = reply.data[2]; + print("status:$status"); + + switch (status) { + case 0x00: + //成功 + print("${reply.commandType!.typeValue} list人脸数据解析成功"); + state.isDeletFaceData = false; + cancelBlueConnetctToastTimer(); + dismissEasyLoading(); + deletAllFacesData(); + break; + case 0x06: + //无权限 + print("${reply.commandType!.typeValue} 需要鉴权"); + var privateKey = await Storage.getStringList(saveBluePrivateKey); + List getPrivateKeyList = changeStringListToIntList(privateKey!); + + var publicKey = await Storage.getStringList(saveBluePublicKey); + List publicKeyDataList = changeStringListToIntList(publicKey!); + + var token = await Storage.getStringList(saveBlueToken); + List getTokenList = changeStringListToIntList(token!); + + IoSenderManage.senderAddFaceCommand( + keyID: state.deletKeyID, + userID: state.deletUserID, + faceNo: state.deletFaceNo, + useCountLimit: 0, + startTime: 0x11223344, + endTime: 0x11223344, + needAuthor: 1, + publicKey: publicKeyDataList, + privateKey: getPrivateKeyList, + token: getTokenList, + ); + break; + case 0x07: + //无权限 + print("${reply.commandType!.typeValue} 用户无权限"); + + break; + case 0x09: + // 权限校验错误 + print("${reply.commandType!.typeValue} 权限校验错误"); + + break; + default: + //失败 + print("${reply.commandType!.typeValue} list人脸失败"); + + break; + } + } + + // 获取人脸状态 + Future _replyQueryingFaceStatus(Reply reply) async { + int status = reply.data[2]; + + switch (status) { + case 0x00: + //成功 + print("${reply.commandType}数据解析成功"); + // _getLockStatus(); + break; + case 0x06: + //无权限 + print("${reply.commandType}需要鉴权"); + + break; + case 0x07: + //无权限 + print("${reply.commandType}用户无权限"); + + break; + case 0x09: + // 权限校验错误 + print("${reply.commandType}权限校验错误"); + + break; + default: + //失败 + print("${reply.commandType}失败"); + + break; + } + } + + // 获取卡片状态 + Future _replyReferEventRecordNumber(Reply reply) async { + int status = reply.data[2]; + switch (status) { + case 0x00: + //成功 + print("${reply.commandType}数据解析成功"); + // _getLockStatus(); + break; + case 0x06: + //无权限 + print("${reply.commandType}需要鉴权"); + + break; + case 0x07: + //无权限 + print("${reply.commandType}用户无权限"); + + break; + case 0x09: + // 权限校验错误 + print("${reply.commandType}权限校验错误"); + + break; + default: + //失败 + print("${reply.commandType}失败"); + + break; + } + } + + // 查询用户、指纹、密码、卡片数量(用于判断是否同步) + Future _replyCheckingUserInfoCount(Reply reply) async { + int status = reply.data[2]; + + // 用户数量 + int userNum = reply.data[5]; + // print("userNum:$userNum"); + + // 指纹数量 + int fingerNum = reply.data[6]; + // print("fingerNum:$fingerNum"); + + // 密码数量 + 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); + print("serialNo:$serialNo"); + + switch (status) { + case 0x00: + //成功 + print("${reply.commandType}数据解析成功"); + // _getLockStatus(); + break; + case 0x06: + //无权限 + print("${reply.commandType}需要鉴权"); + + break; + case 0x07: + //无权限 + print("${reply.commandType}用户无权限"); + + break; + case 0x09: + // 权限校验错误 + print("${reply.commandType}权限校验错误"); + + break; + default: + //失败 + print("${reply.commandType}失败"); + + break; + } + } + + // 获取人脸状态 + Future senderQueryingFaceStatus() async { + BlueManage().bludSendData(BlueManage().connectDeviceName, + (DeviceConnectionState state) async { + if (state == DeviceConnectionState.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.senderQueryingFaceStatusCommand( + keyID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + role: 0xff, + fingerCount: 20, + fingerNo: 1, + token: getTokenList, + needAuthor: 1, + publicKey: getPublicKeyList, + privateKey: getPrivateKeyList, + ); + } + }); + } + + // 查询用户、指纹、密码、卡片数量(用于判断是否同步) + Future senderCheckingUserInfoCount() async { + BlueManage().bludSendData(BlueManage().connectDeviceName, + (DeviceConnectionState state) async { + if (state == DeviceConnectionState.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 senderAddFace() async { + showEasyLoading(); + showBlueConnetctToastTimer(action: () { + dismissEasyLoading(); + }); + BlueManage().bludSendData(BlueManage().connectDeviceName, + (DeviceConnectionState deviceConnectionState) async { + if (deviceConnectionState == DeviceConnectionState.connected) { + var publicKey = await Storage.getStringList(saveBluePublicKey); + List publicKeyDataList = changeStringListToIntList(publicKey!); + + var privateKey = await Storage.getStringList(saveBluePrivateKey); + List getPrivateKeyList = changeStringListToIntList(privateKey!); + + var token = await Storage.getStringList(saveBlueToken); + List getTokenList = changeStringListToIntList(token!); + + IoSenderManage.senderAddFaceCommand( + keyID: state.deletKeyID, + userID: state.deletUserID, + faceNo: state.deletFaceNo, + useCountLimit: 0, + startTime: 0x11223344, + endTime: 0x11223344, + needAuthor: 1, + publicKey: publicKeyDataList, + privateKey: getPrivateKeyList, + token: getTokenList, + ); + } else if (deviceConnectionState == DeviceConnectionState.disconnected) { + dismissEasyLoading(); + cancelBlueConnetctToastTimer(); + if (state.ifCurrentScreen.value == true) { + showBlueConnetctToast(); + } + } + }); + } + + // 获取人脸列表 + void getFaceListData() async { + var entity = await ApiRepository.to.getFaceListData( + lockId: state.lockId.value.toString(), + pageNo: '1', + pageSize: '20', + searchStr: state.searchController.text, + ); + if (entity.errorCode!.codeIsSuccessful) { + state.faceItemListData.value = entity.data!.list!; + } + } + + // 重置所有的人脸 + void deletAllFacesData() async { + var fingerprintId = ""; + var type = "1"; + if (state.isDeletAll == false) { + fingerprintId = state.deletKeyID; + type = "0"; + } + print("delet fingerprintId $fingerprintId"); + var entity = await ApiRepository.to.deletFingerprintsData( + fingerprintId: fingerprintId, + lockId: state.lockId.value.toString(), + type: type, + deleteType: "1"); + if (entity.errorCode!.codeIsSuccessful) { + if (state.isDeletAll == false) { + showToast("删除成功"); + } else { + showToast("重置成功"); + } + + state.isDeletFaceData = false; + getFaceListData(); + } + } + + // 监听修改完详情之后刷新列表 + late StreamSubscription _teamEvent; + void _initRefreshAction() { + _teamEvent = eventBus.on().listen((event) { + getFaceListData(); + }); + } + + @override + Future onReady() async { + // TODO: implement onReady + super.onReady(); + print("onReady()"); + + // 获取是否是演示模式 演示模式不获取接口 + var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); + // print("aaaaaaa:$isDemoMode"); + if (isDemoMode == false) { + _initReplySubscription(); + + _initRefreshAction(); + + getFaceListData(); + } + } + + @override + Future onInit() async { + // TODO: implement onInit + super.onInit(); + print("onInit()"); + var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); + if (isDemoMode == false) { + // senderQueryingFingerprintStatus(); + // senderCheckingCardStatus(); + + // senderCheckingUserInfoCount(); + } + } + + @override + Future onClose() async { + // TODO: implement onClose + super.onClose(); + + var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); + if (isDemoMode == false) { + _replySubscription.cancel(); + _teamEvent.cancel(); + } + } +} diff --git a/star_lock/lib/main/lockDetail/face/faceList/faceList_page.dart b/star_lock/lib/main/lockDetail/face/faceList/faceList_page.dart index be012428..f516c027 100644 --- a/star_lock/lib/main/lockDetail/face/faceList/faceList_page.dart +++ b/star_lock/lib/main/lockDetail/face/faceList/faceList_page.dart @@ -1,8 +1,10 @@ - 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/face/faceList/faceListData_entity.dart'; +import 'package:star_lock/tools/keySearchWidget.dart'; +import 'package:star_lock/tools/left_slide_actions.dart'; import '../../../../appRouters.dart'; import '../../../../app_settings/app_colors.dart'; @@ -53,86 +55,99 @@ class _FaceListState extends State { ), body: Column( children: [ - _searchWidget(), + KeySearchWidget( + editingController: state.searchController, + onSubmittedAction: () { + logic.getFaceListData(); + }, + ), SizedBox( height: 20.h, ), Expanded(child: _buildMainUI()), AddBottomWhiteBtn( btnName: - '${TranslationLoader.lanKeys!.add!.tr}${TranslationLoader.lanKeys!.face!.tr}', + '${TranslationLoader.lanKeys!.add!.tr}${TranslationLoader.lanKeys!.face!.tr}', onClick: () async { var data = - await Get.toNamed(Routers.addFaceTypeManagePage); + await Get.toNamed(Routers.addFaceTypeManagePage, arguments: { + "lockId": state.lockId.value, + "fromType": 1 // 1从添加钥匙列表进入 2从考勤添加员工入口进入 + }); if (data != null) { - // 遥控添加 - + logic.getFaceListData(); } }, ), - SizedBox( - height: 64.h, - ) + SizedBox(height: 64.h) ], ), ); } - Widget _searchWidget() { - return Container( - height: 60.h, - margin: EdgeInsets.only(top: 20.w, left: 20.w, right: 10.w), - decoration: BoxDecoration( - color: Colors.white, borderRadius: BorderRadius.circular(5)), - child: TextField( - //输入框一行 - maxLines: 1, - controller: state.searchController, - autofocus: false, - onChanged: (value) { - print("onChanged:$value"); - }, - onEditingComplete: () { - print("onEditingComplete:"); - }, - onSubmitted: (value) { - // 调用遥控列表 - - }, - decoration: InputDecoration( - //输入里面输入文字内边距设置 - contentPadding: const EdgeInsets.only( - top: 12.0, left: -19.0, right: -15.0, bottom: 8.0), - hintText: TranslationLoader.lanKeys!.pleaseEnter!.tr, - hintStyle: TextStyle(fontSize: 22.sp, height: 3.0), - //不需要输入框下划线 - border: InputBorder.none, - //左边图标设置 - icon: Padding( - padding: EdgeInsets.only( - top: 20.h, bottom: 20.h, right: 20.w, left: 10.w), - child: Image.asset( - 'images/main/icon_main_search.png', - width: 40.w, - height: 40.w, - ), - ), - ), - ), - ); - } - Widget _buildMainUI() { - String typeImgName = 'images/icon_card.png'; - - return const NoData(); + { + return Obx(() => state.faceItemListData.value.isNotEmpty + ? ListView.separated( + itemCount: state.faceItemListData.value.length, + itemBuilder: (c, index) { + FaceItemData getFaceItemData = + state.faceItemListData.value[index]; + // 人脸 + if (index < state.faceItemListData.value.length) { + return LeftSlideActions( + key: Key(getFaceItemData.faceName!), + actionsWidth: 60, + actions: [ + _buildDeleteBtn(getFaceItemData), + ], + decoration: const BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(1)), + ), + child: _keyItem( + 'images/icon_fingerprint.png', + getFaceItemData.faceName!, + (getFaceItemData.faceType! != 1) + ? (getFaceItemData.endDate! < + DateTime.now().millisecondsSinceEpoch + ? "已失效" + : "") + : "", + getFaceItemData.validTimeStr!, + // fingerprintItemData.fingerprintType! == 1 + // ? "永久" + // : "${DateTool().dateToYMDHNString(fingerprintItemData.startDate.toString())} - ${DateTool().dateToYMDHNString(fingerprintItemData.endDate.toString())}", + () async { + var data = + await Get.toNamed(Routers.faceDetailPage, arguments: { + "faceItemData": getFaceItemData, + }); + if (data != null) { + logic.getFaceListData(); + } + }), + ); + } + return const SizedBox.shrink(); + }, + separatorBuilder: (BuildContext context, int index) { + return const Divider( + height: 1, + color: AppColors.greyLineColor, + ); + }, + ) + : const NoData()); + } } - Widget _buildDeleteBtn(String idStr) { + Widget _buildDeleteBtn(FaceItemData faceItemData) { return GestureDetector( onTap: () { // 省略: 弹出是否删除的确认对话框。 - showIosTipViewDialog(context, idStr); + state.deletKeyID = faceItemData.faceId.toString(); + state.deletFaceNo = int.parse(faceItemData.faceNumber!); + showIosTipViewDialog(context); }, child: Container( width: 60, @@ -151,7 +166,7 @@ class _FaceListState extends State { ); } - void showIosTipViewDialog(BuildContext context, String keyId) { + void showIosTipViewDialog(BuildContext context) { showDialog( context: context, builder: (BuildContext context) { @@ -159,8 +174,11 @@ class _FaceListState extends State { title: "提示", tipTitle: "确定要删除吗?", sureClick: () async { - // 遥控删除 - + Get.back(); + state.isDeletFaceData = true; + state.isDeletAll = false; + state.deletUserID = (await Storage.getUid())!; + logic.senderAddFace(); }, cancelClick: () { Get.back(); @@ -170,8 +188,8 @@ class _FaceListState extends State { ); } - Widget _keyItem(String lockTypeIcon, String lockTypeTitle, String showTime, - Function() action) { + Widget _keyItem(String lockTypeIcon, String lockTypeTitle, + String ifInvalidation, String showTime, Function() action) { return GestureDetector( onTap: action, child: Container( @@ -192,24 +210,26 @@ class _FaceListState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ Row( - mainAxisAlignment: MainAxisAlignment.start, + // mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text(lockTypeTitle, style: TextStyle( fontSize: 24.sp, color: AppColors.blackColor)), + Expanded(child: Container()), + Text(ifInvalidation, + style: TextStyle(fontSize: 22.sp, color: Colors.red)), + SizedBox(width: 10.w), ], ), SizedBox(height: 5.h), - Container( - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Text(showTime, - style: TextStyle( - fontSize: 18.sp, - color: AppColors.placeholderTextColor)), - ], - ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Text(showTime, + style: TextStyle( + fontSize: 18.sp, + color: AppColors.placeholderTextColor)), + ], ), SizedBox(width: 20.h), ], @@ -222,13 +242,13 @@ class _FaceListState extends State { ); } - void showDeletAlertDialog(BuildContext context,) { + void showDeletAlertDialog(BuildContext context) { showCupertinoDialog( context: context, builder: (context) { return CupertinoAlertDialog( title: const Text("提示"), - content: const Text('重置后信息都会清除哦,确认要重置吗?'), + content: const Text('重置后,该锁的人脸都将被删除哦,确认要重置吗?'), actions: [ CupertinoDialogAction( child: Text(TranslationLoader.lanKeys!.cancel!.tr), @@ -239,8 +259,13 @@ class _FaceListState extends State { CupertinoDialogAction( child: Text(TranslationLoader.lanKeys!.sure!.tr), onPressed: () { - // 遥控重置 - + Navigator.pop(context); + state.isDeletFaceData = true; + state.isDeletAll = true; + state.deletKeyID = "1"; + state.deletUserID = "DeleteAll!@#"; + state.deletFaceNo = 255; + logic.senderAddFace(); }, ), ], diff --git a/star_lock/lib/main/lockDetail/face/faceList/faceList_state.dart b/star_lock/lib/main/lockDetail/face/faceList/faceList_state.dart index be495903..4f3f072e 100644 --- a/star_lock/lib/main/lockDetail/face/faceList/faceList_state.dart +++ b/star_lock/lib/main/lockDetail/face/faceList/faceList_state.dart @@ -1,6 +1,24 @@ - import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/main/lockDetail/face/faceList/faceListData_entity.dart'; -class FaceListState{ +class FaceListState { final TextEditingController searchController = TextEditingController(); -} \ No newline at end of file + final lockId = 0.obs; + + // 因为删除跟添加人脸用的同一个协议 所以这里用做判断 + var isDeletFaceData = false; + var isDeletAll = false; + var deletKeyID = ""; + var deletUserID = "DeleteAll!@#"; + var deletFaceNo = 0; + + final faceItemListData = [].obs; + + var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 + + FaceListState() { + Map map = Get.arguments; + lockId.value = map["lockId"]; + } +} diff --git a/star_lock/lib/network/api.dart b/star_lock/lib/network/api.dart index 68145668..1276b0d9 100644 --- a/star_lock/lib/network/api.dart +++ b/star_lock/lib/network/api.dart @@ -105,6 +105,11 @@ abstract class Api { final String checkFingerprintNameURL = '/fingerprint/checkFingerprintName'; // 校验指纹名字是否存在 + final String getFaceListURL = '/face/list'; // 人脸列表 + final String addFaceURL = '/face/add'; // 添加人脸 + final String checkFaceNameURL = '/face/checkFaceName'; // 校验人脸名称是否重复 + final String updateFaceUserNoURL = '/face/updateFaceUserNo'; // 更新人脸用户序号 + final String getICCardListURL = '/identityCard/list'; // IC卡列表 final String addICCardURL = '/identityCard/add'; // 添加IC卡 final String editICCardURL = '/identityCard/update'; // 编辑IC卡 diff --git a/star_lock/lib/network/api_provider.dart b/star_lock/lib/network/api_provider.dart index 7cdd771f..5877e0a9 100644 --- a/star_lock/lib/network/api_provider.dart +++ b/star_lock/lib/network/api_provider.dart @@ -169,9 +169,9 @@ class ApiProvider extends BaseProvider { })); Future modifyKeyName( - String keyId, - String lockId, - String keyName, + String keyId, + String lockId, + String keyName, ) => post( modifyKeyNameURL.toUrl, @@ -261,7 +261,7 @@ class ApiProvider extends BaseProvider { 'lockId': lockId, 'records': records, }), - isUnShowLoading:true); + isUnShowLoading: true); // 查询锁记录最后时间 Future getLockRecordLastUploadDataTime(String lockId) => post( @@ -346,10 +346,7 @@ class ApiProvider extends BaseProvider { // 删除拥有的当前钥匙 Future deletOwnerKeyInfo(String lockId, String keyId) => post( deleteElectronicKeyURL.toUrl, - jsonEncode({ - 'lockId': lockId, - 'keyId': keyId - })); + jsonEncode({'lockId': lockId, 'keyId': keyId})); // 检查账户密码 Future checkLoginPassword(String password) => post( @@ -477,9 +474,9 @@ class ApiProvider extends BaseProvider { // 删除组 Future deleteGroup(int groupId) => post( lockDeletGroupURL.toUrl, - jsonEncode({ - 'groupId': groupId, - })); + jsonEncode({ + 'groupId': groupId, + })); // 锁分组里面添加锁 Future lockGroupAddLock(List lockIds, int groupId) => post( @@ -555,7 +552,8 @@ class ApiProvider extends BaseProvider { /// 锁设置模块 // 自动闭锁 - Future setAutoUnlockLoadData(int lockId, int autoLock, int autoLockSecond) => + Future setAutoUnlockLoadData( + int lockId, int autoLock, int autoLockSecond) => post( updateLockSettingUrl.toUrl, jsonEncode({ @@ -565,7 +563,8 @@ class ApiProvider extends BaseProvider { })); // 锁声音 - Future setLockSoundData(int lockId, int lockSound, int lockSoundVolume) => + Future setLockSoundData( + int lockId, int lockSound, int lockSoundVolume) => post( updateLockSettingUrl.toUrl, jsonEncode({ @@ -575,18 +574,16 @@ class ApiProvider extends BaseProvider { })); // 防撬报警 - Future setBurglarAlarmData( - int lockId, int antiPrySwitch) => - post( - updateLockSettingUrl.toUrl, - jsonEncode({ - 'lockId': lockId, - 'antiPrySwitch': antiPrySwitch, - })); + Future setBurglarAlarmData(int lockId, int antiPrySwitch) => post( + updateLockSettingUrl.toUrl, + jsonEncode({ + 'lockId': lockId, + 'antiPrySwitch': antiPrySwitch, + })); // 开门方向 Future setOpenDoorDirectionData( - int lockId, int openDirectionValue) => + int lockId, int openDirectionValue) => post( updateLockSettingUrl.toUrl, jsonEncode({ @@ -595,7 +592,8 @@ class ApiProvider extends BaseProvider { })); // 远程开锁 - Future remoteUnlockingOpenOrCloseLoadData(int lockId, int remoteUnlock) => + Future remoteUnlockingOpenOrCloseLoadData( + int lockId, int remoteUnlock) => post( updateLockSettingUrl.toUrl, jsonEncode({ @@ -604,22 +602,20 @@ class ApiProvider extends BaseProvider { })); // 重置键 - Future setResetButtonData(int lockId, int resetSwitch) => - post( - updateLockSettingUrl.toUrl, - jsonEncode({ - 'lockId': lockId, - 'resetSwitch': resetSwitch, - })); + Future setResetButtonData(int lockId, int resetSwitch) => post( + updateLockSettingUrl.toUrl, + jsonEncode({ + 'lockId': lockId, + 'resetSwitch': resetSwitch, + })); // 设置考勤 - Future setCheckInData(int lockId, int resetSwitch) => - post( - updateLockSettingUrl.toUrl, - jsonEncode({ - 'lockId': lockId, - 'attendance': resetSwitch, - })); + Future setCheckInData(int lockId, int resetSwitch) => post( + updateLockSettingUrl.toUrl, + jsonEncode({ + 'lockId': lockId, + 'attendance': resetSwitch, + })); // 设置开锁时是否需联网 Future setOpenLockNeedOnlineData(int lockId, int appUnlockOnline) => @@ -631,16 +627,16 @@ class ApiProvider extends BaseProvider { })); // 设置标记房态 - Future setRoomStatusData(int lockId, int roomStatus) => - post( - setRoomStatusURL.toUrl, - jsonEncode({ - 'lockId': lockId, - 'roomStatus': roomStatus, - })); + Future setRoomStatusData(int lockId, int roomStatus) => post( + setRoomStatusURL.toUrl, + jsonEncode({ + 'lockId': lockId, + 'roomStatus': roomStatus, + })); // 设置常开模式 - Future setNormallyModeData(int lockId, int passageMode, List passageModeConfig) => + Future setNormallyModeData( + int lockId, int passageMode, List passageModeConfig) => post( updateLockSettingUrl.toUrl, jsonEncode({ @@ -657,13 +653,12 @@ class ApiProvider extends BaseProvider { })); // 设置管理员开锁密码 - Future setAdminPasswordData(int lockId, String adminPwd) => - post( - updateLockSettingUrl.toUrl, - jsonEncode({ - 'lockId': lockId, - 'adminPwd': adminPwd, - })); + Future setAdminPasswordData(int lockId, String adminPwd) => post( + updateLockSettingUrl.toUrl, + jsonEncode({ + 'lockId': lockId, + 'adminPwd': adminPwd, + })); // 获取服务器当前时间 Future getServerDatetimeLoadData(String lockId) => post( @@ -703,9 +698,9 @@ class ApiProvider extends BaseProvider { })); Future updateLockName( - String lockId, - String lockName, - ) => + String lockId, + String lockName, + ) => post( updateLockNameURL.toUrl, jsonEncode({ @@ -741,8 +736,10 @@ class ApiProvider extends BaseProvider { })); // 获取开锁提醒 - Future setLockPickingReminderData(int lockId, int unlockReminderPush) => - post(updateLockSettingUrl.toUrl, + Future setLockPickingReminderData( + int lockId, int unlockReminderPush) => + post( + updateLockSettingUrl.toUrl, jsonEncode({ 'lockId': lockId, 'unlockReminderPush': unlockReminderPush, @@ -1015,15 +1012,62 @@ class ApiProvider extends BaseProvider { // 校验指纹名字是否重复 Future checkFingerprintNameDuplicatedData( - String lockId, - String fingerprintName) => + String lockId, String fingerprintName) => + post(checkFingerprintNameURL.toUrl, + jsonEncode({'lockId': lockId, 'fingerprintName': fingerprintName})); + + // 获取人脸列表 + Future getFaceListData( + String lockId, String pageNo, String pageSize, String searchStr) => post( - checkFingerprintNameURL.toUrl, + getFaceListURL.toUrl, jsonEncode({ 'lockId': lockId, - 'fingerprintName': fingerprintName + 'pageNo': pageNo, + 'pageSize': pageSize, + 'searchStr': searchStr, })); + // 添加人脸 + Future addFaceData( + int lockId, + String faceName, + String faceNumber, + int faceType, + int startDate, + int endDate, + String featureData, + String addType, + List cyclicConfig, + ) => + post( + addFaceURL.toUrl, + jsonEncode({ + 'lockId': lockId, + 'faceName': faceName, + 'faceNumber': faceNumber, + 'faceType': faceType, + 'startDate': startDate, + 'endDate': endDate, + 'featureData': featureData, + 'addType': addType, + 'cyclicConfig': cyclicConfig, + })); + + // 校验人脸名字是否重复 + Future checkFaceNameDuplicatedData( + String lockId, String faceName) => + post(checkFaceNameURL.toUrl, + jsonEncode({'lockId': lockId, 'faceName': faceName})); + + // 更新人脸用户序号 + Future updateFaceUserNoLoadData( + String faceId, String lockId, String faceUserNo) => + post( + updateFaceUserNoURL.toUrl, + jsonEncode( + {'faceId': faceId, 'lockId': lockId, 'faceUserNo': faceUserNo})); + // 获取IC卡列表 Future getICCardListData( String lockId, String pageNo, String pageSize, String searchStr) => @@ -1063,8 +1107,15 @@ class ApiProvider extends BaseProvider { })); // 编辑ICCard - Future editICCardData(String lockId, String cardId, String cardName, - String startDate, String endDate, String isCoerced, List weekDay, String changeType) => + Future editICCardData( + String lockId, + String cardId, + String cardName, + String startDate, + String endDate, + String isCoerced, + List weekDay, + String changeType) => post( editICCardURL.toUrl, jsonEncode({ @@ -1100,14 +1151,9 @@ class ApiProvider extends BaseProvider { // 校验卡名字是否重复 Future checkCardNameDuplicatedData( - String lockId, - String cardName) => - post( - checkCardNameURL.toUrl, - jsonEncode({ - 'lockId': lockId, - 'cardName': cardName - })); + String lockId, String cardName) => + post(checkCardNameURL.toUrl, + jsonEncode({'lockId': lockId, 'cardName': cardName})); // 获取转移锁锁列表 Future getTransferLockListData() => @@ -1179,12 +1225,11 @@ class ApiProvider extends BaseProvider { 'searchStr': searchStr })); - Future deletLockUser(int uid) => - post( - deletLockUserURL.toUrl, - jsonEncode({ - 'uid': uid, - })); + Future deletLockUser(int uid) => post( + deletLockUserURL.toUrl, + jsonEncode({ + 'uid': uid, + })); Future keyListByUser(String pageNo, String pageSize, String uid) => post(keyListByUserURL.toUrl, @@ -1227,14 +1272,9 @@ class ApiProvider extends BaseProvider { Future userSettingsInfo() => post(userSettingsInfoURL.toUrl, jsonEncode({})); - Future canSendKey( - String endDate, List lockIdList) => - post( - canSendKeyURL.toUrl, - jsonEncode({ - 'endDate': endDate, - 'lockIdList': lockIdList - })); + Future canSendKey(String endDate, List lockIdList) => post( + canSendKeyURL.toUrl, + jsonEncode({'endDate': endDate, 'lockIdList': lockIdList})); Future batchSendKey( String endDate, @@ -1381,7 +1421,8 @@ class ApiProvider extends BaseProvider { jsonEncode({"questionAndAnswerList": questionAndAnswerList})); // 获取上传文件的upToken 再调用updateUserInfo - Future getUpToken(String module, String typeKey, String type, String filename, int size) => + Future getUpToken(String module, String typeKey, String type, + String filename, int size) => post( getUpTokenURL.toUrl, jsonEncode({ @@ -1392,7 +1433,8 @@ class ApiProvider extends BaseProvider { })); // 文件上传 - Future uploadFile(String url, dynamic boay) => post(url, boay, isUnUploadFile: false, contentType:'multipart/form-data'); + Future uploadFile(String url, dynamic boay) => post(url, boay, + isUnUploadFile: false, contentType: 'multipart/form-data'); //获取解绑手机号Token Future unbindPhoneToken(String verificationCode) => post( diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index c5c3a563..bc9eba53 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -4,6 +4,7 @@ import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyO import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; +import 'package:star_lock/main/lockDetail/face/faceList/faceListData_entity.dart'; import 'package:star_lock/main/lockDetail/lcokSet/basicInformation/basicInformation/KeyDetailEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKeyEntity.dart'; @@ -217,7 +218,8 @@ class ApiRepository { } //操作记录上传 - Future lockRecordUploadData({required String lockId, required List records}) async { + Future lockRecordUploadData( + {required String lockId, required List records}) async { final res = await apiProvider.lockRecordUploadData(lockId, records); return KeyOperationRecordEntity.fromJson(res.body); } @@ -236,22 +238,23 @@ class ApiRepository { } // 更新锁用户NO - Future updateLockUserNo({required String keyId, required String lockUserNo}) async { + Future updateLockUserNo( + {required String keyId, required String lockUserNo}) async { final res = await apiProvider.updateLockUserNo(keyId, lockUserNo); return LockNetTokenEntity.fromJson(res.body); } // 绑定蓝牙管理员 Future bindingBlueAdmin( - { required String lockAlias, - required Map position, - required Map bluetooth, - required Map lockInfo, - required String lockUserNo, - required String pwdTimestamp, - required String featureValue, - required String featureSettingValue, - required List featureSettingParams}) async { + {required String lockAlias, + required Map position, + required Map bluetooth, + required Map lockInfo, + required String lockUserNo, + required String pwdTimestamp, + required String featureValue, + required String featureSettingValue, + required List featureSettingParams}) async { final res = await apiProvider.bindingBlueAdmin( lockAlias, position, @@ -275,24 +278,17 @@ class ApiRepository { //锁名称修改 Future modifyKeyName( - { - required String keyId, - required String lockId, - required String keyName - }) async { - final res = - await apiProvider.modifyKeyName(keyId, lockId, keyName); + {required String keyId, + required String lockId, + required String keyName}) async { + final res = await apiProvider.modifyKeyName(keyId, lockId, keyName); return KeyOperationRecordEntity.fromJson(res.body); } //修改锁名(新) Future updateLockName( - { - required String lockId, - required String lockName - }) async { - final res = - await apiProvider.updateLockName(lockId, lockName); + {required String lockId, required String lockName}) async { + final res = await apiProvider.updateLockName(lockId, lockName); return KeyOperationRecordEntity.fromJson(res.body); } @@ -373,7 +369,8 @@ class ApiRepository { } // 检查账户密码 - Future checkLoginPassword({required String password}) async { + Future checkLoginPassword( + {required String password}) async { final res = await apiProvider.checkLoginPassword(password); return LockListInfoEntity.fromJson(res.body); } @@ -463,10 +460,8 @@ class ApiRepository { } // 编辑锁名字 - Future editLockGroupRequest({ - required int groupId, - required String groupName - }) async { + Future editLockGroupRequest( + {required int groupId, required String groupName}) async { final res = await apiProvider.editLockGroupRequest(groupId, groupName); return MassSendLockGroupListEntity.fromJson(res.body); } @@ -486,29 +481,21 @@ class ApiRepository { //删除锁分组 Future deleteGroup(int groupId) async { - final res = - await apiProvider.deleteGroup(groupId); + final res = await apiProvider.deleteGroup(groupId); return MassSendLockGroupListEntity.fromJson(res.body); } //锁分组里面添加锁 Future lockGroupAddLock( - { - required List lockIds, - required int groupId - }) async { - final res = - await apiProvider.lockGroupAddLock(lockIds, groupId); + {required List lockIds, required int groupId}) async { + final res = await apiProvider.lockGroupAddLock(lockIds, groupId); return MassSendLockGroupListEntity.fromJson(res.body); } //锁分组里面删除锁 Future lockGroupDeletLock( - { - required List lockIds - }) async { - final res = - await apiProvider.lockGroupDeletLock(lockIds); + {required List lockIds}) async { + final res = await apiProvider.lockGroupDeletLock(lockIds); return MassSendLockGroupListEntity.fromJson(res.body); } @@ -590,8 +577,8 @@ class ApiRepository { required int autoLock, required int autoLockSecond, }) async { - final res = - await apiProvider.setAutoUnlockLoadData(lockId, autoLock, autoLockSecond); + final res = await apiProvider.setAutoUnlockLoadData( + lockId, autoLock, autoLockSecond); return LoginEntity.fromJson(res.body); } @@ -602,7 +589,7 @@ class ApiRepository { required int lockSoundVolume, }) async { final res = - await apiProvider.setLockSoundData(lockId, lockSound, lockSoundVolume); + await apiProvider.setLockSoundData(lockId, lockSound, lockSoundVolume); return LoginEntity.fromJson(res.body); } @@ -611,8 +598,7 @@ class ApiRepository { required int lockId, required int antiPrySwitch, }) async { - final res = - await apiProvider.setBurglarAlarmData(lockId, antiPrySwitch); + final res = await apiProvider.setBurglarAlarmData(lockId, antiPrySwitch); return LoginEntity.fromJson(res.body); } @@ -649,7 +635,8 @@ class ApiRepository { required int lockId, required int appUnlockOnline, }) async { - final res = await apiProvider.setOpenLockNeedOnlineData(lockId, appUnlockOnline); + final res = + await apiProvider.setOpenLockNeedOnlineData(lockId, appUnlockOnline); return LoginEntity.fromJson(res.body); } @@ -659,7 +646,7 @@ class ApiRepository { required int openDirectionValue, }) async { final res = - await apiProvider.setOpenDoorDirectionData(lockId, openDirectionValue); + await apiProvider.setOpenDoorDirectionData(lockId, openDirectionValue); return LoginEntity.fromJson(res.body); } @@ -678,8 +665,8 @@ class ApiRepository { required int passageMode, required List passageModeConfig, }) async { - final res = - await apiProvider.setNormallyModeData(lockId, passageMode, passageModeConfig); + final res = await apiProvider.setNormallyModeData( + lockId, passageMode, passageModeConfig); return LoginEntity.fromJson(res.body); } @@ -785,10 +772,8 @@ class ApiRepository { } //群发电子钥匙检查 - Future canSendKey( - String endDate, List lockIdList) async { - final res = - await apiProvider.canSendKey(endDate, lockIdList); + Future canSendKey(String endDate, List lockIdList) async { + final res = await apiProvider.canSendKey(endDate, lockIdList); return KeyDetailEntity.fromJson(res.body); } @@ -928,7 +913,8 @@ class ApiRepository { required int lockId, required int unlockReminderPush, }) async { - final res = await apiProvider.setLockPickingReminderData(lockId, unlockReminderPush); + final res = await apiProvider.setLockPickingReminderData( + lockId, unlockReminderPush); return LoginEntity.fromJson(res.body); } @@ -1168,13 +1154,58 @@ class ApiRepository { // 校验指纹名字是否重复 Future checkFingerprintNameDuplicatedData( - {required String lockId, - required String fingerprintName}) async { + {required String lockId, required String fingerprintName}) async { final res = await apiProvider.checkFingerprintNameDuplicatedData( lockId, fingerprintName); return LoginEntity.fromJson(res.body); } + // 获取人脸列表 + Future getFaceListData({ + required String lockId, + required String pageNo, + required String pageSize, + required String searchStr, + }) async { + final res = + await apiProvider.getFaceListData(lockId, pageNo, pageSize, searchStr); + return FaceListDataEntity.fromJson(res.body); + } + + // 添加人脸 + Future addFaceData({ + required int lockId, + required String faceName, + required String faceNumber, + required int faceType, + required int startDate, + required int endDate, + required String featureData, + required String addType, + required List cyclicConfig, + }) async { + final res = await apiProvider.addFaceData(lockId, faceName, faceNumber, + faceType, startDate, endDate, featureData, addType, cyclicConfig); + return AddFingerprintEntity.fromJson(res.body); + } + + // 校验人脸名字是否重复 + Future checkFaceNameDuplicatedData( + {required String lockId, required String faceName}) async { + final res = await apiProvider.checkFaceNameDuplicatedData(lockId, faceName); + return LoginEntity.fromJson(res.body); + } + + // 更新人脸用户序号 + Future updateFaceUserNoLoadData( + {required String faceId, + required String lockId, + required String faceUserNo}) async { + final res = + await apiProvider.updateFaceUserNoLoadData(faceId, lockId, faceUserNo); + return LoginEntity.fromJson(res.body); + } + // 获取Ic卡列表 Future getICCardListData({ required String lockId, @@ -1214,8 +1245,8 @@ class ApiRepository { required String isCoerced, required List weekDay, required String changeType}) async { - final res = await apiProvider.editICCardData( - lockId, cardId, cardName, startDate, endDate, isCoerced, weekDay, changeType); + final res = await apiProvider.editICCardData(lockId, cardId, cardName, + startDate, endDate, isCoerced, weekDay, changeType); return LoginEntity.fromJson(res.body); } @@ -1242,10 +1273,8 @@ class ApiRepository { // 校验卡名字是否重复 Future checkCardNameDuplicatedData( - {required String lockId, - required String cardName}) async { - final res = await apiProvider.checkCardNameDuplicatedData( - lockId, cardName); + {required String lockId, required String cardName}) async { + final res = await apiProvider.checkCardNameDuplicatedData(lockId, cardName); return LoginEntity.fromJson(res.body); } @@ -1391,24 +1420,21 @@ class ApiRepository { //上传头像 先获取upToken 再调用updateUserInfo Future getUpToken( - { - required String module, - required String typeKey, - required String type, - required String filename, - required int size - } - ) async { - final res = await apiProvider.getUpToken(module, typeKey, type, filename, size); + {required String module, + required String typeKey, + required String type, + required String filename, + required int size}) async { + final res = + await apiProvider.getUpToken(module, typeKey, type, filename, size); return MinePersonGetUploadFileInfoEntity.fromJson(res.body); } // 文件上传 - Future uploadFile( - { - required String url, - required dynamic body, - }) async { + Future uploadFile({ + required String url, + required dynamic body, + }) async { final res = await apiProvider.uploadFile(url, body); return LoginEntity.fromJson(res.body); } diff --git a/star_lock/lib/network/response_interceptor_log.dart b/star_lock/lib/network/response_interceptor_log.dart index 6b7a5e43..58552bea 100644 --- a/star_lock/lib/network/response_interceptor_log.dart +++ b/star_lock/lib/network/response_interceptor_log.dart @@ -4,7 +4,8 @@ import 'package:get/get.dart'; import 'package:get/get_connect/http/src/request/request.dart'; FutureOr responseLogInterceptor(Request request, Response response) { - Get.log('HTTP request:${request.url}\n RESPONSE => stataCode:${response.statusCode} ${response.body} ${response.headers}'); + Get.log( + 'HTTP request:${request.url}\n RESPONSE => stataCode:${response.statusCode} ${response.bodyString} ${response.headers}'); EasyLoading.dismiss(animation: true); return response; } diff --git a/star_lock/lib/tools/xs_aliyunPush.dart b/star_lock/lib/tools/xs_aliyunPush.dart index 4114ab5c..c2675a61 100644 --- a/star_lock/lib/tools/xs_aliyunPush.dart +++ b/star_lock/lib/tools/xs_aliyunPush.dart @@ -16,29 +16,29 @@ class XSAliyunPushProvider { } Future _onNotification(Map message) async { - print('onNotification: $message'); + // print('onNotification: $message'); } Future _onAndroidNotificationReceivedInApp( Map message) async { - print('onAndroidNotificationReceivedInApp: $message'); + // print('onAndroidNotificationReceivedInApp: $message'); } Future _onMessage(Map message) async { - print('onMessage: $message'); + // print('onMessage: $message'); } Future _onNotificationOpened(Map message) async { - print('onNotificationOpened: $message'); + // print('onNotificationOpened: $message'); } Future _onNotificationRemoved(Map message) async { - print('onNotificationRemoved: $message'); + // print('onNotificationRemoved: $message'); } Future _onAndroidNotificationClickedWithNoAction( Map message) async { - print('onAndroidNotificationClickedWithNoAction: $message'); + // print('onAndroidNotificationClickedWithNoAction: $message'); } Future _onIOSChannelOpened(Map message) async {} @@ -86,7 +86,7 @@ class XSAliyunPushProvider { // Toast.show(msg: "初始化推送成功"); } else { String errorMsg = initResult['errorMsg']; - print('初始化推送失败,原因为:$errorMsg'); + // print('初始化推送失败,原因为:$errorMsg'); // Toast.show(msg: '初始化推送失败, errorMsg: $errorMsg.}'); } }); @@ -106,7 +106,7 @@ class XSAliyunPushProvider { } else { String errorMsg = initResult['errorMsg']; // Toast.show(msg: '初始化辅助通道成功, errorMsg: $errorMsg'); - print("初始化辅助通道失败,原因为:$errorMsg"); + // print("初始化辅助通道失败,原因为:$errorMsg"); } });