提交修复卡、指纹模块bug

This commit is contained in:
魏少阳 2024-01-12 19:05:44 +08:00
parent 4041c9dd83
commit f618546d86
29 changed files with 553 additions and 49 deletions

View File

@ -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() {

View File

@ -200,7 +200,7 @@ class _AddCardPageState extends State<AddCardPage> {
return;
}
logic.addCardData();
logic.checkCardNameDuplicated(state.nameController.text);
} else {
// Get.toNamed(Routers.seletLockTypePage);
Toast.show(msg: "演示模式");

View File

@ -214,8 +214,13 @@ class AddICCardLogic extends BaseGetXController{
//
Future<void> 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<int> 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);
}
});
}

View File

@ -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<AddICCardPage> createState() => _AddICCardPageState();
}
class _AddICCardPageState extends State<AddICCardPage> {
class _AddICCardPageState extends State<AddICCardPage> with RouteAware {
final logic = Get.put(AddICCardLogic());
final state = Get.find<AddICCardLogic>().state;
@ -29,16 +31,18 @@ class _AddICCardPageState extends State<AddICCardPage> {
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<AddICCardPage> {
),
);
}
@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;
}
}

View File

@ -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;

View File

@ -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<void> 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();
}
}
});
}

View File

@ -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<CardDetailPage> createState() => _CardDetailPageState();
}
class _CardDetailPageState extends State<CardDetailPage> {
class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
final logic = Get.put(CardDetailLogic());
final state = Get.find<CardDetailLogic>().state;
@ -33,7 +36,7 @@ class _CardDetailPageState extends State<CardDetailPage> {
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<CardDetailPage> {
);
}
@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;
}
}

View File

@ -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;//

View File

@ -260,6 +260,10 @@ class CardListLogic extends BaseGetXController {
//
Future<void> 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();
}
}

View File

@ -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<CardListPage> createState() => _CardListPageState();
}
class _CardListPageState extends State<CardListPage> {
class _CardListPageState extends State<CardListPage> with RouteAware {
final logic = Get.put(CardListLogic());
final state = Get.find<CardListLogic>().state;
@ -248,7 +251,7 @@ class _CardListPageState extends State<CardListPage> {
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<CardListPage> {
},
);
}
@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;
}
}

View File

@ -16,6 +16,8 @@ class CardListState {
final fingerprintItemListData = <FingerprintItemData>[].obs;
final TextEditingController searchController = TextEditingController();
var ifCurrentScreen = true.obs; // ,
CardListState() {
Map map = Get.arguments;
lockId.value = map["lockId"];

View File

@ -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<void> 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<int> 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);
}
});
}

View File

@ -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<AddFingerprintPage> createState() => _AddFingerprintPageState();
}
class _AddFingerprintPageState extends State<AddFingerprintPage> {
class _AddFingerprintPageState extends State<AddFingerprintPage> with RouteAware {
final logic = Get.put(AddFingerprintLogic());
final state = Get.find<AddFingerprintLogic>().state;
@ -58,7 +58,7 @@ class _AddFingerprintPageState extends State<AddFingerprintPage> {
),
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<AddFingerprintPage> {
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<AddFingerprintPage> {
}
}
@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;
}
}

View File

@ -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;

View File

@ -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();
}
}
}

View File

@ -201,8 +201,7 @@ class _AddFingerprintTypePageState extends State<AddFingerprintTypePage> {
Toast.show(msg: "请输入姓名");
return;
}
logic.addFingerprintsData();
logic.checkFingerprintNameDuplicated(state.nameController.text);
} else {
// Get.toNamed(Routers.seletLockTypePage);
Toast.show(msg: "演示模式");

View File

@ -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<void> 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();
}
}
});
}

View File

@ -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<FingerprintDetailPage> createState() => _FingerprintDetailPageState();
}
class _FingerprintDetailPageState extends State<FingerprintDetailPage> {
class _FingerprintDetailPageState extends State<FingerprintDetailPage> with RouteAware {
final logic = Get.put(FingerprintDetailLogic());
final state = Get.find<FingerprintDetailLogic>().state;
@ -80,6 +83,7 @@ class _FingerprintDetailPageState extends State<FingerprintDetailPage> {
//
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<FingerprintDetailPage> {
);
}
@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;
}
}

View File

@ -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;

View File

@ -41,9 +41,8 @@ class FingerprintListLogic extends BaseGetXController{
});
}
//
// ---
Future<void> _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<void> 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();
}
}

View File

@ -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<FingerprintListPage> createState() => _FingerprintListPageState();
}
class _FingerprintListPageState extends State<FingerprintListPage> {
class _FingerprintListPageState extends State<FingerprintListPage> with RouteAware {
final logic = Get.put(FingerprintListLogic());
final state = Get.find<FingerprintListLogic>().state;
@ -247,7 +250,7 @@ class _FingerprintListPageState extends State<FingerprintListPage> {
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<FingerprintListPage> {
},
);
}
@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;
}
}

View File

@ -17,6 +17,8 @@ class FingerprintListState{
final fingerprintItemListData = <FingerprintItemData>[].obs;
final TextEditingController searchController = TextEditingController();
var ifCurrentScreen = true.obs; // ,
FingerprintListState() {
Map map = Get.arguments;
lockId.value = map["lockId"];

View File

@ -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';

View File

@ -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());

View File

@ -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) {

View File

@ -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'; //

View File

@ -1004,6 +1004,17 @@ class ApiProvider extends BaseProvider {
'fingerprintUserNo': fingerprintUserNo
}));
//
Future<Response> checkFingerprintNameDuplicatedData(
String lockId,
String fingerprintName) =>
post(
checkFingerprintNameURL.toUrl,
jsonEncode({
'lockId': lockId,
'fingerprintName': fingerprintName
}));
// IC卡列表
Future<Response> 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<Response> checkCardNameDuplicatedData(
String lockId,
String cardName) =>
post(
checkCardNameURL.toUrl,
jsonEncode({
'lockId': lockId,
'cardName': cardName
}));
//
Future<Response> getTransferLockListData() =>
post(transferLockListURL.toUrl, jsonEncode({}));

View File

@ -1157,6 +1157,15 @@ class ApiRepository {
return LoginEntity.fromJson(res.body);
}
//
Future<LoginEntity> checkFingerprintNameDuplicatedData(
{required String lockId,
required String fingerprintName}) async {
final res = await apiProvider.checkFingerprintNameDuplicatedData(
lockId, fingerprintName);
return LoginEntity.fromJson(res.body);
}
// Ic卡列表
Future<FingerprintListDataEntity> getICCardListData({
required String lockId,
@ -1222,6 +1231,15 @@ class ApiRepository {
return LoginEntity.fromJson(res.body);
}
//
Future<LoginEntity> checkCardNameDuplicatedData(
{required String lockId,
required String cardName}) async {
final res = await apiProvider.checkCardNameDuplicatedData(
lockId, cardName);
return LoginEntity.fromJson(res.body);
}
// 退
Future<LoginEntity> userLogout() async {
final res = await apiProvider.userLogout();

View File

@ -1,7 +1,5 @@
part of lib_trans;
class TranslationLoader {
static bool get isZh => Get.locale?.languageCode.toLowerCase() == 'zh';