修复卡、指纹、人脸、遥控、掌静脉、密码数据超过三页之后删除进入详情删除最后一条数据列表卡顿情况
This commit is contained in:
parent
496bf744e5
commit
33a1cecb8e
@ -131,8 +131,7 @@ class CardListLogic extends BaseGetXController {
|
||||
privateKey: getPrivateKeyList,
|
||||
token: getTokenList,
|
||||
isBeforeAddUser: false);
|
||||
} else if (deviceConnectionState ==
|
||||
BluetoothConnectionState.disconnected) {
|
||||
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
|
||||
dismissEasyLoading();
|
||||
cancelBlueConnetctToastTimer();
|
||||
if (state.ifCurrentScreen.value == true) {
|
||||
|
||||
@ -110,14 +110,16 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
|
||||
btnName:
|
||||
'添加卡'.tr,
|
||||
onClick: () async {
|
||||
final data = await Get.toNamed(Routers.addCardPage,
|
||||
await Get.toNamed(Routers.addCardPage,
|
||||
arguments: <String, int>{
|
||||
'lockId': state.lockId.value,
|
||||
'fromType': 1 // 1从添加钥匙列表进入 2从考勤添加员工入口进入
|
||||
});
|
||||
if (data != null) {
|
||||
})!.then((value) {
|
||||
getHttpData(isRefresh: true);
|
||||
}
|
||||
});
|
||||
// if (data != null) {
|
||||
// getHttpData(isRefresh: true);
|
||||
// }
|
||||
},
|
||||
),
|
||||
SizedBox(
|
||||
@ -174,13 +176,13 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
|
||||
fingerprintItemData.cardName!,
|
||||
logic.getKeyType(fingerprintItemData),
|
||||
logic.getKeyDateType(fingerprintItemData), () async {
|
||||
final data = await Get.toNamed(Routers.cardDetailPage,
|
||||
arguments: <String, FingerprintItemData>{
|
||||
'fingerprintItemData': fingerprintItemData,
|
||||
});
|
||||
if (data != null) {
|
||||
getHttpData(isRefresh: true);
|
||||
}
|
||||
await Get.toNamed(Routers.cardDetailPage,
|
||||
arguments: <String, FingerprintItemData>{
|
||||
'fingerprintItemData': fingerprintItemData,
|
||||
})!.then((value) => getHttpData(isRefresh: true));
|
||||
// if (data != null) {
|
||||
// getHttpData(isRefresh: true);
|
||||
// }
|
||||
}),
|
||||
);
|
||||
},
|
||||
|
||||
@ -298,7 +298,11 @@ class FaceListLogic extends BaseGetXController {
|
||||
}
|
||||
|
||||
// 获取人脸列表
|
||||
Future<FingerprintListDataEntity> getFaceListData() async {
|
||||
Future<FingerprintListDataEntity> getFaceListData({required bool isRefresh}) async {
|
||||
if (isRefresh) {
|
||||
state.faceItemListData.clear();
|
||||
pageNo = 1;
|
||||
}
|
||||
final FingerprintListDataEntity entity = await ApiRepository.to.getFaceListData(
|
||||
lockId: state.lockId.value.toString(),
|
||||
pageNo: pageNo.toString(),
|
||||
@ -307,21 +311,27 @@ class FaceListLogic extends BaseGetXController {
|
||||
);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
// state.faceItemListData.value = entity.data!.list!;
|
||||
if (pageNo == 1) {
|
||||
state.faceItemListData.value = entity.data!.list!;
|
||||
// if (pageNo == 1) {
|
||||
// state.faceItemListData.value = entity.data!.list!;
|
||||
// pageNo++;
|
||||
// } else {
|
||||
// if (entity.data!.list!.isNotEmpty) {
|
||||
// state.faceItemListData.value.addAll(entity.data!.list!);
|
||||
// pageNo++;
|
||||
// }
|
||||
// }
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
// 更新数据列表
|
||||
state.faceItemListData.addAll(entity.data!.list!);
|
||||
// 更新页码
|
||||
pageNo++;
|
||||
} else {
|
||||
if (entity.data!.list!.isNotEmpty) {
|
||||
state.faceItemListData.value.addAll(entity.data!.list!);
|
||||
pageNo++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return entity;
|
||||
}
|
||||
|
||||
// 删除的人脸
|
||||
void deletFacesData() async {
|
||||
Future<void> deletFacesData() async {
|
||||
String faceId = '';
|
||||
if (state.isDeletAll == false) {
|
||||
faceId = state.deletKeyID;
|
||||
@ -331,9 +341,8 @@ class FaceListLogic extends BaseGetXController {
|
||||
lockId: state.lockId.value,
|
||||
);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
showToast('删除成功', something: (){
|
||||
pageNo = 1;
|
||||
getFaceListData();
|
||||
showToast('删除成功'.tr, something: (){
|
||||
getFaceListData(isRefresh: true);
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -350,9 +359,8 @@ class FaceListLogic extends BaseGetXController {
|
||||
lockId: state.lockId.value,
|
||||
);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
showToast('重置成功', something: (){
|
||||
pageNo = 1;
|
||||
getFaceListData();
|
||||
showToast('重置成功'.tr, something: (){
|
||||
getFaceListData(isRefresh: true);
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -387,8 +395,7 @@ class FaceListLogic extends BaseGetXController {
|
||||
late StreamSubscription _teamEvent;
|
||||
void _initRefreshAction() {
|
||||
_teamEvent = eventBus.on<OtherTypeRefreshListEvent>().listen((OtherTypeRefreshListEvent event) {
|
||||
pageNo = 1;
|
||||
getFaceListData();
|
||||
getFaceListData(isRefresh: true);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -31,10 +31,10 @@ class _FaceListPageState extends State<FaceListPage> with RouteAware {
|
||||
final FaceListLogic logic = Get.put(FaceListLogic());
|
||||
final FaceListState state = Get.find<FaceListLogic>().state;
|
||||
|
||||
Future<void> getHttpData() async {
|
||||
Future<void> getHttpData({required bool isRefresh}) async {
|
||||
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
|
||||
if (isDemoMode == false) {
|
||||
logic.getFaceListData().then((FingerprintListDataEntity value) {
|
||||
logic.getFaceListData(isRefresh: isRefresh).then((FingerprintListDataEntity value) {
|
||||
if (mounted) {
|
||||
setState(() {});
|
||||
}
|
||||
@ -46,7 +46,7 @@ class _FaceListPageState extends State<FaceListPage> with RouteAware {
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
getHttpData();
|
||||
getHttpData(isRefresh: true);
|
||||
}
|
||||
|
||||
@override
|
||||
@ -92,19 +92,17 @@ class _FaceListPageState extends State<FaceListPage> with RouteAware {
|
||||
),
|
||||
body: EasyRefreshTool(
|
||||
onRefresh: () {
|
||||
logic.pageNo = 1;
|
||||
getHttpData();
|
||||
getHttpData(isRefresh: true);
|
||||
},
|
||||
onLoad: () {
|
||||
getHttpData();
|
||||
getHttpData(isRefresh: false);
|
||||
},
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
KeySearchWidget(
|
||||
editingController: state.searchController,
|
||||
onSubmittedAction: () {
|
||||
logic.pageNo = 1;
|
||||
getHttpData();
|
||||
getHttpData(isRefresh: true);
|
||||
},
|
||||
),
|
||||
SizedBox(
|
||||
@ -115,15 +113,12 @@ class _FaceListPageState extends State<FaceListPage> with RouteAware {
|
||||
btnName:
|
||||
'添加人脸'.tr,
|
||||
onClick: () async {
|
||||
final data = await Get.toNamed(Routers.addFaceTypePage,
|
||||
arguments: <String, int>{
|
||||
await Get.toNamed(Routers.addFaceTypePage, arguments: <String, int>{
|
||||
'lockId': state.lockId.value,
|
||||
'fromType': 1 // 1从添加钥匙列表进入 2从考勤添加员工入口进入
|
||||
});
|
||||
if (data != null) {
|
||||
logic.pageNo = 1;
|
||||
getHttpData();
|
||||
}
|
||||
})!.then((value) {
|
||||
getHttpData(isRefresh: true);
|
||||
});
|
||||
},
|
||||
),
|
||||
SizedBox(height: 64.h)
|
||||
@ -158,14 +153,10 @@ class _FaceListPageState extends State<FaceListPage> with RouteAware {
|
||||
getFaceItemData.faceName!,
|
||||
logic.getKeyType(getFaceItemData),
|
||||
logic.getKeyDateType(getFaceItemData), () async {
|
||||
final data = await Get.toNamed(Routers.faceDetailPage,
|
||||
await Get.toNamed(Routers.faceDetailPage,
|
||||
arguments: <String, FingerprintItemData>{
|
||||
'faceItemData': getFaceItemData,
|
||||
});
|
||||
if (data != null) {
|
||||
logic.pageNo = 1;
|
||||
getHttpData();
|
||||
}
|
||||
})!.then((value) => getHttpData(isRefresh: true));
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@ -328,8 +328,7 @@ class FingerprintListLogic extends BaseGetXController {
|
||||
*/
|
||||
|
||||
// 获取指纹列表
|
||||
Future<FingerprintListDataEntity> getFingerprintsListData(
|
||||
{required bool isRefresh}) async {
|
||||
Future<FingerprintListDataEntity> getFingerprintsListData({required bool isRefresh}) async {
|
||||
// 如果是下拉刷新,清空已有数据
|
||||
if (isRefresh) {
|
||||
state.fingerprintItemListData.clear();
|
||||
|
||||
@ -113,14 +113,14 @@ class _FingerprintListPageState extends State<FingerprintListPage>
|
||||
btnName:
|
||||
'添加指纹'.tr,
|
||||
onClick: () async {
|
||||
final data = await Get.toNamed(Routers.addFingerprintTypePage,
|
||||
await Get.toNamed(Routers.addFingerprintTypePage,
|
||||
arguments: <String, int>{
|
||||
'lockId': state.lockId.value,
|
||||
'fromType': 1 // 1从添加钥匙列表进入 2从考勤添加员工入口进入
|
||||
});
|
||||
if (data != null) {
|
||||
getHttpData(isRefresh: true);
|
||||
}
|
||||
})!.then((value) => getHttpData(isRefresh: true));
|
||||
// if (data != null) {
|
||||
// getHttpData(isRefresh: true);
|
||||
// }
|
||||
},
|
||||
),
|
||||
SizedBox(height: 64.h)
|
||||
@ -175,23 +175,21 @@ class _FingerprintListPageState extends State<FingerprintListPage>
|
||||
fingerprintItemData.fingerprintName!,
|
||||
logic.getKeyType(fingerprintItemData),
|
||||
logic.getKeyDateType(fingerprintItemData), () async {
|
||||
final data = await Get.toNamed(
|
||||
Routers.fingerprintDetailPage,
|
||||
arguments: <String, FingerprintItemData>{
|
||||
await Get.toNamed(Routers.fingerprintDetailPage, arguments: <String, FingerprintItemData>{
|
||||
'fingerprintItemData': fingerprintItemData,
|
||||
});
|
||||
if (data == 'deletScuess') {
|
||||
state.fingerprintItemListData.removeWhere(
|
||||
(FingerprintItemData item) =>
|
||||
item.fingerprintId ==
|
||||
fingerprintItemData.fingerprintId!);
|
||||
setState(() {});
|
||||
} else if (data != null) {
|
||||
logic
|
||||
.refreshIndividualKeys(
|
||||
fingerprintId: fingerprintItemData.fingerprintId!)
|
||||
.then((dynamic value) => setState(() {}));
|
||||
}
|
||||
})!.then((value) {
|
||||
getHttpData(isRefresh: true);
|
||||
});
|
||||
// if (data == 'deletScuess') {
|
||||
// // state.fingerprintItemListData.removeWhere((FingerprintItemData item) => item.fingerprintId == fingerprintItemData.fingerprintId!);
|
||||
// // setState(() {});
|
||||
// getHttpData(isRefresh: true);
|
||||
// } else if (data != null) {
|
||||
// logic
|
||||
// .refreshIndividualKeys(
|
||||
// fingerprintId: fingerprintItemData.fingerprintId!)
|
||||
// .then((dynamic value) => setState(() {}));
|
||||
// }
|
||||
}),
|
||||
);
|
||||
},
|
||||
|
||||
@ -1227,7 +1227,7 @@ class _LockDetailPageState extends State<LockDetailPage>
|
||||
fit: BoxFit.fitWidth),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10.w),
|
||||
SizedBox(height: 5.w),
|
||||
Expanded(
|
||||
child: Text(name,
|
||||
style: TextStyle(
|
||||
@ -1260,7 +1260,7 @@ class _LockDetailPageState extends State<LockDetailPage>
|
||||
fit: BoxFit.fitWidth),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 20.h),
|
||||
SizedBox(height: 5.h),
|
||||
Text(
|
||||
name,
|
||||
style: TextStyle(
|
||||
|
||||
@ -108,13 +108,13 @@ class UploadElectricQuantityLogic extends BaseGetXController {
|
||||
|
||||
// 电池剩余电量
|
||||
final int battRemCap = reply.data[132];
|
||||
state.lockSetInfoData.value.lockBasicInfo!.electricQuantity =
|
||||
battRemCap;
|
||||
state.battRemCap.value = battRemCap>100?100:battRemCap;
|
||||
state.lockSetInfoData.value.lockBasicInfo!.electricQuantity = state.battRemCap.value;
|
||||
|
||||
// 备用电池剩余电量
|
||||
final int battRemCapStandby = reply.data[133];
|
||||
state.lockSetInfoData.value.lockBasicInfo!.electricQuantityStandby =
|
||||
battRemCapStandby;
|
||||
state.battRemCapStandby.value = battRemCapStandby>100?100:battRemCapStandby;
|
||||
state.lockSetInfoData.value.lockBasicInfo!.electricQuantityStandby = state.battRemCapStandby.value;
|
||||
|
||||
uploadElectricQuantityRequest(
|
||||
battRemCap.toString(), battRemCapStandby.toString());
|
||||
|
||||
@ -57,23 +57,23 @@ class _UploadElectricQuantityPageState extends State<UploadElectricQuantityPage>
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Text(
|
||||
"${"电池1".tr}${TranslationLoader.lanKeys!.electricQuantity!.tr}:${state.lockBasicInfo.value.electricQuantity ?? ""}%",
|
||||
"${"电池1".tr}${TranslationLoader.lanKeys!.electricQuantity!.tr}:${state.battRemCap.value}%",
|
||||
style: TextStyle(fontSize: 20.sp),
|
||||
)),
|
||||
],
|
||||
)),
|
||||
Visibility(
|
||||
visible: (state.lockSetInfoData.value.lockFeature ?? LockFeature()).isSupportBackupBattery == 1,
|
||||
child: Row(
|
||||
child: Obx(() => Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Text(
|
||||
"${"电池2".tr}${TranslationLoader.lanKeys!.electricQuantity!.tr}:${state.lockBasicInfo.value.electricQuantityStandby ?? ""}%",
|
||||
"${"电池2".tr}${TranslationLoader.lanKeys!.electricQuantity!.tr}:${state.battRemCapStandby.value}%",
|
||||
style: TextStyle(fontSize: 20.sp),
|
||||
)),
|
||||
],
|
||||
),
|
||||
)),
|
||||
),
|
||||
SizedBox(height: 10.h),
|
||||
Obx(() => Row(
|
||||
|
||||
@ -12,12 +12,16 @@ class UploadElectricQuantityState {// 0普通状态可用 1不可用
|
||||
if(lockSetInfoData.value.lockBasicInfo!=null){
|
||||
lockBasicInfo.value = lockSetInfoData.value.lockBasicInfo!;
|
||||
uploadElectricQuantityDate.value = lockSetInfoData.value.lockBasicInfo!.electricQuantityDate!;
|
||||
battRemCap.value = lockSetInfoData.value.lockBasicInfo!.electricQuantity ?? 0;
|
||||
battRemCapStandby.value = lockSetInfoData.value.lockBasicInfo!.electricQuantityStandby ?? 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
Rx<LockSetInfoData> lockSetInfoData = LockSetInfoData().obs;
|
||||
Rx<LockBasicInfo> lockBasicInfo = LockBasicInfo().obs;
|
||||
RxInt uploadElectricQuantityDate = 0.obs;
|
||||
RxInt battRemCap = 0.obs;
|
||||
RxInt battRemCapStandby = 0.obs;
|
||||
int differentialTime = 0;
|
||||
|
||||
RxBool ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示
|
||||
|
||||
@ -108,13 +108,13 @@ class _PalmListPageState extends State<PalmListPage> with RouteAware {
|
||||
AddBottomWhiteBtn(
|
||||
btnName: '添加掌静脉',
|
||||
onClick: () async {
|
||||
final data = await Get.toNamed(Routers.addPalmTypePage, arguments: <String, int>{
|
||||
await Get.toNamed(Routers.addPalmTypePage, arguments: <String, int>{
|
||||
'lockId': state.lockId.value,
|
||||
'fromType': 1 // 1从添加钥匙列表进入 2从考勤添加员工入口进入
|
||||
});
|
||||
if (data != null) {
|
||||
getHttpData(isRefresh: true);
|
||||
}
|
||||
})!.then((value) => getHttpData(isRefresh: true));
|
||||
// if (data != null) {
|
||||
// getHttpData(isRefresh: true);
|
||||
// }
|
||||
},
|
||||
),
|
||||
SizedBox(
|
||||
@ -171,13 +171,13 @@ class _PalmListPageState extends State<PalmListPage> with RouteAware {
|
||||
fingerprintItemData.palmVeinName!,
|
||||
logic.getKeyType(fingerprintItemData),
|
||||
logic.getKeyDateType(fingerprintItemData), () async {
|
||||
final data = await Get.toNamed(Routers.palmDetailPage,
|
||||
final data = await Get.toNamed(Routers.palmDetailPage,
|
||||
arguments: <String, FingerprintItemData>{
|
||||
'fingerprintItemData': fingerprintItemData,
|
||||
});
|
||||
if (data != null) {
|
||||
getHttpData(isRefresh: true);
|
||||
}
|
||||
})!.then((value) => getHttpData(isRefresh: true));
|
||||
// if (data != null) {
|
||||
// getHttpData(isRefresh: true);
|
||||
// }
|
||||
}),
|
||||
);
|
||||
},
|
||||
|
||||
@ -112,12 +112,11 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage>
|
||||
),
|
||||
AddBottomWhiteBtn(
|
||||
btnName: '获取密码'.tr,
|
||||
onClick: () {
|
||||
Navigator.pushNamed(
|
||||
context, Routers.passwordKeyPerpetualPage,
|
||||
onClick: () async {
|
||||
await Get.toNamed(Routers.passwordKeyPerpetualPage,
|
||||
arguments: <String, LockListInfoItemEntity>{
|
||||
'keyInfo': state.keyInfo.value
|
||||
}).then((Object? val) {
|
||||
})!.then((Object? val) {
|
||||
if (val != null) {
|
||||
getHttpData(isRefresh: true);
|
||||
}
|
||||
@ -179,25 +178,26 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage>
|
||||
],
|
||||
),
|
||||
child: _electronicKeyItem(index, 'images/icon_password.png',
|
||||
passwordKeyListItem.keyboardPwdName!, useDateStr, () {
|
||||
Navigator.pushNamed(context, Routers.passwordKeyDetailPage,
|
||||
passwordKeyListItem.keyboardPwdName!, useDateStr, () async {
|
||||
await Get.toNamed(Routers.passwordKeyDetailPage,
|
||||
arguments: <String, PasswordKeyListItem>{
|
||||
'itemData': passwordKeyListItem
|
||||
}).then((Object? val) {
|
||||
if (val == 'deletScuess') {
|
||||
state.itemDataList.removeWhere(
|
||||
(PasswordKeyListItem item) =>
|
||||
item.keyboardPwdId ==
|
||||
passwordKeyListItem.keyboardPwdId!);
|
||||
setState(() {});
|
||||
} else if (val != null) {
|
||||
logic
|
||||
.refreshIndividualKeys(
|
||||
lockId: passwordKeyListItem.lockId!,
|
||||
keyboardPwdId:
|
||||
passwordKeyListItem.keyboardPwdId!)
|
||||
.then((dynamic value) => setState(() {}));
|
||||
}
|
||||
})!.then((Object? val) {
|
||||
getHttpData(isRefresh: true);
|
||||
// if (val == 'deletScuess') {
|
||||
// state.itemDataList.removeWhere(
|
||||
// (PasswordKeyListItem item) =>
|
||||
// item.keyboardPwdId ==
|
||||
// passwordKeyListItem.keyboardPwdId!);
|
||||
// setState(() {});
|
||||
// } else if (val != null) {
|
||||
// logic
|
||||
// .refreshIndividualKeys(
|
||||
// lockId: passwordKeyListItem.lockId!,
|
||||
// keyboardPwdId:
|
||||
// passwordKeyListItem.keyboardPwdId!)
|
||||
// .then((dynamic value) => setState(() {}));
|
||||
// }
|
||||
});
|
||||
}),
|
||||
);
|
||||
|
||||
@ -110,14 +110,14 @@ class _RemoteControlListPageState extends State<RemoteControlListPage> with Rout
|
||||
btnName:
|
||||
'添加遥控',
|
||||
onClick: () async {
|
||||
final data = await Get.toNamed(Routers.addRemoteControlTypePage,
|
||||
await Get.toNamed(Routers.addRemoteControlTypePage,
|
||||
arguments: <String, int>{
|
||||
'lockId': state.lockId.value,
|
||||
'fromType': 1 // 1从添加钥匙列表进入 2从考勤添加员工入口进入
|
||||
});
|
||||
if (data != null) {
|
||||
getHttpData(isRefresh: true);
|
||||
}
|
||||
})!.then((value) => getHttpData(isRefresh: true));
|
||||
// if (data != null) {
|
||||
// getHttpData(isRefresh: true);
|
||||
// }
|
||||
},
|
||||
),
|
||||
SizedBox(
|
||||
@ -172,13 +172,13 @@ class _RemoteControlListPageState extends State<RemoteControlListPage> with Rout
|
||||
fingerprintItemData.remoteName!,
|
||||
logic.getKeyType(fingerprintItemData),
|
||||
logic.getKeyDateType(fingerprintItemData), () async {
|
||||
final data = await Get.toNamed(Routers.remoteControlDetailPage,
|
||||
await Get.toNamed(Routers.remoteControlDetailPage,
|
||||
arguments: <String, FingerprintItemData>{
|
||||
'fingerprintItemData': fingerprintItemData,
|
||||
});
|
||||
if (data != null) {
|
||||
})!.then((data) {
|
||||
getHttpData(isRefresh: true);
|
||||
}
|
||||
});
|
||||
|
||||
}),
|
||||
);
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user