1、修复锁锁分组模块bug

2、修复我的模块进入添加授权管理员红屏问题
3、修复我的模块锁用户管理模块问题
This commit is contained in:
魏少阳 2024-03-21 09:35:43 +08:00
parent 5354d1bd1f
commit dfee353519
30 changed files with 218 additions and 282 deletions

View File

@ -27,7 +27,6 @@ import 'package:star_lock/mine/about/webviewShow_page.dart';
import 'package:star_lock/mine/mine/safeVerify/safeVerify_page.dart';
import 'package:star_lock/mine/minePersonInfo/minePersonInfoEmail/mineBindPhoneOrEmail_page.dart';
import 'package:star_lock/mine/minePersonInfo/minePersonInfoViewSafetyProblem/minePersonInfoViewSafetyProblem_page.dart';
import 'package:star_lock/mine/mineSet/addAuthorizedAdministrator/addAuthorizedAdministrator_page.dart';
import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDetails/adminDetailChangeDate_page.dart';
import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart';
import 'package:star_lock/mine/mineSet/lockGroup/lockGroupList/lockGroupList_page.dart';
@ -163,6 +162,7 @@ import 'mine/mineSet/appUnlockNeedMobileNetworkingLock/appUnlockNeedMobileNetwor
import 'mine/mineSet/authorityManagement/authorityManagement_page.dart';
import 'mine/mineSet/authorityManagement/getDeviceList_page.dart';
import 'mine/mineSet/authorityManagement/getNameList_page.dart';
import 'mine/mineSet/authorizedAdministrator/addAuthorizedAdministrator/addAuthorizedAdministrator_page.dart';
import 'mine/mineSet/hideInvalidUnlockPermissions/hideInvalidUnlockPermissions_page.dart';
import 'mine/mineSet/lockGroup/groupEditLock/groupEditLock_page.dart';
import 'mine/mineSet/lockGroup/lockGroupDetailList/lockItemList_page.dart';
@ -180,7 +180,7 @@ import 'mine/valueAddedServices/valueAddedServicesNoteAndEmailDetail/valueAddedS
import 'mine/valueAddedServices/valueAddedServicesRealName/valueAddedServicesRealName_page.dart';
import 'mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesAddSMSTemplate/valueAddedServicesAddSMSTemplate_page.dart';
import 'mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesListSMSTemplate/valueAddedServicesListSMSTemplate_page.dart';
import 'mine/mineSet/authorizedAdministrator/authorizedAdministratorList_page.dart';
import 'mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_page.dart';
import 'starLockApplication/starLockApplication.dart';
abstract class Routers {

View File

@ -12,7 +12,6 @@ import '../../../../appRouters.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/EasyRefreshTool.dart';
import '../../../../tools/keySearchWidget.dart';
import '../../../../tools/left_slide_actions.dart';
import '../../../../tools/showIosTipView.dart';
import '../../../../tools/submitBtn.dart';
import '../../../../tools/titleAppBar.dart';
@ -198,29 +197,6 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
));
}
Widget _buildDeleteBtn(String keyId) {
return GestureDetector(
onTap: () {
// :
showIosTipViewDialog(context, keyId);
},
child: Container(
width: 60,
color: const Color(0xFFF20101),
alignment: Alignment.center,
child: const Text(
'删除',
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
color: Colors.white,
height: 1,
),
),
),
);
}
void showIosTipViewDialog(BuildContext context, String keyId) {
showDialog(
context: context,
@ -291,7 +267,6 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
//
keyStatus = '已过期';
}
return keyStatus;
}

View File

@ -1,7 +1,6 @@
import 'dart:async';
import 'dart:io';
// import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart';
import 'package:intl/intl.dart';

View File

@ -2,7 +2,6 @@ import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:intl/intl.dart';
@ -15,7 +14,6 @@ import '../../../common/XSConstantMacro/XSConstantMacro.dart';
import '../../../tools/appRouteObserver.dart';
import '../../../tools/dateTool.dart';
import '../../../tools/eventBusEventManage.dart';
import '../../../tools/jh_pop_menus.dart';
import '../../../tools/storage.dart';
import '../../../translations/trans_lib.dart';
import '../../lockMian/entity/lockListInfo_entity.dart';

View File

@ -312,7 +312,6 @@ class LockSetLogic extends BaseGetXController {
showEasyLoading();
showBlueConnetctToastTimer(isShowBlueConnetctToast: false, action: (){
dismissEasyLoading();
print("333333");
showDeletAlertTipDialog();
});
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
@ -337,7 +336,6 @@ class LockSetLogic extends BaseGetXController {
} else if (connectionState == BluetoothConnectionState.disconnected) {
dismissEasyLoading();
cancelBlueConnetctToastTimer();
print("444444");
if(state.ifCurrentScreen.value == true){
showDeletAlertTipDialog();
}
@ -440,7 +438,6 @@ class LockSetLogic extends BaseGetXController {
state.isOpenBlueBroadcast.value = state.lockSettingInfo.value.bluetoothBroadcast!;
state.isOpenExceptionWarnings.value = state.lockSettingInfo.value.bluetoothBroadcast!;
Get.log('请求成功333');
// await _readSupportFunctionsNoParameters(56);
// _readSupportFunctionsNoParameters(62);
}
@ -470,7 +467,7 @@ class LockSetLogic extends BaseGetXController {
eventBus.fire(RefreshLockListInfoDataEvent());
eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(0, state.lockSettingInfo.value.attendance!.toString()));
});
print("state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}");
// print("state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}");
}
}
@ -502,7 +499,7 @@ class LockSetLogic extends BaseGetXController {
showToast("设置成功",something: (){
eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(1, state.lockSettingInfo.value.appUnlockOnline!.toString()));
eventBus.fire(RefreshLockListInfoDataEvent());
print("state.lockSettingInfo.value.appUnlockOnline:${state.lockSettingInfo.value.appUnlockOnline}");
// print("state.lockSettingInfo.value.appUnlockOnline:${state.lockSettingInfo.value.appUnlockOnline}");
});
}
}
@ -844,7 +841,7 @@ class LockSetLogic extends BaseGetXController {
});
}else{
Future.delayed(const Duration(milliseconds: 200)).then((e) {
Get.back();
Get.close(2);
});
}
}

View File

@ -550,18 +550,18 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
// ),
// Obx(() =>
//
Visibility(
visible: true,
child: CommonItem(
leftTitel: TranslationLoader.lanKeys!.diagnose!.tr,
rightTitle: "",
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.toNamed(Routers.diagnosePage, arguments: {
'lockSetInfoData': state.lockSetInfoData.value
});
})),
// Visibility(
// visible: true,
// child: CommonItem(
// leftTitel: TranslationLoader.lanKeys!.diagnose!.tr,
// rightTitle: "",
// isHaveLine: true,
// isHaveDirection: true,
// action: () {
// Get.toNamed(Routers.diagnosePage, arguments: {
// 'lockSetInfoData': state.lockSetInfoData.value
// });
// })),
// ),
// Obx(() =>
//

View File

@ -111,6 +111,7 @@ class _AddLockPageState extends State<AddLockPage> with BaseWidget {
Permission.location,
].request();
print("statuses:$statuses");
//granted denied permanentlyDenied
if (statuses[Permission.bluetoothScan]!.isGranted &&
statuses[Permission.bluetoothConnect]!.isGranted &&

View File

@ -50,12 +50,10 @@ class _SelectLockTypePageState extends State<SelectLockTypePage>
lockTypeItem('images/lockType/lockType_NFCLock.png',
TranslationLoader.lanKeys!.NFCPassiveLock!.tr, () {
// Navigator.pushNamed(context, Routers.addLockPage);
getNearByLimits();
}),
lockTypeItem('images/lockType/lockType_padlock.png',
TranslationLoader.lanKeys!.padlock!.tr, () {
// Navigator.pushNamed(context, Routers.addLockPage);
getNearByLimits();
}),
lockTypeItem('images/lockType/lockType_safeLock.png',
TranslationLoader.lanKeys!.safeLock!.tr, () {
@ -81,12 +79,10 @@ class _SelectLockTypePageState extends State<SelectLockTypePage>
lockTypeItem('images/lockType/lockType_gatewayLock.png',
TranslationLoader.lanKeys!.gateway!.tr, () {
// Navigator.pushNamed(context, Routers.gatewayListPage);
getNearByLimits();
}),
lockTypeItem('images/lockType/lockType_camera.png', '网络摄像头',
() {
// Navigator.pushNamed(context, Routers.gatewayListPage);
getNearByLimits();
}),
],
),
@ -185,67 +181,6 @@ class _SelectLockTypePageState extends State<SelectLockTypePage>
);
}
//
void getNearByLimits() {
if (Platform.isIOS) {
Navigator.pushNamed(context, Routers.nearbyLockPage);
} else {
positionPermissionAlert();
// getMicrophonePermission().then((value) {
// if (value) {
// //
// Navigator.pushNamed(context, Routers.nearbyLockPage);
// } else {
// //
// openAppSettings(); //app系统设置
// }
// });
}
}
///
Future<bool> getMicrophonePermission() async {
// You can request multiple permissions at once.
Map<Permission, PermissionStatus> statuses = await [
Permission.bluetoothScan,
Permission.bluetoothConnect,
Permission.location,
].request();
//granted denied permanentlyDenied
if (statuses[Permission.bluetoothScan]!.isGranted &&
statuses[Permission.bluetoothConnect]!.isGranted &&
statuses[Permission.location]!.isGranted) {
return true;
}
return false;
}
Future<void> positionPermissionAlert() async {
//
if (Platform.isAndroid) {
AppFirstEnterHandle().getAppFirstEnter(context, isAgreePosition);
var getFlag = await Storage.getString(isAgreePosition);
if (getFlag == isAgreePosition) {
onPermissionPush();
}
} else {
onPermissionPush();
}
}
void onPermissionPush() {
getMicrophonePermission().then((value) {
if (value) {
//
Navigator.pushNamed(context, Routers.nearbyLockPage);
} else {
//
openAppSettings(); //app系统设置
}
});
}
void onShow() {}
void onHide() {}

View File

@ -1,14 +1,14 @@
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart';
import 'package:star_lock/mine/mineSet/addAuthorizedAdministrator/AddAuthorizedAdministrator_state.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/translations/trans_lib.dart';
import 'addAuthorizedAdministrator_state.dart';
class AddAuthorizedAdministratorLogic extends BaseGetXController {
final AddAuthorizedAdministratorState state =
AddAuthorizedAdministratorState();
AddAuthorizedAdministratorState state = AddAuthorizedAdministratorState();
//
Future<void> addAuthorizedAdminRequest() async {

View File

@ -1,5 +1,6 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
@ -23,9 +24,7 @@ class AddAuthorizedAdministratorPage extends StatefulWidget {
}
}
class _AddAuthorizedAdministratorPageState
extends State<AddAuthorizedAdministratorPage>
with SingleTickerProviderStateMixin {
class _AddAuthorizedAdministratorPageState extends State<AddAuthorizedAdministratorPage> with SingleTickerProviderStateMixin {
final logic = Get.put(AddAuthorizedAdministratorLogic());
final state = Get.find<AddAuthorizedAdministratorLogic>().state;
@ -244,25 +243,32 @@ class _AddAuthorizedAdministratorPageState
Widget getTFWidget(
bool isHaveBtn, String tfStr, TextEditingController editController) {
return SizedBox(
height: 50.h,
height: 65.h,
width: 300.w,
child: Row(
children: [
Expanded(
child: TextField(
controller: editController,
//
maxLines: 1,
// controller: _controller,
autofocus: false,
inputFormatters: <TextInputFormatter>[
FilteringTextInputFormatter.deny('\n'),
LengthLimitingTextInputFormatter(18),
],
style: TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor),
controller: editController,
// autofocus: false,
textAlign: TextAlign.end,
decoration: InputDecoration(
//
contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0),
// contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0),
hintText: tfStr,
hintStyle: TextStyle(fontSize: 22.sp),
//线
border: InputBorder.none,
focusedBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)),
disabledBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)),
enabledBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)),
border: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)),
contentPadding: const EdgeInsets.symmetric(vertical: 0),
),
),
),

View File

@ -1,8 +1,9 @@
import 'package:flutter/material.dart';
import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart';
import 'package:get/get.dart';
import '../../../main/lockMian/entity/lockListInfo_entity.dart';
import '../../../../main/lockMian/entity/lockListInfo_entity.dart';
class AddAuthorizedAdministratorState {
late TabController? tabController;
@ -34,7 +35,9 @@ class AddAuthorizedAdministratorState {
final keyInfo = LockListInfoItemEntity().obs;
AddAuthorizedAdministratorState() {
Map map = Get.arguments;
keyInfo.value = map["keyInfo"];
// Map map = Get.arguments;
// if ((map["keyInfo"] != null)) {
// keyInfo.value = map["keyInfo"];
// }
}
}

View File

@ -3,7 +3,7 @@ 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/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart';
import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdminListEntity.dart';
import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdminListEntity.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/pickers/pickers.dart';

View File

@ -9,7 +9,7 @@ import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDeta
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/jh_pop_menus.dart';
import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdminListEntity.dart';
import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdminListEntity.dart';
import '../../../../../appRouters.dart';
import '../../../../../app_settings/app_colors.dart';
@ -102,11 +102,11 @@ class _AdministratorDetailsPageState extends State<AdministratorDetailsPage> {
CommonItem(
leftTitel: TranslationLoader.lanKeys!.lock!.tr,
rightTitle: itemData.lockNum.toString(),
isHaveDirection: true,
isHaveDirection: false,
action: () {
//
Navigator.pushNamed(context, Routers.lockItemListPage,
arguments: {'lockList': lockItemList});
// Navigator.pushNamed(context, Routers.lockItemListPage,
// arguments: {'lockList': lockItemList});
}),
Container(height: 10.h),
CommonItem(

View File

@ -3,17 +3,17 @@ import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdminListEntity.dart';
import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdminListEntity.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/noData.dart';
import '../../../../appRouters.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/titleAppBar.dart';
import '../../../../translations/trans_lib.dart';
import '../../../tools/left_slide_actions.dart';
import '../../../tools/showIosTipView.dart';
import '../../../../../appRouters.dart';
import '../../../../../app_settings/app_colors.dart';
import '../../../../../tools/titleAppBar.dart';
import '../../../../../translations/trans_lib.dart';
import '../../../../tools/left_slide_actions.dart';
import '../../../../tools/showIosTipView.dart';
class AuthorizedAdministratorListPage extends StatefulWidget {
const AuthorizedAdministratorListPage({Key? key}) : super(key: key);

View File

@ -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/mine/mineSet/lockUserManage/expireLockList/expireLockListEntity.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockList_entity.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';

View File

@ -10,9 +10,13 @@ class GroupEditLockLogic extends BaseGetXController {
final GroupEditLockState state = GroupEditLockState();
//
Future<void> lockGroupAddLock(List lockId) async {
Future<void> lockGroupAddLock(List lockIds) async {
if(lockIds.isEmpty){
showToast("请选择锁");
return;
}
var entity = await ApiRepository.to.lockGroupAddLock(
lockIds: lockId,
lockIds: lockIds,
groupId: state.selectGroupListItem.keyGroupId!);
if (entity.errorCode!.codeIsSuccessful) {
showToast("添加成功");
@ -23,8 +27,12 @@ class GroupEditLockLogic extends BaseGetXController {
}
//
Future<void> lockGroupDeletLock(List lockId) async {
var entity = await ApiRepository.to.lockGroupDeletLock(lockIds: lockId);
Future<void> lockGroupDeletLock(List lockIds) async {
if(lockIds.isEmpty){
showToast("请选择锁");
return;
}
var entity = await ApiRepository.to.lockGroupDeletLock(lockIds: lockIds);
if (entity.errorCode!.codeIsSuccessful) {
showToast("删除成功");
eventBus.fire(LockGroupEditGroupLockRefreshEvent());

View File

@ -79,37 +79,37 @@ class _GroupEditLockPageState extends State<GroupEditLockPage> {
}
Widget _listItemView(LockListItem itemData) {
return Container(
color: Colors.white,
height: 80.h,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(width: 20.w,),
Image.asset('images/icon_lockGroup_item.png', width: 36, height: 36, fit: BoxFit.fill,),
SizedBox(width: 10.w,),
Text(
itemData.lockAlias ?? '',
style: TextStyle(fontSize: 24.sp),
),
Expanded(child: SizedBox(width: 10.w)),
GestureDetector(
child: Image.asset(
return GestureDetector(
onTap: (){
setState(() {
itemData.isChecked = !itemData.isChecked;
});
},
child: Container(
color: Colors.white,
height: 80.h,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(width: 20.w,),
Image.asset('images/icon_lockGroup_item.png', width: 36, height: 36, fit: BoxFit.fill,),
SizedBox(width: 10.w,),
Text(
itemData.lockAlias ?? '',
style: TextStyle(fontSize: 24.sp),
),
Expanded(child: SizedBox(width: 10.w)),
Image.asset(
itemData.isChecked
? 'images/icon_round_select.png'
: 'images/icon_round_unSelect.png',
width: 35.w,
height: 35.w,
),
onTap: (){
setState(() {
itemData.isChecked = !itemData.isChecked;
});
},
),
SizedBox(width: 30.w)
],
SizedBox(width: 30.w)
],
),
),
);
}

View File

@ -35,7 +35,7 @@ class _LockItemListPageState extends State<LockItemListPage> {
appBar: TitleAppBar(
barTitle: TranslationLoader.lanKeys!.lock!.tr,
haveBack: true,
actionsList: (lockList.isNotEmpty && groupListItem.groupType == 0) ? [
actionsList: (lockList.isNotEmpty && groupListItem.groupType != 0) ? [
IconButton(
icon: Image.asset(
'images/icon_bar_more.png',
@ -81,6 +81,7 @@ class _LockItemListPageState extends State<LockItemListPage> {
: Stack(
alignment: Alignment.center,
children: [
NoData(),
Positioned(
bottom: 350.h,
left: (ScreenUtil().screenWidth - 200.w) / 2,
@ -92,7 +93,6 @@ class _LockItemListPageState extends State<LockItemListPage> {
Get.toNamed(Routers.groupEditLockPage, arguments: {'groupListItem': groupListItem, 'ungrouped': ungrouped, 'type': 0});
},
)),
NoData(),
],
));
}

View File

@ -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/mine/mineSet/lockUserManage/expireLockList/expireLockListEntity.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockList_entity.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';

View File

@ -3,7 +3,7 @@ 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/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockListEntity.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockList_entity.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/pickers/pickers.dart';

View File

@ -0,0 +1,39 @@
import 'package:star_lock/tools/baseGetXController.dart';
import '../../../../network/api_repository.dart';
import 'expireLockList_entity.dart';
import 'expireLockList_state.dart';
class ExpireLockListLogic extends BaseGetXController{
ExpireLockListState state = ExpireLockListState();
//
Future<ExpireLockListEntity> expireLockListRequest() async {
ExpireLockListEntity entity = await ApiRepository.to.expireLockList(pageNo.toString(), pageSize.toString());
if(entity.errorCode!.codeIsSuccessful){
if (pageNo == 1) {
state.dataList.value = entity.data!.itemList!;
pageNo++;
} else {
if (entity.data!.itemList!.isNotEmpty) {
state.dataList.value.addAll(entity.data!.itemList!);
pageNo++;
}
}
}
return entity;
}
//使
String getExpireDateStr(ExpireLockItem itemData) {
DateTime startDateStr =
DateTime.fromMillisecondsSinceEpoch(itemData.startDate!);
DateTime endDateStr =
DateTime.fromMillisecondsSinceEpoch(itemData.endDate!);
String useDateStr =
'${startDateStr.toLocal().toString().substring(0, 10)}-${endDateStr.toLocal().toString().substring(0, 10)}';
return useDateStr;
}
}

View File

@ -1,14 +1,15 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockListEntity.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockList_entity.dart';
import '../../../../appRouters.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/EasyRefreshTool.dart';
import '../../../../tools/noData.dart';
import '../../../../tools/titleAppBar.dart';
import '../../../../translations/trans_lib.dart';
import 'expireLockList_logic.dart';
class ExpireLockListPage extends StatefulWidget {
const ExpireLockListPage({Key? key}) : super(key: key);
@ -18,13 +19,20 @@ class ExpireLockListPage extends StatefulWidget {
}
class _ExpireLockListPageState extends State<ExpireLockListPage> {
List<ExpireLockItem> dataList = [];
final logic = Get.put(ExpireLockListLogic());
final state = Get.find<ExpireLockListLogic>().state;
Future<void> getHttpData() async {
logic.expireLockListRequest().then((ExpireLockListEntity value){
if(mounted) setState(() {});
});
}
@override
void initState() {
super.initState();
expireLockListRequest();
getHttpData();
}
@override
@ -36,15 +44,26 @@ class _ExpireLockListPageState extends State<ExpireLockListPage> {
haveBack: true,
backgroundColor: AppColors.mainColor,
),
body: _buildMainUI(),
body: EasyRefreshTool(
onRefresh: (){
logic.pageNo = 1;
getHttpData();
},
onLoad: (){
getHttpData();
},
child: Obx(() => _buildMainUI())
),
);
}
Widget _buildMainUI() {
return ListView.separated(
itemCount: dataList.length,
return state.dataList.isEmpty
? NoData(noDataHeight: 1.sh - ScreenUtil().statusBarHeight - ScreenUtil().bottomBarHeight - 190.h - 64.h)
: ListView.separated(
itemCount: state.dataList.length,
itemBuilder: (c, index) {
ExpireLockItem indexEntity = dataList[index];
ExpireLockItem indexEntity = state.dataList[index];
return _electronicKeyItem(indexEntity);
},
separatorBuilder: (BuildContext context, int index) {
@ -56,30 +75,6 @@ class _ExpireLockListPageState extends State<ExpireLockListPage> {
);
}
//
Future<List<ExpireLockItem>> expireLockListRequest() async {
ExpireLockListEntity entity =
await ApiRepository.to.expireLockList('0', '1', '20');
if (entity.errorCode!.codeIsSuccessful) {
setState(() {
dataList = entity.data!.itemList!;
// dataList = entity.data!;
});
}
return dataList;
}
//使
String getExpireDateStr(ExpireLockItem itemData) {
DateTime startDateStr =
DateTime.fromMillisecondsSinceEpoch(itemData.startDate!);
DateTime endDateStr =
DateTime.fromMillisecondsSinceEpoch(itemData.endDate!);
String useDateStr =
'${startDateStr.toLocal().toString().substring(0, 10)}-${endDateStr.toLocal().toString().substring(0, 10)}';
return useDateStr;
}
Widget _electronicKeyItem(ExpireLockItem itemData) {
return GestureDetector(
onTap: () {
@ -130,7 +125,7 @@ class _ExpireLockListPageState extends State<ExpireLockListPage> {
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
getExpireDateStr(itemData),
logic.getExpireDateStr(itemData),
style: TextStyle(
fontSize: 18.sp,
color: AppColors.placeholderTextColor),

View File

@ -0,0 +1,9 @@
import 'package:get/get.dart';
import 'expireLockList_entity.dart';
class ExpireLockListState{
final dataList = <ExpireLockItem>[].obs;
}

View File

@ -2,7 +2,7 @@ import 'dart:async';
import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart';
import 'package:star_lock/login/login/entity/LoginEntity.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockListEntity.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockList_entity.dart';
import 'package:star_lock/mine/mineSet/mineSet/mineSet_state.dart';
import 'package:star_lock/tools/storage.dart';
import '../../../../network/api_repository.dart';

View File

@ -1,17 +1,19 @@
import 'package:star_lock/tools/baseGetXController.dart';
import '../../../../network/api_repository.dart';
import 'transferSmartLock_entity.dart';
import 'transferSmartLock_state.dart';
class TransferSmartLockLogic extends BaseGetXController{
TransferSmartLockState state = TransferSmartLockState();
//
Future<void> getTransferLockListData() async{
Future<TransferSmartLockEntity> getTransferLockListData() async{
var entity = await ApiRepository.to.getTransferLockListData();
if(entity.errorCode!.codeIsSuccessful){
state.transferSmartLockListData.value = entity.data!.list!;
}
return entity;
}
@override
@ -20,7 +22,7 @@ class TransferSmartLockLogic extends BaseGetXController{
super.onReady();
print("onReady()");
getTransferLockListData();
// getTransferLockListData();
}
@override

View File

@ -6,6 +6,8 @@ import '../../../../../appRouters.dart';
import '../../../../../app_settings/app_colors.dart';
import '../../../../../tools/titleAppBar.dart';
import '../../../../../translations/trans_lib.dart';
import '../../../../tools/EasyRefreshTool.dart';
import '../../../../tools/keySearchWidget.dart';
import '../../../../tools/noData.dart';
import 'transferSmartLock_entity.dart';
import 'transferSmartLock_logic.dart';
@ -21,6 +23,19 @@ class _TransferSmartLockPageState extends State<TransferSmartLockPage> {
final logic = Get.put(TransferSmartLockLogic());
final state = Get.find<TransferSmartLockLogic>().state;
Future<void> getHttpData() async {
logic.getTransferLockListData().then((TransferSmartLockEntity value){
setState(() {});
});
}
@override
void initState() {
super.initState();
getHttpData();
}
@override
Widget build(BuildContext context) {
return Scaffold(
@ -47,67 +62,24 @@ class _TransferSmartLockPageState extends State<TransferSmartLockPage> {
child: Text(state.isSelectAll == true ? TranslationLoader.lanKeys!.checkAll!.tr : TranslationLoader.lanKeys!.cancel!.tr, style: TextStyle(color: Colors.white, fontSize: 24.sp)))
],
),
body: Column(
children: [
_searchWidget(),
SizedBox(height: 10.h),
Expanded(child: _buildMainUI()),
SizedBox(height: 20.h),
_buildNextBtn(),
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");
body: EasyRefreshTool(
onRefresh: (){
getHttpData();
},
onEditingComplete: (){
print("onEditingComplete:");
},
onSubmitted: (value) async {
FocusScope.of(context).requestFocus(FocusNode());
await logic.getTransferLockListData();
if(state.searchController.text.isNotEmpty){
var contrList = <TransferSmartLockItemData>[];
for (var element in state.transferSmartLockListData.value) {
if(element.lockAlias!.contains(state.searchController.text)){
contrList.add(element);
}
}
state.transferSmartLockListData.value = contrList;
print("contrList:${contrList[0].lockAlias} state.transferSmartLockListData.value:${state.transferSmartLockListData.value[0].lockAlias}");
}
},
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,
),
),
child: Column(
children: [
// KeySearchWidget(
// editingController: state.searchController,
// onSubmittedAction: () {
// getHttpData();
// },
// ),
SizedBox(height: 10.h),
Expanded(child: _buildMainUI()),
SizedBox(height: 20.h),
_buildNextBtn(),
SizedBox(height: 64.h)
],
),
),
);

View File

@ -486,7 +486,7 @@ class ApiProvider extends BaseProvider {
Future<Response> lockGroupAddLock(List lockIds, int groupId) => post(
lockGroupAddLockURL.toUrl,
jsonEncode({
'lockId': lockIds,
'lockIds': lockIds,
'groupId': groupId,
}));
@ -494,7 +494,7 @@ class ApiProvider extends BaseProvider {
Future<Response> lockGroupDeletLock(List lockIds) => post(
lockGroupDeletLockURL.toUrl,
jsonEncode({
'lockId': lockIds,
'lockIds': lockIds,
}));
Future<Response> selectLockList() =>
@ -523,12 +523,10 @@ class ApiProvider extends BaseProvider {
'remoteEnable': remoteEnable
}));
Future<Response> expireLockList(
String operatorUid, String pageNo, String pageSize) =>
Future<Response> expireLockList(String pageNo, String pageSize) =>
post(
expireLockListURL.toUrl,
jsonEncode({
'operatorUid': operatorUid,
'pageNo': pageNo,
'pageSize': pageSize,
}));

View File

@ -16,8 +16,8 @@ import 'package:star_lock/mine/minePersonInfo/minePersonInfoSetSafetyProblem/min
import 'package:star_lock/mine/minePersonInfo/minePersonInfoViewSafetyProblem/minePersonInfoViewSafetyProblem_entity.dart';
import 'package:star_lock/mine/mineSet/appUnlockNeedMobileNetworkingLock/selectLockListEntity.dart';
import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetailEntity.dart';
import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdminListEntity.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockListEntity.dart';
import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdminListEntity.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockList_entity.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/lockUserManageList/keyListByUserEntity.dart';
import 'package:star_lock/mine/mineSet/mineSet/userSettingInfoEntity.dart';
import '../common/safetyVerification/entity/CheckSafetyVerificationEntity.dart';
@ -541,9 +541,8 @@ class ApiRepository {
}
//
Future<ExpireLockListEntity> expireLockList(
String operatorUid, String pageNo, String pageSize) async {
final res = await apiProvider.expireLockList(operatorUid, pageNo, pageSize);
Future<ExpireLockListEntity> expireLockList(String pageNo, String pageSize) async {
final res = await apiProvider.expireLockList(pageNo, pageSize);
return ExpireLockListEntity.fromJson(res.body);
}