From f618546d866e2c982e236fd2e16d5b7e0a68c7f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com> Date: Fri, 12 Jan 2024 19:05:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E5=A4=8D=E5=8D=A1?= =?UTF-8?q?=E3=80=81=E6=8C=87=E7=BA=B9=E6=A8=A1=E5=9D=97bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../card/addCardType/addCardType_logic.dart | 12 ++- .../card/addCardType/addCardType_page.dart | 2 +- .../card/addICCard/addICCard_logic.dart | 12 ++- .../card/addICCard/addICCard_page.dart | 75 +++++++++++++++++-- .../card/addICCard/addICCard_state.dart | 2 + .../card/cardDetail/cardDetail_logic.dart | 18 +++++ .../card/cardDetail/cardDetail_page.dart | 64 +++++++++++++++- .../card/cardDetail/cardDetail_state.dart | 3 + .../card/cardList/cardList_logic.dart | 13 +++- .../card/cardList/cardList_page.dart | 62 ++++++++++++++- .../card/cardList/cardList_state.dart | 2 + .../addFingerprint/addFingerprint_logic.dart | 23 ++++-- .../addFingerprint/addFingerprint_page.dart | 65 ++++++++++++++-- .../addFingerprint/addFingerprint_state.dart | 6 +- .../addFingerprintType_logic.dart | 12 +++ .../addFingerprintType_page.dart | 3 +- .../fingerprintDetail_logic.dart | 19 +++++ .../fingerprintDetail_page.dart | 63 +++++++++++++++- .../fingerprintDetail_state.dart | 3 + .../fingerprintList_logic.dart | 17 ++++- .../fingerprintList/fingerprintList_page.dart | 63 +++++++++++++++- .../fingerprintList_state.dart | 2 + .../lcokSet/lockSet/lockSet_logic.dart | 2 - .../lockDetail/lockDetail_logic.dart | 6 +- .../lockOperatingRecord_logic.dart | 3 +- star_lock/lib/network/api.dart | 8 +- star_lock/lib/network/api_provider.dart | 22 ++++++ star_lock/lib/network/api_repository.dart | 18 +++++ .../lib/translations/translation_loader.dart | 2 - 29 files changed, 553 insertions(+), 49 deletions(-) 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 dc814b02..9644406f 100644 --- a/star_lock/lib/main/lockDetail/card/addCardType/addCardType_logic.dart +++ b/star_lock/lib/main/lockDetail/card/addCardType/addCardType_logic.dart @@ -5,6 +5,7 @@ import 'package:get/get.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import '../../../../appRouters.dart'; +import '../../../../network/api_repository.dart'; import '../../../../tools/toast.dart'; import 'addCardType_state.dart'; @@ -89,7 +90,16 @@ class AddCardTypeLogic extends BaseGetXController{ }); } - + // 校验卡名字是否重复 + void checkCardNameDuplicated(String cardName) async{ + var entity = await ApiRepository.to.checkCardNameDuplicatedData( + lockId: state.lockId.value.toString(), + cardName: cardName, + ); + if(entity.errorCode!.codeIsSuccessful){ + addCardData(); + } + } @override void onInit() { 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 b9cf2937..bd1232b0 100644 --- a/star_lock/lib/main/lockDetail/card/addCardType/addCardType_page.dart +++ b/star_lock/lib/main/lockDetail/card/addCardType/addCardType_page.dart @@ -200,7 +200,7 @@ class _AddCardPageState extends State { return; } - logic.addCardData(); + logic.checkCardNameDuplicated(state.nameController.text); } else { // Get.toNamed(Routers.seletLockTypePage); Toast.show(msg: "演示模式"); diff --git a/star_lock/lib/main/lockDetail/card/addICCard/addICCard_logic.dart b/star_lock/lib/main/lockDetail/card/addICCard/addICCard_logic.dart index 469b2ad9..fcd61a2e 100644 --- a/star_lock/lib/main/lockDetail/card/addICCard/addICCard_logic.dart +++ b/star_lock/lib/main/lockDetail/card/addICCard/addICCard_logic.dart @@ -214,8 +214,13 @@ class AddICCardLogic extends BaseGetXController{ // 添加卡片 Future senderAddICCard() async { + showBlueConnetctToastTimer(action: (){ + print("没有任何响应"); + 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!); @@ -241,8 +246,11 @@ class AddICCardLogic extends BaseGetXController{ token: getTokenList, ); } else if (deviceConnectionState == DeviceConnectionState.disconnected){ - showBlueConnetctToast(); - Get.close(2); + if(state.ifCurrentScreen.value == true){ + showBlueConnetctToast(); + } + cancelBlueConnetctToastTimer(); + Get.close(1); } }); } diff --git a/star_lock/lib/main/lockDetail/card/addICCard/addICCard_page.dart b/star_lock/lib/main/lockDetail/card/addICCard/addICCard_page.dart index 676c6b41..c4fd4748 100644 --- a/star_lock/lib/main/lockDetail/card/addICCard/addICCard_page.dart +++ b/star_lock/lib/main/lockDetail/card/addICCard/addICCard_page.dart @@ -4,6 +4,8 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import '../../../../app_settings/app_colors.dart'; +import '../../../../blue/blue_manage.dart'; +import '../../../../tools/appRouteObserver.dart'; import '../../../../tools/titleAppBar.dart'; import '../../../../translations/trans_lib.dart'; import 'addICCard_logic.dart'; @@ -15,7 +17,7 @@ class AddICCardPage extends StatefulWidget { State createState() => _AddICCardPageState(); } -class _AddICCardPageState extends State { +class _AddICCardPageState extends State with RouteAware { final logic = Get.put(AddICCardLogic()); final state = Get.find().state; @@ -29,16 +31,18 @@ class _AddICCardPageState extends State { haveBack: true, backgroundColor: AppColors.mainColor, ), - body: Column( - crossAxisAlignment: CrossAxisAlignment.center, + body: ListView( + // crossAxisAlignment: CrossAxisAlignment.center, // mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox(height: 200.h), - Image.asset( - 'images/main/icon_addCard.png', - width: 234.w, - height: 211.h, - fit: BoxFit.cover, + Center( + child: Image.asset( + 'images/main/icon_addCard.png', + width: 234.w, + height: 211.h, + fit: BoxFit.cover, + ), ), SizedBox(height: 90.h), CupertinoActivityIndicator( @@ -67,4 +71,59 @@ class _AddICCardPageState extends State { ), ); } + + @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(); + BlueManage().stopScan(); + state.ifCurrentScreen.value = false; + } + + /// 从下级返回 当前界面即将出现 + @override + void didPopNext() { + super.didPopNext(); + print("lockSet===didPopNext"); + state.ifCurrentScreen.value = true; + } + + /// 进入下级界面 当前界面即将消失 + @override + void didPushNext() { + super.didPushNext(); + print("lockSet===didPushNext"); + logic.cancelBlueConnetctToastTimer(); + + + BlueManage().stopScan(); + state.ifCurrentScreen.value = false; + } } diff --git a/star_lock/lib/main/lockDetail/card/addICCard/addICCard_state.dart b/star_lock/lib/main/lockDetail/card/addICCard/addICCard_state.dart index 5a2395de..2b4cad1f 100644 --- a/star_lock/lib/main/lockDetail/card/addICCard/addICCard_state.dart +++ b/star_lock/lib/main/lockDetail/card/addICCard/addICCard_state.dart @@ -3,6 +3,8 @@ import 'package:get/get.dart'; class AddICCardState{ var ifConnectScuess = false.obs; + var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 + var addFingerprintProcessNumber = 0.obs; final lockId = 0.obs; final endDate = "".obs; diff --git a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart index 9d493da4..ab6f91e0 100644 --- a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart +++ b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_logic.dart @@ -40,6 +40,7 @@ class CardDetailLogic extends BaseGetXController{ case 0x00: //成功 print("${reply.commandType!.typeValue} 数据解析成功"); + dismissEasyLoading(); deletICCardData(); break; case 0x06: @@ -88,6 +89,16 @@ class CardDetailLogic extends BaseGetXController{ // 删除卡片 Future senderAddICCard() 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); @@ -113,6 +124,13 @@ class CardDetailLogic extends BaseGetXController{ privateKey:getPrivateKeyList, token: getTokenList, ); + } else if (deviceConnectionState == DeviceConnectionState.disconnected) { + dismissEasyLoading(); + cancelBlueConnetctToastTimer(); + state.sureBtnState.value = 0; + if(state.ifCurrentScreen.value == true){ + showBlueConnetctToast(); + } } }); } diff --git a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart index f1d8c633..48e828bd 100644 --- a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart +++ b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_page.dart @@ -1,11 +1,14 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import '../../../../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'; @@ -24,7 +27,7 @@ class CardDetailPage extends StatefulWidget { State createState() => _CardDetailPageState(); } -class _CardDetailPageState extends State { +class _CardDetailPageState extends State with RouteAware { final logic = Get.put(CardDetailLogic()); final state = Get.find().state; @@ -33,7 +36,7 @@ class _CardDetailPageState extends State { return Scaffold( backgroundColor: AppColors.mainBackgroundColor, appBar: TitleAppBar( - barTitle: "${TranslationLoader.lanKeys!.card!.tr}${TranslationLoader.lanKeys!.number!.tr}", + barTitle: "卡详情", haveBack: true, backgroundColor: AppColors.mainColor, // actionsList: [ @@ -359,4 +362,61 @@ class _CardDetailPageState extends State { ); } + @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/card/cardDetail/cardDetail_state.dart b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_state.dart index 3fd9f9d7..8c66242c 100644 --- a/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_state.dart +++ b/star_lock/lib/main/lockDetail/card/cardDetail/cardDetail_state.dart @@ -11,6 +11,9 @@ class CardDetailState{ final TextEditingController changeNameController = TextEditingController(); + var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 + var sureBtnState = 0.obs;// 0普通状态(可用) 1连接中(不可用) + final typeNumber = "".obs;// 指纹号 final typeName = "".obs;// 指纹名字 var effectiveDateTime = 0.obs;// 生效时间 diff --git a/star_lock/lib/main/lockDetail/card/cardList/cardList_logic.dart b/star_lock/lib/main/lockDetail/card/cardList/cardList_logic.dart index 857dcb11..98bfc85e 100644 --- a/star_lock/lib/main/lockDetail/card/cardList/cardList_logic.dart +++ b/star_lock/lib/main/lockDetail/card/cardList/cardList_logic.dart @@ -260,6 +260,10 @@ class CardListLogic extends BaseGetXController { // 删除卡片 Future senderAddICCard() async { + showEasyLoading(); + showBlueConnetctToastTimer(action: (){ + dismissEasyLoading(); + }); BlueManage().bludSendData(BlueManage().connectDeviceName, (DeviceConnectionState deviceConnectionState) async { if (deviceConnectionState == DeviceConnectionState.connected){ var publicKey = await Storage.getStringList(saveBluePublicKey); @@ -284,6 +288,12 @@ class CardListLogic extends BaseGetXController { privateKey:getPrivateKeyList, token: getTokenList, ); + } else if (deviceConnectionState == DeviceConnectionState.disconnected) { + dismissEasyLoading(); + cancelBlueConnetctToastTimer(); + if(state.ifCurrentScreen.value == true){ + showBlueConnetctToast(); + } } }); } @@ -364,7 +374,8 @@ class CardListLogic extends BaseGetXController { if(isDemoMode == false) { // senderQueryingFingerprintStatus(); // senderCheckingCardStatus(); - senderCheckingUserInfoCount(); + + // senderCheckingUserInfoCount(); } } 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 17110986..10a81197 100644 --- a/star_lock/lib/main/lockDetail/card/cardList/cardList_page.dart +++ b/star_lock/lib/main/lockDetail/card/cardList/cardList_page.dart @@ -2,11 +2,14 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import '../../../../appRouters.dart'; import '../../../../app_settings/app_colors.dart'; +import '../../../../blue/blue_manage.dart'; +import '../../../../tools/appRouteObserver.dart'; import '../../../../tools/dateTool.dart'; import '../../../../tools/keySearchWidget.dart'; import '../../../../tools/left_slide_actions.dart'; @@ -27,7 +30,7 @@ class CardListPage extends StatefulWidget { State createState() => _CardListPageState(); } -class _CardListPageState extends State { +class _CardListPageState extends State with RouteAware { final logic = Get.put(CardListLogic()); final state = Get.find().state; @@ -248,7 +251,7 @@ class _CardListPageState extends State { builder: (context) { return CupertinoAlertDialog( title: const Text("提示"), - content: const Text('重置后信息都会清除哦,确认要重置吗?'), + content: const Text('重置后该锁的卡都将被删除哦,确认要重置吗?'), actions: [ CupertinoDialogAction( child: Text(TranslationLoader.lanKeys!.cancel!.tr), @@ -273,4 +276,59 @@ class _CardListPageState extends State { }, ); } + + @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; + } + + /// 从下级返回 当前界面即将出现 + @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; + } } diff --git a/star_lock/lib/main/lockDetail/card/cardList/cardList_state.dart b/star_lock/lib/main/lockDetail/card/cardList/cardList_state.dart index 11c97626..0fd27fe3 100644 --- a/star_lock/lib/main/lockDetail/card/cardList/cardList_state.dart +++ b/star_lock/lib/main/lockDetail/card/cardList/cardList_state.dart @@ -16,6 +16,8 @@ class CardListState { final fingerprintItemListData = [].obs; final TextEditingController searchController = TextEditingController(); + var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 + CardListState() { Map map = Get.arguments; lockId.value = map["lockId"]; diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart index 24e179f1..62c34a19 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart @@ -59,6 +59,10 @@ class AddFingerprintLogic extends BaseGetXController { //成功 print("${reply.commandType!.typeValue} 数据解析成功"); state.ifConnectScuess.value = true; + + // 最大图片数 + state.maxRegCount.value = reply.data[10]; + // state.fingerprintNumber.value = reply.data.last.toString(); break; case 0x06: @@ -122,8 +126,11 @@ class AddFingerprintLogic extends BaseGetXController { Toast.show(msg: "添加失败"); Get.close(2); }else{ - state.addFingerprintProcessNumber.value++; - print("state.addFingerprintProcessNumber.value:${state.addFingerprintProcessNumber.value}"); + // state.addFingerprintProcessNumber.value++; + + // 当前注册数 + state.regIndex.value = reply.data[6]; + print("state.addFingerprintProcessNumber.value:${state.regIndex.value}"); } break; case 0x06: @@ -252,9 +259,12 @@ class AddFingerprintLogic extends BaseGetXController { // 添加指纹开始 Future senderAddFingerprint() async { + showBlueConnetctToastTimer(action: (){ + Get.close(1); + }); BlueManage().bludSendData(BlueManage().connectDeviceName, (DeviceConnectionState deviceConnectionState) async { - // print("66666666:$deviceConnectionState"); if (deviceConnectionState == DeviceConnectionState.connected){ + cancelBlueConnetctToastTimer(); var publicKey = await Storage.getStringList(saveBluePublicKey); List publicKeyDataList = changeStringListToIntList(publicKey!); @@ -280,8 +290,11 @@ class AddFingerprintLogic extends BaseGetXController { token: getTokenList, ); }else if (deviceConnectionState == DeviceConnectionState.disconnected){ - showBlueConnetctToast(); - Get.close(2); + if(state.ifCurrentScreen.value == true){ + showBlueConnetctToast(); + } + cancelBlueConnetctToastTimer(); + Get.close(1); } }); } diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_page.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_page.dart index 9a3a84f7..f49a568d 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_page.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_page.dart @@ -3,11 +3,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; -import '../../../../../appRouters.dart'; import '../../../../../app_settings/app_colors.dart'; -import '../../../../../tools/submitBtn.dart'; import '../../../../../tools/titleAppBar.dart'; import '../../../../../translations/trans_lib.dart'; +import '../../../../blue/blue_manage.dart'; +import '../../../../tools/appRouteObserver.dart'; import 'addFingerprint_logic.dart'; class AddFingerprintPage extends StatefulWidget { @@ -17,7 +17,7 @@ class AddFingerprintPage extends StatefulWidget { State createState() => _AddFingerprintPageState(); } -class _AddFingerprintPageState extends State { +class _AddFingerprintPageState extends State with RouteAware { final logic = Get.put(AddFingerprintLogic()); final state = Get.find().state; @@ -58,7 +58,7 @@ class _AddFingerprintPageState extends State { ), SizedBox(height: 10.h), Text( - "(${state.addFingerprintProcessNumber.value}/4)", + "(${state.regIndex.value}/${state.maxRegCount.value})", // TranslationLoader.lanKeys!.lightTouchScreenTip!.tr, textAlign: TextAlign.center, maxLines:null, @@ -89,7 +89,7 @@ class _AddFingerprintPageState extends State { height: 100.h, ), Obx(() => Image.asset( - getIconNumber(state.addFingerprintProcessNumber.value), + getIconNumber(state.regIndex.value), width: 185.w, height: 295.h, ),), @@ -138,4 +138,59 @@ class _AddFingerprintPageState extends State { } } + @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(); + BlueManage().stopScan(); + state.ifCurrentScreen.value = false; + } + + /// 从下级返回 当前界面即将出现 + @override + void didPopNext() { + super.didPopNext(); + print("lockSet===didPopNext"); + state.ifCurrentScreen.value = true; + } + + /// 进入下级界面 当前界面即将消失 + @override + void didPushNext() { + super.didPushNext(); + print("lockSet===didPushNext"); + logic.cancelBlueConnetctToastTimer(); + + + BlueManage().stopScan(); + state.ifCurrentScreen.value = false; + } + } diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_state.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_state.dart index 86f4ce26..9ed46f84 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_state.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_state.dart @@ -2,8 +2,12 @@ import 'package:get/get.dart'; class AddFingerprintState{ + var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 + var ifConnectScuess = false.obs; - var addFingerprintProcessNumber = 0.obs; + var maxRegCount = 0.obs;// 最大注册次数 + var regIndex = 0.obs;// 当前注册次数 + final lockId = 0.obs; final endDate = "".obs; final addType = "".obs; diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintType_logic.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintType_logic.dart index f2d16f53..a46671a7 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintType_logic.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintType_logic.dart @@ -2,6 +2,7 @@ import 'package:get/get.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import '../../../../appRouters.dart'; +import '../../../../network/api_repository.dart'; import '../../../../tools/toast.dart'; import 'addFingerprintType_state.dart'; @@ -87,4 +88,15 @@ class AddFingerprintTypeLogic extends BaseGetXController{ }); } + // 校验指纹名字是否重复 + void checkFingerprintNameDuplicated(String fingerprintName) async{ + var entity = await ApiRepository.to.checkFingerprintNameDuplicatedData( + lockId: state.lockId.value.toString(), + fingerprintName: fingerprintName, + ); + if(entity.errorCode!.codeIsSuccessful){ + addFingerprintsData(); + } + } + } \ No newline at end of file diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintType_page.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintType_page.dart index 5b88da2f..21240992 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintType_page.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/addFingerprintSeletType/addFingerprintType_page.dart @@ -201,8 +201,7 @@ class _AddFingerprintTypePageState extends State { Toast.show(msg: "请输入姓名"); return; } - - logic.addFingerprintsData(); + logic.checkFingerprintNameDuplicated(state.nameController.text); } else { // Get.toNamed(Routers.seletLockTypePage); Toast.show(msg: "演示模式"); diff --git a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_logic.dart b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_logic.dart index 85a3a7e2..c1980ad9 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_logic.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_logic.dart @@ -41,6 +41,8 @@ class FingerprintDetailLogic extends BaseGetXController{ case 0x00: //成功 print("${reply.commandType!.typeValue} 数据解析成功"); + state.sureBtnState.value = 0; + dismissEasyLoading(); deletFingerprintsData(); break; case 0x06: @@ -89,6 +91,16 @@ class FingerprintDetailLogic extends BaseGetXController{ // 删除指纹 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); @@ -114,6 +126,13 @@ class FingerprintDetailLogic extends BaseGetXController{ privateKey:getPrivateKeyList, token: getTokenList, ); + } else if (deviceConnectionState == DeviceConnectionState.disconnected) { + dismissEasyLoading(); + cancelBlueConnetctToastTimer(); + state.sureBtnState.value = 0; + if(state.ifCurrentScreen.value == true){ + showBlueConnetctToast(); + } } }); } diff --git a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart index a742b38f..e6f452f1 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart @@ -1,11 +1,14 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import '../../../../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'; @@ -23,7 +26,7 @@ class FingerprintDetailPage extends StatefulWidget { State createState() => _FingerprintDetailPageState(); } -class _FingerprintDetailPageState extends State { +class _FingerprintDetailPageState extends State with RouteAware { final logic = Get.put(FingerprintDetailLogic()); final state = Get.find().state; @@ -80,6 +83,7 @@ class _FingerprintDetailPageState extends State { // 限时 var data = await Get.toNamed(Routers.otherTypeKeyChangeDatePage, arguments: { "fingerprintItemData": state.fingerprintItemData.value, + "pushType": 1, }); if(data != null) { setState(() { @@ -321,4 +325,61 @@ class _FingerprintDetailPageState extends State { ); } + @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/fingerprint/fingerprintDetail/fingerprintDetail_state.dart b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_state.dart index a66a59b2..af8012c8 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_state.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_state.dart @@ -19,6 +19,9 @@ class FingerprintDetailState{ var addTime = 0.obs;// 添加时间 var keyId = 0.obs; + var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 + var sureBtnState = 0.obs;// 0普通状态(可用) 1连接中(不可用) + final isStressFingerprint = false.obs; FingerprintDetailState() { Map map = Get.arguments; diff --git a/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_logic.dart b/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_logic.dart index 71b540a2..7a9901d2 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_logic.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_logic.dart @@ -41,9 +41,8 @@ class FingerprintListLogic extends BaseGetXController{ }); } - // 添加指纹开始 + // 添加指纹开始---这里用作删除指纹 Future _replyAddFingerprintBegin(Reply reply) async { - int status = reply.data[2]; print("status:$status"); @@ -52,6 +51,7 @@ class FingerprintListLogic extends BaseGetXController{ //成功 print("${reply.commandType!.typeValue} 数据解析成功"); state.isDeletFingerprintData = false; + dismissEasyLoading(); deletAllFingerprintsData(); break; case 0x06: @@ -293,6 +293,10 @@ class FingerprintListLogic extends BaseGetXController{ // 删除指纹 Future senderAddFingerprint() async { + showEasyLoading(); + showBlueConnetctToastTimer(action: (){ + dismissEasyLoading(); + }); BlueManage().bludSendData(BlueManage().connectDeviceName, (DeviceConnectionState deviceConnectionState) async { if (deviceConnectionState == DeviceConnectionState.connected){ var publicKey = await Storage.getStringList(saveBluePublicKey); @@ -316,6 +320,12 @@ class FingerprintListLogic extends BaseGetXController{ privateKey:getPrivateKeyList, token: getTokenList, ); + } else if (deviceConnectionState == DeviceConnectionState.disconnected) { + dismissEasyLoading(); + cancelBlueConnetctToastTimer(); + if(state.ifCurrentScreen.value == true){ + showBlueConnetctToast(); + } } }); } @@ -395,7 +405,8 @@ class FingerprintListLogic extends BaseGetXController{ if(isDemoMode == false) { // senderQueryingFingerprintStatus(); // senderCheckingCardStatus(); - senderCheckingUserInfoCount(); + + // senderCheckingUserInfoCount(); } } 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 c6e862b3..b8f6ade3 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart @@ -2,11 +2,14 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import '../../../../appRouters.dart'; import '../../../../app_settings/app_colors.dart'; +import '../../../../blue/blue_manage.dart'; +import '../../../../tools/appRouteObserver.dart'; import '../../../../tools/dateTool.dart'; import '../../../../tools/keySearchWidget.dart'; import '../../../../tools/left_slide_actions.dart'; @@ -27,7 +30,7 @@ class FingerprintListPage extends StatefulWidget { State createState() => _FingerprintListPageState(); } -class _FingerprintListPageState extends State { +class _FingerprintListPageState extends State with RouteAware { final logic = Get.put(FingerprintListLogic()); final state = Get.find().state; @@ -247,7 +250,7 @@ class _FingerprintListPageState extends State { builder: (context) { return CupertinoAlertDialog( title: const Text("提示"), - content: const Text('重置后信息都会清除哦,确认要重置吗?'), + content: const Text('重置后,改为该锁的指纹都将被删除哦,确认要重置吗?'), actions: [ CupertinoDialogAction( child: Text(TranslationLoader.lanKeys!.cancel!.tr), @@ -272,4 +275,60 @@ class _FingerprintListPageState extends State { }, ); } + + @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; + } + + /// 从下级返回 当前界面即将出现 + @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; + } + } diff --git a/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_state.dart b/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_state.dart index e0d301fb..d2049fdd 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_state.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_state.dart @@ -17,6 +17,8 @@ class FingerprintListState{ final fingerprintItemListData = [].obs; final TextEditingController searchController = TextEditingController(); + var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 + FingerprintListState() { Map map = Get.arguments; lockId.value = map["lockId"]; diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart b/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart index 3b0af070..429901e9 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart @@ -2,13 +2,11 @@ import 'dart:async'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; import 'package:get/get.dart'; import 'package:star_lock/blue/io_protocol/io_deletUser.dart'; import 'package:star_lock/blue/io_type.dart'; -import '../../../../appRouters.dart'; import '../../../../blue/blue_manage.dart'; import '../../../../blue/io_protocol/io_factoryDataReset.dart'; import '../../../../blue/io_protocol/io_readSupportFunctionsNoParameters.dart'; diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart index d62981f1..8cc3bb94 100644 --- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart +++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart @@ -302,8 +302,8 @@ class LockDetailLogic extends BaseGetXController { case 0x00: //成功 print("添加用户数据解析成功"); - state.lockUserNo = reply.data[47] + 1; - // updateLockUserNo(); + state.lockUserNo = reply.data[47]; + _updateLockUserNo(); if (state.isOpenLockNeedOnline.value == 0) { openDoorAction(1); @@ -592,7 +592,7 @@ class LockDetailLogic extends BaseGetXController { } // 普通用户接收电子钥匙之后 更新锁用户NO - void updateLockUserNo() async { + void _updateLockUserNo() async { LockNetTokenEntity entity = await ApiRepository.to.updateLockUserNo( keyId: state.keyInfos.value.keyId.toString(), lockUserNo: state.lockUserNo.toString()); diff --git a/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_logic.dart b/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_logic.dart index 8168523b..5852300c 100644 --- a/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_logic.dart +++ b/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_logic.dart @@ -222,8 +222,7 @@ class LockOperatingRecordLogic extends BaseGetXController{ // 操作记录上传 void lockRecordUploadData(List list) async { - KeyOperationRecordEntity entity = - await ApiRepository.to.lockRecordUploadData( + KeyOperationRecordEntity entity = await ApiRepository.to.lockRecordUploadData( lockId: state.keyInfos.value.lockId.toString(), records: list); if (entity.errorCode!.codeIsSuccessful) { diff --git a/star_lock/lib/network/api.dart b/star_lock/lib/network/api.dart index 39efe95f..edd5cb62 100644 --- a/star_lock/lib/network/api.dart +++ b/star_lock/lib/network/api.dart @@ -105,15 +105,15 @@ abstract class Api { final String addFingerprintURL = '/fingerprint/add'; // 添加指纹 final String editFingerprintURL = '/fingerprint/changePeriod'; // 编辑指纹 final String deleteFingerprintURL = '/fingerprint/delete'; // 删除指纹 - final String updateFingerprintUserNoURL = - '/fingerprint/updateFingerprintUserNo'; // 更新指纹用户序号 + final String updateFingerprintUserNoURL = '/fingerprint/updateFingerprintUserNo'; // 更新指纹用户序号 + final String checkFingerprintNameURL = '/fingerprint/checkFingerprintName'; // 校验指纹名字是否存在 final String getICCardListURL = '/identityCard/list'; // IC卡列表 final String addICCardURL = '/identityCard/add'; // 添加IC卡 final String editICCardURL = '/identityCard/update'; // 编辑IC卡 final String deleteICCardURL = '/identityCard/delete'; // 删除IC卡 - final String updateICCardUserNoURL = - '/identityCard/updateCardUserNo'; // 更新ic卡用户序号 + final String updateICCardUserNoURL = '/identityCard/updateCardUserNo'; // 更新ic卡用户序号 + final String checkCardNameURL = '/identityCard/checkIdentityCardName'; // 校验卡名字是否存在 final String transferLockListURL = '/room/listForTransfer'; // 转移锁锁列表 final String transferLockConfirmURL = '/room/transferLockConfirm'; // 转移智能锁确认 diff --git a/star_lock/lib/network/api_provider.dart b/star_lock/lib/network/api_provider.dart index f48312cb..12143824 100644 --- a/star_lock/lib/network/api_provider.dart +++ b/star_lock/lib/network/api_provider.dart @@ -1004,6 +1004,17 @@ class ApiProvider extends BaseProvider { 'fingerprintUserNo': fingerprintUserNo })); + // 校验指纹名字是否重复 + Future checkFingerprintNameDuplicatedData( + String lockId, + String fingerprintName) => + post( + checkFingerprintNameURL.toUrl, + jsonEncode({ + 'lockId': lockId, + 'fingerprintName': fingerprintName + })); + // 获取IC卡列表 Future getICCardListData( String lockId, String pageNo, String pageSize, String searchStr) => @@ -1078,6 +1089,17 @@ class ApiProvider extends BaseProvider { jsonEncode( {'cardId': cardId, 'lockId': lockId, 'cardUserNo': cardUserNo})); + // 校验卡名字是否重复 + Future checkCardNameDuplicatedData( + String lockId, + String cardName) => + post( + checkCardNameURL.toUrl, + jsonEncode({ + 'lockId': lockId, + 'cardName': cardName + })); + // 获取转移锁锁列表 Future getTransferLockListData() => post(transferLockListURL.toUrl, jsonEncode({})); diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index e30190dc..1ab08a0c 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -1157,6 +1157,15 @@ class ApiRepository { return LoginEntity.fromJson(res.body); } + // 校验指纹名字是否重复 + Future checkFingerprintNameDuplicatedData( + {required String lockId, + required String fingerprintName}) async { + final res = await apiProvider.checkFingerprintNameDuplicatedData( + lockId, fingerprintName); + return LoginEntity.fromJson(res.body); + } + // 获取Ic卡列表 Future getICCardListData({ required String lockId, @@ -1222,6 +1231,15 @@ class ApiRepository { return LoginEntity.fromJson(res.body); } + // 校验卡名字是否重复 + Future checkCardNameDuplicatedData( + {required String lockId, + required String cardName}) async { + final res = await apiProvider.checkCardNameDuplicatedData( + lockId, cardName); + return LoginEntity.fromJson(res.body); + } + // 退出登录 Future userLogout() async { final res = await apiProvider.userLogout(); diff --git a/star_lock/lib/translations/translation_loader.dart b/star_lock/lib/translations/translation_loader.dart index 47e12bef..afdc737f 100644 --- a/star_lock/lib/translations/translation_loader.dart +++ b/star_lock/lib/translations/translation_loader.dart @@ -1,7 +1,5 @@ part of lib_trans; - - class TranslationLoader { static bool get isZh => Get.locale?.languageCode.toLowerCase() == 'zh';