1,更多设置页面新增状态管理

2,修复退出登录切换账号页面报错问题
This commit is contained in:
Daisy 2023-09-26 11:47:36 +08:00
parent e53c274e09
commit 073a7ad38b
6 changed files with 324 additions and 294 deletions

View File

@ -1,11 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import '../../tools/store_service.dart'; import '../../tools/store_service.dart';
class StarLockLoginState { class StarLockLoginState {
var passwordShow = true.obs; var passwordShow = true.obs;
var agree = false.obs; var agree = false.obs;
@ -23,8 +21,7 @@ class StarLockLoginState{
} }
void onClose() { void onClose() {
emailOrPhoneController.dispose(); // emailOrPhoneController.dispose();
pwdController.dispose(); // pwdController.dispose();
} }
} }

View File

@ -0,0 +1,86 @@
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/mineSet/mineSet_state.dart';
import 'package:star_lock/tools/storage.dart';
import '../../../../network/api_repository.dart';
import '../../../../tools/baseGetXController.dart';
class MineSetLogic extends BaseGetXController {
final MineSetState state = MineSetState();
//
Future<void> userSettingsInfoRequest() async {
var entity = await ApiRepository.to.userSettingsInfo();
if (entity.errorCode!.codeIsSuccessful) {
state.userInfoData.value = entity.data!;
state.userSetting.value = entity.data!.userSettings!;
state.lockScreen.value = entity.data!.userSettings!.lockScreen!;
state.hideExpiredAccessFlag.value =
entity.data!.userSettings!.hideExpiredAccessFlag!;
//
if (entity.data!.alertMode == 1) {
state.isPrompTone.value = true;
} else {
state.isPrompTone.value = false;
}
//
if (entity.data!.userSettings!.touchUnlockFlag! == 1) {
state.isTouchUnlock.value = true;
} else {
state.isTouchUnlock.value = false;
}
}
}
//
Future<void> updatePrompToneRequest() async {
ExpireLockListEntity entity = await ApiRepository.to
.setAlertMode('1', state.isPrompTone.value == true ? '1' : '2');
if (entity.errorCode!.codeIsSuccessful) {
userSettingsInfoRequest();
}
}
//退
Future<void> userLogoutRequest() async {
LoginEntity entity = await ApiRepository.to.userLogout();
if (entity.errorCode!.codeIsSuccessful) {
logOut();
Get.offNamedUntil(Routers.starLockLoginPage, (route) => false);
}
}
///退
void logOut() async {
await Storage.setString('userLoginData', '');
}
//
Future<void> updateTouchUnlockRequest() async {
ExpireLockListEntity entity = await ApiRepository.to
.setTouchUnlockFlag(state.isTouchUnlock.value == true ? '1' : '2');
if (entity.errorCode!.codeIsSuccessful) {
userSettingsInfoRequest();
}
}
@override
void onReady() {
// TODO: implement onReady
super.onReady();
}
@override
void onInit() {
// TODO: implement onInit
super.onInit();
}
@override
void onClose() {
// TODO: implement onClose
}
}

View File

@ -2,18 +2,13 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/login/login/entity/LoginEntity.dart'; import 'package:star_lock/mine/mineSet/mineSet/mineSet_logic.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 '../../../appRouters.dart'; import '../../../appRouters.dart';
import '../../../app_settings/app_colors.dart'; import '../../../app_settings/app_colors.dart';
import '../../../tools/commonItem.dart'; import '../../../tools/commonItem.dart';
import '../../../tools/submitBtn.dart'; import '../../../tools/submitBtn.dart';
import '../../../tools/titleAppBar.dart'; import '../../../tools/titleAppBar.dart';
import '../../../translations/trans_lib.dart'; import '../../../translations/trans_lib.dart';
import 'entity/userSettingInfoEntity.dart';
class MineSetPage extends StatefulWidget { class MineSetPage extends StatefulWidget {
const MineSetPage({Key? key}) : super(key: key); const MineSetPage({Key? key}) : super(key: key);
@ -23,17 +18,14 @@ class MineSetPage extends StatefulWidget {
} }
class _MineSetPageState extends State<MineSetPage> { class _MineSetPageState extends State<MineSetPage> {
late bool _isPrompTone = false; // final logic = Get.put(MineSetLogic());
late bool _isTouchUnlock = false; // final state = Get.find<MineSetLogic>().state;
late bool _isPushNotification = false; //
late UserSettingInfoData _userInfoData;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_userInfoData = UserSettingInfoData(); logic.userSettingsInfoRequest();
userSettingsInfoRequest();
} }
@override @override
@ -44,10 +36,14 @@ class _MineSetPageState extends State<MineSetPage> {
barTitle: TranslationLoader.lanKeys!.moreSet!.tr, barTitle: TranslationLoader.lanKeys!.moreSet!.tr,
haveBack: true, haveBack: true,
backgroundColor: AppColors.mainColor), backgroundColor: AppColors.mainColor),
body: Column( body: SingleChildScrollView(
children: [ child: getListDataView(),
Expanded( ),
child: ListView( );
}
Widget getListDataView() {
return Column(
children: [ children: [
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.prompTone!.tr, leftTitel: TranslationLoader.lanKeys!.prompTone!.tr,
@ -55,33 +51,36 @@ class _MineSetPageState extends State<MineSetPage> {
isHaveLine: true, isHaveLine: true,
isHaveRightWidget: true, isHaveRightWidget: true,
rightWidget: SizedBox( rightWidget: SizedBox(
width: 60.w, height: 50.h, child: _switch(0))), width: 60.w,
height: 50.h,
child: Obx(() => _isPrompToneSwitch()))),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.touchUnlock!.tr, leftTitel: TranslationLoader.lanKeys!.touchUnlock!.tr,
rightTitle: "", rightTitle: "",
isHaveLine: true, isHaveLine: true,
isHaveRightWidget: true, isHaveRightWidget: true,
rightWidget: SizedBox( rightWidget: SizedBox(
width: 60.w, height: 50.h, child: _switch(1))), width: 60.w,
height: 50.h,
child: Obx(() => _isTouchUnlockSwitch()))),
CommonItem( CommonItem(
leftTitel: leftTitel: TranslationLoader.lanKeys!.pushNotification!.tr,
TranslationLoader.lanKeys!.pushNotification!.tr,
rightTitle: "", rightTitle: "",
isHaveRightWidget: true, isHaveRightWidget: true,
rightWidget: SizedBox( rightWidget: SizedBox(
width: 60.w, height: 50.h, child: _switch(2))), width: 60.w,
height: 50.h,
child: Obx(() => _isPushNotificationSwitch()))),
SizedBox( SizedBox(
height: 10.h, height: 10.h,
), ),
CommonItem( CommonItem(
leftTitel: leftTitel: TranslationLoader.lanKeys!.lockUserManagement!.tr,
TranslationLoader.lanKeys!.lockUserManagement!.tr,
rightTitle: "", rightTitle: "",
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Navigator.pushNamed( Navigator.pushNamed(context, Routers.lockUserManageLisPage);
context, Routers.lockUserManageLisPage);
}), }),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.authorizedAdmin!.tr, leftTitel: TranslationLoader.lanKeys!.authorizedAdmin!.tr,
@ -94,14 +93,12 @@ class _MineSetPageState extends State<MineSetPage> {
}), }),
//by DaisyWu -- //by DaisyWu --
CommonItem( CommonItem(
leftTitel: leftTitel: TranslationLoader.lanKeys!.authorityManagement!.tr,
TranslationLoader.lanKeys!.authorityManagement!.tr,
rightTitle: "", rightTitle: "",
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Navigator.pushNamed( Navigator.pushNamed(context, Routers.authorityManagementPage);
context, Routers.authorityManagementPage);
}), }),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.lockGroup!.tr, leftTitel: TranslationLoader.lanKeys!.lockGroup!.tr,
@ -112,22 +109,19 @@ class _MineSetPageState extends State<MineSetPage> {
Navigator.pushNamed(context, Routers.lockGroupListPage); Navigator.pushNamed(context, Routers.lockGroupListPage);
}), }),
CommonItem( CommonItem(
leftTitel: leftTitel: TranslationLoader.lanKeys!.transferSmartLock!.tr,
TranslationLoader.lanKeys!.transferSmartLock!.tr,
rightTitle: "", rightTitle: "",
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Navigator.pushNamed( Navigator.pushNamed(context, Routers.transferSmartLockPage);
context, Routers.transferSmartLockPage);
}), }),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.transferGateway!.tr, leftTitel: TranslationLoader.lanKeys!.transferGateway!.tr,
rightTitle: "", rightTitle: "",
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Navigator.pushNamed( Navigator.pushNamed(context, Routers.selectGetewayListPage);
context, Routers.selectGetewayListPage);
}), }),
SizedBox( SizedBox(
height: 10.h, height: 10.h,
@ -138,57 +132,46 @@ class _MineSetPageState extends State<MineSetPage> {
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Navigator.pushNamed( Navigator.pushNamed(context, Routers.mineMultiLanguagePage);
context, Routers.mineMultiLanguagePage);
}), }),
CommonItem( Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.lockScreen!.tr, leftTitel: TranslationLoader.lanKeys!.lockScreen!.tr,
rightTitle: _userInfoData.userSettings != null rightTitle: (state.lockScreen.value == 1
? (_userInfoData.userSettings!.lockScreen == 1
? TranslationLoader.lanKeys!.opened!.tr ? TranslationLoader.lanKeys!.opened!.tr
: TranslationLoader.lanKeys!.closed!.tr) : TranslationLoader.lanKeys!.closed!.tr),
: TranslationLoader.lanKeys!.closed!.tr,
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Navigator.pushNamed(context, Routers.lockScreenPage, Navigator.pushNamed(context, Routers.lockScreenPage,
arguments: { arguments: {'isOn': state.lockScreen.value}).then((value) {
'isOn': _userInfoData.userSettings!.lockScreen logic.userSettingsInfoRequest();
}).then((value) {
userSettingsInfoRequest();
}); });
}), })),
CommonItem( Obx(() => CommonItem(
leftTitel: TranslationLoader leftTitel:
.lanKeys!.hideInvalidUnlockPermissions!.tr, TranslationLoader.lanKeys!.hideInvalidUnlockPermissions!.tr,
rightTitle: _userInfoData.userSettings != null rightTitle: (state.hideExpiredAccessFlag.value == 1
? (_userInfoData
.userSettings!.hideExpiredAccessFlag ==
1
? TranslationLoader.lanKeys!.opened!.tr ? TranslationLoader.lanKeys!.opened!.tr
: TranslationLoader.lanKeys!.closed!.tr) : TranslationLoader.lanKeys!.closed!.tr),
: TranslationLoader.lanKeys!.closed!.tr,
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Navigator.pushNamed( Navigator.pushNamed(
context, Routers.hideInvalidUnlockPermissionsPage, context, Routers.hideInvalidUnlockPermissionsPage,
arguments: { arguments: {'isOn': state.hideExpiredAccessFlag.value})
'isOn': _userInfoData .then((value) {
.userSettings!.hideExpiredAccessFlag logic.userSettingsInfoRequest();
}).then((value) {
userSettingsInfoRequest();
}); });
}), })),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys! leftTitel: TranslationLoader
.appUnlockRequiresMobilePhoneAccessToTheLock!.tr, .lanKeys!.appUnlockRequiresMobilePhoneAccessToTheLock!.tr,
rightTitle: "", rightTitle: "",
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Navigator.pushNamed(context, Navigator.pushNamed(
Routers.aPPUnlockNeedMobileNetworkingLockPage); context, Routers.aPPUnlockNeedMobileNetworkingLockPage);
}), }),
SizedBox( SizedBox(
height: 10.h, height: 10.h,
@ -232,10 +215,7 @@ class _MineSetPageState extends State<MineSetPage> {
// }), // }),
keyBottomWidget() keyBottomWidget()
], ],
), );
),
],
));
} }
Widget keyBottomWidget() { Widget keyBottomWidget() {
@ -246,7 +226,7 @@ class _MineSetPageState extends State<MineSetPage> {
isDelete: true, isDelete: true,
onClick: () { onClick: () {
//退 //退
userLogoutRequest(); logic.userLogoutRequest();
}), }),
Container( Container(
padding: EdgeInsets.only(right: 30.w), padding: EdgeInsets.only(right: 30.w),
@ -272,86 +252,40 @@ class _MineSetPageState extends State<MineSetPage> {
); );
} }
// CupertinoSwitch _isPrompToneSwitch() {
Future<void> userSettingsInfoRequest() async {
UserSettingInfoEntity entity = await ApiRepository.to.userSettingsInfo();
if (entity.errorCode!.codeIsSuccessful) {
setState(() {
_userInfoData = entity.data!;
//
if (_userInfoData.alertMode == 1) {
_isPrompTone = true;
} else {
_isPrompTone = false;
}
//
if (_userInfoData.userSettings!.touchUnlockFlag! == 1) {
_isTouchUnlock = true;
} else {
_isTouchUnlock = false;
}
});
}
}
//
Future<void> updatePrompToneRequest() async {
ExpireLockListEntity entity = await ApiRepository.to
.setAlertMode('1', _isPrompTone == true ? '1' : '2');
if (entity.errorCode!.codeIsSuccessful) {
setState(() {
userSettingsInfoRequest();
});
}
}
//退
Future<void> userLogoutRequest() async {
LoginEntity entity = await ApiRepository.to.userLogout();
if (entity.errorCode!.codeIsSuccessful) {
setState(() {
Get.offNamedUntil(Routers.starLockLoginPage, (route) => false);
});
}
}
//
Future<void> updateTouchUnlockRequest() async {
ExpireLockListEntity entity = await ApiRepository.to
.setTouchUnlockFlag(_isTouchUnlock == true ? '1' : '2');
if (entity.errorCode!.codeIsSuccessful) {
setState(() {
userSettingsInfoRequest();
});
}
}
CupertinoSwitch _switch(int switchIndex) {
bool isOn = false;
if (switchIndex == 0) {
isOn = _isPrompTone;
} else if (switchIndex == 1) {
isOn = _isTouchUnlock;
} else if (switchIndex == 2) {
isOn = _isPushNotification;
}
return CupertinoSwitch( return CupertinoSwitch(
activeColor: CupertinoColors.activeBlue, activeColor: CupertinoColors.activeBlue,
trackColor: CupertinoColors.systemGrey5, trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white, thumbColor: CupertinoColors.white,
value: isOn, value: state.isPrompTone.value,
onChanged: (value) { onChanged: (value) {
setState(() { state.isPrompTone.value = !state.isPrompTone.value;
if (switchIndex == 0) { logic.updatePrompToneRequest();
_isPrompTone = !_isPrompTone; },
updatePrompToneRequest(); );
} else if (switchIndex == 1) {
_isTouchUnlock = !_isTouchUnlock;
updateTouchUnlockRequest();
} else if (switchIndex == 2) {
_isPushNotification = !_isPushNotification;
} }
});
CupertinoSwitch _isTouchUnlockSwitch() {
return CupertinoSwitch(
activeColor: CupertinoColors.activeBlue,
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
value: state.isTouchUnlock.value,
onChanged: (value) {
state.isTouchUnlock.value = !state.isTouchUnlock.value;
logic.updateTouchUnlockRequest();
},
);
}
CupertinoSwitch _isPushNotificationSwitch() {
return CupertinoSwitch(
activeColor: CupertinoColors.activeBlue,
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
value: state.isPushNotification.value,
onChanged: (value) {
state.isPushNotification.value = !state.isPushNotification.value;
}, },
); );
} }

View File

@ -0,0 +1,14 @@
import 'package:get/get.dart';
import 'package:star_lock/mine/mineSet/mineSet/userSettingInfoEntity.dart';
class MineSetState {
final userInfoData = UserSettingInfoData().obs;
final userSetting = UserSettings().obs;
var isPrompTone = false.obs; //
var isTouchUnlock = false.obs; //
var isPushNotification = false.obs; //
var lockScreen = 2.obs; //
var hideExpiredAccessFlag = 2.obs; //
}

View File

@ -5,7 +5,6 @@ import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart';
import 'package:star_lock/main/lockDetail/lcokSet/basicInformation/basicInformation/KeyDetailEntity.dart'; import 'package:star_lock/main/lockDetail/lcokSet/basicInformation/basicInformation/KeyDetailEntity.dart';
import 'package:star_lock/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/LockGroupListEntity.dart';
import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart';
import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKeyEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKeyEntity.dart';
import 'package:star_lock/mine/mineSet/appUnlockNeedMobileNetworkingLock/selectLockListEntity.dart'; import 'package:star_lock/mine/mineSet/appUnlockNeedMobileNetworkingLock/selectLockListEntity.dart';
@ -13,6 +12,7 @@ import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDeta
import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdminListEntity.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/lockUserManage/expireLockList/expireLockListEntity.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/keyListByUserEntity.dart'; import 'package:star_lock/mine/mineSet/lockUserManage/keyListByUserEntity.dart';
import 'package:star_lock/mine/mineSet/mineSet/userSettingInfoEntity.dart';
import '../common/safetyVerification/entity/CheckSafetyVerificationEntity.dart'; import '../common/safetyVerification/entity/CheckSafetyVerificationEntity.dart';
import '../common/safetyVerification/entity/SafetyVerificationEntity.dart'; import '../common/safetyVerification/entity/SafetyVerificationEntity.dart';
import '../login/login/entity/LoginEntity.dart'; import '../login/login/entity/LoginEntity.dart';
@ -34,7 +34,6 @@ import '../main/lockDetail/otherTypeKey/addICCard/addICCard_entity.dart';
import '../main/lockDetail/otherTypeKey/otherTypeKeyList/fingerprintListData_entity.dart'; import '../main/lockDetail/otherTypeKey/otherTypeKeyList/fingerprintListData_entity.dart';
import '../main/lockMian/entity/lockInfoEntity.dart'; import '../main/lockMian/entity/lockInfoEntity.dart';
import '../mine/addLock/saveLock/entity/SaveLockEntity.dart'; import '../mine/addLock/saveLock/entity/SaveLockEntity.dart';
import '../mine/mineSet/mineSet/entity/userSettingInfoEntity.dart';
import '../mine/mineSet/transferGateway/selectGetewayList_entity.dart'; import '../mine/mineSet/transferGateway/selectGetewayList_entity.dart';
import '../mine/mineSet/transferSmartLock/recipientInformation/recipientInformation_entity.dart'; import '../mine/mineSet/transferSmartLock/recipientInformation/recipientInformation_entity.dart';
import '../mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_entity.dart'; import '../mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_entity.dart';