1,根据田总最新需求-> 新增权限管理相关页面
This commit is contained in:
parent
5dec697b3d
commit
c520a825aa
@ -203,7 +203,12 @@
|
|||||||
"touchUnlock":"Touch Unlock",
|
"touchUnlock":"Touch Unlock",
|
||||||
"pushNotification":"Push Notification",
|
"pushNotification":"Push Notification",
|
||||||
"lockUserManagement":"Lock User Management",
|
"lockUserManagement":"Lock User Management",
|
||||||
|
"authorityManagement":"Authority management",
|
||||||
|
"associatedDevice":"Associated device",
|
||||||
|
"associatedName":"Associated name",
|
||||||
|
"device":"Device",
|
||||||
"aboutToExpire":"About to expire",
|
"aboutToExpire":"About to expire",
|
||||||
|
"deAuthorize":"de-authorize",
|
||||||
"changeName":"Change name",
|
"changeName":"Change name",
|
||||||
"authorizedAdmin":"Authorized Admin",
|
"authorizedAdmin":"Authorized Admin",
|
||||||
"addAuthorizedAdmin":"Adding an Authorized Administrator",
|
"addAuthorizedAdmin":"Adding an Authorized Administrator",
|
||||||
|
|||||||
@ -203,6 +203,10 @@
|
|||||||
"touchUnlock":"touchUnlock",
|
"touchUnlock":"touchUnlock",
|
||||||
"pushNotification":"pushNotification",
|
"pushNotification":"pushNotification",
|
||||||
"lockUserManagement":"lockUserManagement",
|
"lockUserManagement":"lockUserManagement",
|
||||||
|
"authorityManagement":"authorityManagement",
|
||||||
|
"associatedDevice":"associatedDevice",
|
||||||
|
"associatedName":"associatedName",
|
||||||
|
"device":"device",
|
||||||
"authorizedAdmin":"authorizedAdmin",
|
"authorizedAdmin":"authorizedAdmin",
|
||||||
"addAuthorizedAdmin":"addAuthorizedAdmin",
|
"addAuthorizedAdmin":"addAuthorizedAdmin",
|
||||||
"lockGroup":"lockGroup",
|
"lockGroup":"lockGroup",
|
||||||
@ -246,6 +250,7 @@
|
|||||||
"problemThree":"problemThree",
|
"problemThree":"problemThree",
|
||||||
"pleaseEnterYourAnswer":"pleaseEnterYourAnswer",
|
"pleaseEnterYourAnswer":"pleaseEnterYourAnswer",
|
||||||
"aboutToExpire":"aboutToExpire",
|
"aboutToExpire":"aboutToExpire",
|
||||||
|
"deAuthorize":"deAuthorize",
|
||||||
"changeName":"changeName",
|
"changeName":"changeName",
|
||||||
|
|
||||||
"designation": "designation",
|
"designation": "designation",
|
||||||
|
|||||||
@ -203,6 +203,10 @@
|
|||||||
"touchUnlock":"触摸开锁",
|
"touchUnlock":"触摸开锁",
|
||||||
"pushNotification":"消息推送",
|
"pushNotification":"消息推送",
|
||||||
"lockUserManagement":"锁用户管理",
|
"lockUserManagement":"锁用户管理",
|
||||||
|
"authorityManagement":"权限管理",
|
||||||
|
"associatedDevice":"关联设备",
|
||||||
|
"associatedName":"关联姓名",
|
||||||
|
"device":"设备",
|
||||||
"authorizedAdmin":"授权管理员",
|
"authorizedAdmin":"授权管理员",
|
||||||
"addAuthorizedAdmin":"添加授权管理员",
|
"addAuthorizedAdmin":"添加授权管理员",
|
||||||
"lockGroup":"锁分组",
|
"lockGroup":"锁分组",
|
||||||
@ -247,6 +251,7 @@
|
|||||||
"pleaseEnterYourAnswer":"请输入你的答案",
|
"pleaseEnterYourAnswer":"请输入你的答案",
|
||||||
"aboutToExpire":"即将到期",
|
"aboutToExpire":"即将到期",
|
||||||
"changeName":"修改名称",
|
"changeName":"修改名称",
|
||||||
|
"deAuthorize":"去授权",
|
||||||
|
|
||||||
"designation": "名称",
|
"designation": "名称",
|
||||||
"state": "状态",
|
"state": "状态",
|
||||||
|
|||||||
@ -2,6 +2,9 @@ import 'package:get/get.dart';
|
|||||||
import 'package:star_lock/common/safetyVerification/safetyVerification_binding.dart';
|
import 'package:star_lock/common/safetyVerification/safetyVerification_binding.dart';
|
||||||
import 'package:star_lock/login/register/starLock_register_binding.dart';
|
import 'package:star_lock/login/register/starLock_register_binding.dart';
|
||||||
import 'package:star_lock/mine/minePersonInfo/minePersonInfoEmail/minePersonInfoEmail_page.dart';
|
import 'package:star_lock/mine/minePersonInfo/minePersonInfoEmail/minePersonInfoEmail_page.dart';
|
||||||
|
import 'package:star_lock/mine/mineSet/authorityManagement/authorityManagement_page.dart';
|
||||||
|
import 'package:star_lock/mine/mineSet/authorityManagement/getDeviceList_page.dart';
|
||||||
|
import 'package:star_lock/mine/mineSet/authorityManagement/getNameList_page.dart';
|
||||||
import 'package:star_lock/mine/mineSet/authorizedAdministrator/addAuthorizedAdministrator_page.dart';
|
import 'package:star_lock/mine/mineSet/authorizedAdministrator/addAuthorizedAdministrator_page.dart';
|
||||||
import 'package:star_lock/mine/mineSet/lockGroup/lockGroupList_page.dart';
|
import 'package:star_lock/mine/mineSet/lockGroup/lockGroupList_page.dart';
|
||||||
import 'package:star_lock/mine/mineSet/lockUserManage/lockUserManageList_page.dart';
|
import 'package:star_lock/mine/mineSet/lockUserManage/lockUserManageList_page.dart';
|
||||||
@ -243,26 +246,35 @@ abstract class Routers {
|
|||||||
'/ValueAddedServicesListEmailTemplatePage'; // 增值服务-邮箱模版列表
|
'/ValueAddedServicesListEmailTemplatePage'; // 增值服务-邮箱模版列表
|
||||||
static const valueAddedServicesAddEmailTemplatePage =
|
static const valueAddedServicesAddEmailTemplatePage =
|
||||||
'/ValueAddedServicesAddEmailTemplatePage'; // 增值服务-自定义邮箱模版
|
'/ValueAddedServicesAddEmailTemplatePage'; // 增值服务-自定义邮箱模版
|
||||||
static const valueAddedServicesBuyAndUseRecordManagePage = '/ValueAddedServicesBuyAndUseRecordManagePage'; // 增值服务-购买使用记录
|
static const valueAddedServicesBuyAndUseRecordManagePage =
|
||||||
|
'/ValueAddedServicesBuyAndUseRecordManagePage'; // 增值服务-购买使用记录
|
||||||
|
|
||||||
static const lockScreenPage = '/LockScreenPage'; // 我的设置-锁屏
|
static const lockScreenPage = '/LockScreenPage'; // 我的设置-锁屏
|
||||||
static const aPPUnlockNeedMobileNetworkingLockPage = '/APPUnlockNeedMobileNetworkingLockPage'; // 我的设置-app开锁时需手机连网的锁
|
static const aPPUnlockNeedMobileNetworkingLockPage =
|
||||||
static const hideInvalidUnlockPermissionsPage = '/HideInvalidUnlockPermissionsPage'; // 我的设置-隐藏无效开锁权限
|
'/APPUnlockNeedMobileNetworkingLockPage'; // 我的设置-app开锁时需手机连网的锁
|
||||||
|
static const hideInvalidUnlockPermissionsPage =
|
||||||
|
'/HideInvalidUnlockPermissionsPage'; // 我的设置-隐藏无效开锁权限
|
||||||
|
|
||||||
static const lockUserManageLisPage = '/LockUserManageLisPage'; //我的设置-锁用户管理
|
static const lockUserManageLisPage = '/LockUserManageLisPage'; //我的设置-锁用户管理
|
||||||
static const authorizedAdministratorListPage = '/AuthorizedAdministratorListPage'; //我的设置-授权管理员
|
static const authorizedAdministratorListPage =
|
||||||
|
'/AuthorizedAdministratorListPage'; //我的设置-授权管理员
|
||||||
static const lockGroupListPage = '/LockGroupListPage'; //我的设置-锁分组
|
static const lockGroupListPage = '/LockGroupListPage'; //我的设置-锁分组
|
||||||
static const lockItemListPage = '/LockItemListPage'; //锁分组-锁列表
|
static const lockItemListPage = '/LockItemListPage'; //锁分组-锁列表
|
||||||
static const transferSmartLockPage = '/transferSmartLockPage'; //转移智能锁
|
static const transferSmartLockPage = '/transferSmartLockPage'; //转移智能锁
|
||||||
static const recipientInformationPage = '/recipientInformationPage'; //接受人信息
|
static const recipientInformationPage = '/recipientInformationPage'; //接受人信息
|
||||||
static const selectBranchPage = '/SelectBranchPage'; //选择分店
|
static const selectBranchPage = '/SelectBranchPage'; //选择分店
|
||||||
static const selectGetewayListPage = '/selectGetewayListPage'; //选择网关
|
static const selectGetewayListPage = '/selectGetewayListPage'; //选择网关
|
||||||
static const addAuthorizedAdministratorPage = '/addAuthorizedAdministratorPage'; //添加授权管理员
|
static const addAuthorizedAdministratorPage =
|
||||||
|
'/addAuthorizedAdministratorPage'; //添加授权管理员
|
||||||
static const ownedKeyListPage = '/ownedKeyListPage'; //拥有的钥匙
|
static const ownedKeyListPage = '/ownedKeyListPage'; //拥有的钥匙
|
||||||
|
static const authorityManagementPage = '/authorityManagementPage'; //权限管理
|
||||||
|
static const getDeviceListPage = '/getDeviceListPage'; //设备列表
|
||||||
|
static const getNameListPage = '/getNameListPage'; //姓名列表
|
||||||
|
|
||||||
static const starLockLoginPage = '/StarLockLoginPage'; // 登录
|
static const starLockLoginPage = '/StarLockLoginPage'; // 登录
|
||||||
static const starLockRegisterPage = '/StarLockRegisterPage'; // 注册
|
static const starLockRegisterPage = '/StarLockRegisterPage'; // 注册
|
||||||
static const starLockForgetPasswordPage = '/StarLockForgetPasswordPage'; // 忘记密码
|
static const starLockForgetPasswordPage =
|
||||||
|
'/StarLockForgetPasswordPage'; // 忘记密码
|
||||||
static const seletCountryRegionPage = '/SeletCountryRegionPage'; // 选择国家和地区
|
static const seletCountryRegionPage = '/SeletCountryRegionPage'; // 选择国家和地区
|
||||||
static const safetyVerificationPage = '/SafetyVerificationPage'; // 安全验证
|
static const safetyVerificationPage = '/SafetyVerificationPage'; // 安全验证
|
||||||
|
|
||||||
@ -389,8 +401,8 @@ abstract class AppRouters {
|
|||||||
),
|
),
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.starLockRegisterPage,
|
name: Routers.starLockRegisterPage,
|
||||||
page: () => const StarLockRegisterPage(), binding:StarLockRegisterBinding()
|
page: () => const StarLockRegisterPage(),
|
||||||
),
|
binding: StarLockRegisterBinding()),
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.starLockForgetPasswordPage,
|
name: Routers.starLockForgetPasswordPage,
|
||||||
page: () => const StarLockForgetPasswordPage(),
|
page: () => const StarLockForgetPasswordPage(),
|
||||||
@ -665,51 +677,46 @@ abstract class AppRouters {
|
|||||||
),
|
),
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.authorizedAdministratorListPage,
|
name: Routers.authorizedAdministratorListPage,
|
||||||
page: () => const AuthorizedAdministratorListPage()
|
page: () => const AuthorizedAdministratorListPage()),
|
||||||
),
|
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.lockUserManageLisPage,
|
name: Routers.lockUserManageLisPage,
|
||||||
page: () => const LockUserManageListListPage()
|
page: () => const LockUserManageListListPage()),
|
||||||
),
|
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.lockGroupListPage, page: () => const LockGroupListPage()
|
name: Routers.lockGroupListPage, page: () => const LockGroupListPage()),
|
||||||
),
|
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.lockItemListPage, page: () => const LockItemListPage()
|
name: Routers.lockItemListPage, page: () => const LockItemListPage()),
|
||||||
),
|
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.transferSmartLockPage,
|
name: Routers.transferSmartLockPage,
|
||||||
page: () => const TransferSmartLockPage()
|
page: () => const TransferSmartLockPage()),
|
||||||
),
|
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.recipientInformationPage,
|
name: Routers.recipientInformationPage,
|
||||||
page: () => const RecipientInformationPage()
|
page: () => const RecipientInformationPage()),
|
||||||
),
|
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.selectBranchPage, page: () => const SelectBranchPage()
|
name: Routers.selectBranchPage, page: () => const SelectBranchPage()),
|
||||||
),
|
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.selectGetewayListPage,
|
name: Routers.selectGetewayListPage,
|
||||||
page: () => const SelectGetewayListPage()
|
page: () => const SelectGetewayListPage()),
|
||||||
),
|
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.minePersonInfoEditEmailPage,
|
name: Routers.minePersonInfoEditEmailPage,
|
||||||
page: () => const MinePersonInfoEditEmailPage()
|
page: () => const MinePersonInfoEditEmailPage()),
|
||||||
),
|
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.addAuthorizedAdministratorPage,
|
name: Routers.addAuthorizedAdministratorPage,
|
||||||
page: () => const AddAuthorizedAdministratorPage()
|
page: () => const AddAuthorizedAdministratorPage()),
|
||||||
),
|
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.safetyVerificationPage,
|
name: Routers.safetyVerificationPage,
|
||||||
page: () => const SafetyVerificationPage(),
|
page: () => const SafetyVerificationPage(),
|
||||||
binding: SafetyVerificationBinding(),
|
binding: SafetyVerificationBinding(),
|
||||||
),
|
),
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.ownedKeyListPage, page: () => const OwnedKeyListPage()
|
name: Routers.ownedKeyListPage, page: () => const OwnedKeyListPage()),
|
||||||
),
|
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.keyOperationRecordPage,
|
name: Routers.keyOperationRecordPage,
|
||||||
page: () => const KeyOperationRecordPage())
|
page: () => const KeyOperationRecordPage()),
|
||||||
|
GetPage(
|
||||||
|
name: Routers.authorityManagementPage,
|
||||||
|
page: () => const AuthorityManagementPage()),
|
||||||
|
GetPage(
|
||||||
|
name: Routers.getDeviceListPage, page: () => const GetDeviceListPage()),
|
||||||
|
GetPage(name: Routers.getNameListPage, page: () => const GetNameListPage())
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,296 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart';
|
||||||
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
|
import 'package:get/get_utils/get_utils.dart';
|
||||||
|
import 'package:star_lock/appRouters.dart';
|
||||||
|
import 'package:star_lock/app_settings/app_colors.dart';
|
||||||
|
import 'package:star_lock/tools/submitBtn.dart';
|
||||||
|
import 'package:star_lock/translations/trans_lib.dart';
|
||||||
|
|
||||||
|
class AuthorityManagementPage extends StatefulWidget {
|
||||||
|
const AuthorityManagementPage({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<StatefulWidget> createState() {
|
||||||
|
return _AuthorityManagementPageState();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class _AuthorityManagementPageState extends State<AuthorityManagementPage>
|
||||||
|
with SingleTickerProviderStateMixin {
|
||||||
|
TabController? _tabController;
|
||||||
|
final FlutterContactPicker _contactPicker = FlutterContactPicker();
|
||||||
|
late Contact _contact;
|
||||||
|
final _templateNameTf = TextEditingController();
|
||||||
|
bool isNameSelect = false;
|
||||||
|
bool isDeviceSelect = false;
|
||||||
|
int selectDeviceIndex = 0;
|
||||||
|
int selectNameIndex = 0;
|
||||||
|
|
||||||
|
List tabs = [
|
||||||
|
TranslationLoader.lanKeys!.name!.tr,
|
||||||
|
TranslationLoader.lanKeys!.device!.tr
|
||||||
|
];
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
|
||||||
|
_tabController = TabController(length: 2, vsync: this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return DefaultTabController(
|
||||||
|
length: 2,
|
||||||
|
child: Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
backgroundColor: AppColors.mainColor,
|
||||||
|
title: Text(
|
||||||
|
TranslationLoader.lanKeys!.authorityManagement!.tr,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white,
|
||||||
|
fontSize: 28.sp,
|
||||||
|
fontWeight: FontWeight.w600),
|
||||||
|
),
|
||||||
|
elevation: 0,
|
||||||
|
leading: IconButton(
|
||||||
|
icon: const Icon(Icons.arrow_back_ios, color: Colors.white),
|
||||||
|
onPressed: () => Navigator.of(context).pop(),
|
||||||
|
),
|
||||||
|
bottom: PreferredSize(
|
||||||
|
preferredSize: const Size.fromHeight(45),
|
||||||
|
child: Material(
|
||||||
|
color: Colors.white,
|
||||||
|
child: Theme(
|
||||||
|
data: ThemeData(
|
||||||
|
///点击的背景高亮颜色,处理阴影
|
||||||
|
highlightColor: Colors.transparent,
|
||||||
|
|
||||||
|
///点击水波纹颜色
|
||||||
|
splashColor: Colors.transparent,
|
||||||
|
),
|
||||||
|
child: TabBar(
|
||||||
|
controller: _tabController,
|
||||||
|
indicatorSize: TabBarIndicatorSize.label,
|
||||||
|
indicatorColor: AppColors.mainColor,
|
||||||
|
unselectedLabelColor: AppColors.blackColor,
|
||||||
|
labelColor: AppColors.mainColor,
|
||||||
|
// isScrollable: true,
|
||||||
|
tabs: tabs.map((e) => Tab(text: e)).toList()),
|
||||||
|
)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
body: TabBarView(
|
||||||
|
controller: _tabController,
|
||||||
|
children: [_permissionNameList(), _permissionDeviceList()])));
|
||||||
|
}
|
||||||
|
|
||||||
|
//姓名列表
|
||||||
|
Widget _permissionNameList() {
|
||||||
|
return Column(
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 10.h,
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: ListView.separated(
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
if (index == 0) {
|
||||||
|
return _buildNameWidget(
|
||||||
|
context, index, 'images/icon_password.png', '密码1');
|
||||||
|
} else if (index == 1) {
|
||||||
|
return _buildNameWidget(
|
||||||
|
context, index, 'images/icon_card.png', '卡1');
|
||||||
|
} else if (index == 2) {
|
||||||
|
return _buildNameWidget(
|
||||||
|
context, index, 'images/icon_fingerprint.png', '指纹1');
|
||||||
|
} else if (index == 3) {
|
||||||
|
return _buildNameWidget(
|
||||||
|
context, index, 'images/icon_card.png', '遥控1');
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
// return _buildNameWidget(context, index);
|
||||||
|
},
|
||||||
|
separatorBuilder: (context, index) {
|
||||||
|
return const Divider(
|
||||||
|
height: 1,
|
||||||
|
color: AppColors.greyLineColor,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
itemCount: 5)),
|
||||||
|
SizedBox(
|
||||||
|
height: 20.h,
|
||||||
|
),
|
||||||
|
_buildDeauthorizationBtn1(),
|
||||||
|
SizedBox(
|
||||||
|
height: 40.h,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//设备列表
|
||||||
|
Widget _permissionDeviceList() {
|
||||||
|
return Column(
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 10.h,
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: ListView.separated(
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
if (index == 0) {
|
||||||
|
return _buildDeviceWidget(
|
||||||
|
context, index, 'images/icon_lock.png', "大门锁");
|
||||||
|
} else if (index == 1) {
|
||||||
|
return _buildDeviceWidget(
|
||||||
|
context, index, 'images/icon_lock.png', "办公室锁");
|
||||||
|
} else if (index == 2) {
|
||||||
|
return _buildDeviceWidget(
|
||||||
|
context, index, 'images/icon_lock.png', "会议室锁");
|
||||||
|
} else {
|
||||||
|
return _buildDeviceWidget(
|
||||||
|
context, index, 'images/icon_lock.png', "宴会厅锁");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
separatorBuilder: (context, index) {
|
||||||
|
return const Divider(
|
||||||
|
height: 1,
|
||||||
|
color: AppColors.greyLineColor,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
itemCount: 5)),
|
||||||
|
SizedBox(
|
||||||
|
height: 20.h,
|
||||||
|
),
|
||||||
|
_buildDeauthorizationBtn2(),
|
||||||
|
SizedBox(
|
||||||
|
height: 40.h,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildNameWidget(context, index, imageName, getName) {
|
||||||
|
return GestureDetector(
|
||||||
|
child: Container(
|
||||||
|
height: 90.h,
|
||||||
|
color: Colors.white,
|
||||||
|
width: ScreenUtil().screenWidth,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
width: 30.w,
|
||||||
|
),
|
||||||
|
Image.asset(
|
||||||
|
imageName,
|
||||||
|
width: 36.w,
|
||||||
|
height: 36.w,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 10.w,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
getName,
|
||||||
|
style: TextStyle(fontSize: 22.sp, color: AppColors.blackColor),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: SizedBox(
|
||||||
|
width: 20.w,
|
||||||
|
)),
|
||||||
|
Image.asset(
|
||||||
|
isNameSelect == false
|
||||||
|
? 'images/icon_round_unSelet.png'
|
||||||
|
: 'images/icon_round_selet.png',
|
||||||
|
width: 30.sp,
|
||||||
|
height: 30.sp,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 30.w,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onTap: () {
|
||||||
|
selectNameIndex = index;
|
||||||
|
setState(() {
|
||||||
|
if (selectNameIndex == index) {
|
||||||
|
isNameSelect = !isNameSelect;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildDeviceWidget(context, index, imageName, deviceName) {
|
||||||
|
return GestureDetector(
|
||||||
|
child: Container(
|
||||||
|
height: 90.h,
|
||||||
|
color: Colors.white,
|
||||||
|
width: ScreenUtil().screenWidth,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
width: 30.w,
|
||||||
|
),
|
||||||
|
Image.asset(
|
||||||
|
imageName,
|
||||||
|
width: 36.w,
|
||||||
|
height: 36.w,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 10.w,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
deviceName,
|
||||||
|
style: TextStyle(fontSize: 22.sp, color: AppColors.blackColor),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: SizedBox(
|
||||||
|
width: 20.w,
|
||||||
|
)),
|
||||||
|
Image.asset(
|
||||||
|
isDeviceSelect == false
|
||||||
|
? 'images/icon_round_unSelet.png'
|
||||||
|
: 'images/icon_round_selet.png',
|
||||||
|
width: 30.sp,
|
||||||
|
height: 30.sp,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 30.w,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onTap: () {
|
||||||
|
selectDeviceIndex = index;
|
||||||
|
setState(() {
|
||||||
|
if (selectDeviceIndex == index) {
|
||||||
|
isDeviceSelect = !isDeviceSelect;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//去授权按钮-姓名
|
||||||
|
Widget _buildDeauthorizationBtn1() {
|
||||||
|
return SubmitBtn(
|
||||||
|
btnName: TranslationLoader.lanKeys!.deAuthorize!.tr,
|
||||||
|
onClick: () {
|
||||||
|
Navigator.pushNamed(context, Routers.getDeviceListPage);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//去授权按钮-关联设备
|
||||||
|
Widget _buildDeauthorizationBtn2() {
|
||||||
|
return SubmitBtn(
|
||||||
|
btnName: TranslationLoader.lanKeys!.deAuthorize!.tr,
|
||||||
|
onClick: () {
|
||||||
|
Navigator.pushNamed(context, Routers.getNameListPage);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,136 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:star_lock/tools/submitBtn.dart';
|
||||||
|
|
||||||
|
import '../../../../app_settings/app_colors.dart';
|
||||||
|
import '../../../../tools/titleAppBar.dart';
|
||||||
|
import '../../../../translations/trans_lib.dart';
|
||||||
|
|
||||||
|
class GetDeviceListPage extends StatefulWidget {
|
||||||
|
const GetDeviceListPage({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<GetDeviceListPage> createState() => _GetDeviceListPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _GetDeviceListPageState extends State<GetDeviceListPage> {
|
||||||
|
bool isNameSelect = false;
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
backgroundColor: AppColors.mainBackgroundColor,
|
||||||
|
appBar: TitleAppBar(
|
||||||
|
barTitle: TranslationLoader.lanKeys!.associatedDevice!.tr,
|
||||||
|
haveBack: true,
|
||||||
|
backgroundColor: AppColors.mainColor,
|
||||||
|
),
|
||||||
|
body: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
left: 30.w, top: 16.w, right: 30.w, bottom: 16.w),
|
||||||
|
child: Text(
|
||||||
|
'请选择姓名要关联哪些设备',
|
||||||
|
style: TextStyle(
|
||||||
|
color: AppColors.darkGrayTextColor, fontSize: 20.sp),
|
||||||
|
textAlign: TextAlign.start,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(child: _permissionDeviceList()),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//设备列表
|
||||||
|
Widget _permissionDeviceList() {
|
||||||
|
return Column(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: ListView.separated(
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
if (index == 0) {
|
||||||
|
return _buildDeviceWidget(
|
||||||
|
context, index, 'images/icon_lock.png', "大门锁");
|
||||||
|
} else if (index == 1) {
|
||||||
|
return _buildDeviceWidget(
|
||||||
|
context, index, 'images/icon_lock.png', "办公室锁");
|
||||||
|
} else if (index == 2) {
|
||||||
|
return _buildDeviceWidget(
|
||||||
|
context, index, 'images/icon_lock.png', "会议室锁");
|
||||||
|
} else {
|
||||||
|
return _buildDeviceWidget(
|
||||||
|
context, index, 'images/icon_lock.png', "宴会厅锁");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
separatorBuilder: (context, index) {
|
||||||
|
return const Divider(
|
||||||
|
height: 1,
|
||||||
|
color: AppColors.greyLineColor,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
itemCount: 5)),
|
||||||
|
SizedBox(
|
||||||
|
height: 20.h,
|
||||||
|
),
|
||||||
|
SubmitBtn(
|
||||||
|
btnName: '确定',
|
||||||
|
onClick: () {},
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 40.h,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildDeviceWidget(context, index, imageName, deviceName) {
|
||||||
|
return GestureDetector(
|
||||||
|
child: Container(
|
||||||
|
height: 90.h,
|
||||||
|
color: Colors.white,
|
||||||
|
width: ScreenUtil().screenWidth,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
width: 30.w,
|
||||||
|
),
|
||||||
|
Image.asset(
|
||||||
|
isNameSelect == false
|
||||||
|
? 'images/icon_round_unSelet.png'
|
||||||
|
: 'images/icon_round_selet.png',
|
||||||
|
width: 30.sp,
|
||||||
|
height: 30.sp,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 20.w,
|
||||||
|
),
|
||||||
|
Image.asset(
|
||||||
|
imageName,
|
||||||
|
width: 36.w,
|
||||||
|
height: 36.w,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 10.w,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
deviceName,
|
||||||
|
style: TextStyle(fontSize: 22.sp, color: AppColors.blackColor),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 30.w,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onTap: () {
|
||||||
|
setState(() {
|
||||||
|
isNameSelect = !isNameSelect;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,138 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:star_lock/tools/submitBtn.dart';
|
||||||
|
|
||||||
|
import '../../../../app_settings/app_colors.dart';
|
||||||
|
import '../../../../tools/titleAppBar.dart';
|
||||||
|
import '../../../../translations/trans_lib.dart';
|
||||||
|
|
||||||
|
class GetNameListPage extends StatefulWidget {
|
||||||
|
const GetNameListPage({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<GetNameListPage> createState() => _GetNameListPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _GetNameListPageState extends State<GetNameListPage> {
|
||||||
|
bool isNameSelect = false;
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
backgroundColor: AppColors.mainBackgroundColor,
|
||||||
|
appBar: TitleAppBar(
|
||||||
|
barTitle: TranslationLoader.lanKeys!.associatedName!.tr,
|
||||||
|
haveBack: true,
|
||||||
|
backgroundColor: AppColors.mainColor,
|
||||||
|
),
|
||||||
|
body: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
left: 30.w, top: 16.w, right: 30.w, bottom: 16.w),
|
||||||
|
child: Text(
|
||||||
|
'请选择设备要关联哪些姓名',
|
||||||
|
style: TextStyle(
|
||||||
|
color: AppColors.darkGrayTextColor, fontSize: 20.sp),
|
||||||
|
textAlign: TextAlign.start,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(child: _permissionNameList()),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//姓名列表
|
||||||
|
Widget _permissionNameList() {
|
||||||
|
return Column(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: ListView.separated(
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
if (index == 0) {
|
||||||
|
return _buildNameWidget(
|
||||||
|
context, index, 'images/icon_password.png', '密码1');
|
||||||
|
} else if (index == 1) {
|
||||||
|
return _buildNameWidget(
|
||||||
|
context, index, 'images/icon_card.png', '卡1');
|
||||||
|
} else if (index == 2) {
|
||||||
|
return _buildNameWidget(
|
||||||
|
context, index, 'images/icon_fingerprint.png', '指纹1');
|
||||||
|
} else if (index == 3) {
|
||||||
|
return _buildNameWidget(
|
||||||
|
context, index, 'images/icon_card.png', '遥控1');
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
separatorBuilder: (context, index) {
|
||||||
|
return const Divider(
|
||||||
|
height: 1,
|
||||||
|
color: AppColors.greyLineColor,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
itemCount: 5)),
|
||||||
|
SizedBox(
|
||||||
|
height: 20.h,
|
||||||
|
),
|
||||||
|
SubmitBtn(
|
||||||
|
btnName: '确定',
|
||||||
|
onClick: () {},
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 40.h,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildNameWidget(context, index, imageName, getName) {
|
||||||
|
return GestureDetector(
|
||||||
|
child: Container(
|
||||||
|
height: 90.h,
|
||||||
|
color: Colors.white,
|
||||||
|
width: ScreenUtil().screenWidth,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
width: 30.w,
|
||||||
|
),
|
||||||
|
Image.asset(
|
||||||
|
imageName,
|
||||||
|
width: 36.w,
|
||||||
|
height: 36.w,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 10.w,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
getName,
|
||||||
|
style: TextStyle(fontSize: 22.sp, color: AppColors.blackColor),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: SizedBox(
|
||||||
|
width: 20.w,
|
||||||
|
)),
|
||||||
|
Image.asset(
|
||||||
|
isNameSelect == false
|
||||||
|
? 'images/icon_round_unSelet.png'
|
||||||
|
: 'images/icon_round_selet.png',
|
||||||
|
width: 30.sp,
|
||||||
|
height: 30.sp,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 30.w,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onTap: () {
|
||||||
|
setState(() {
|
||||||
|
isNameSelect = !isNameSelect;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -76,6 +76,17 @@ class _MineSetPageState extends State<MineSetPage> {
|
|||||||
Navigator.pushNamed(
|
Navigator.pushNamed(
|
||||||
context, Routers.authorizedAdministratorListPage);
|
context, Routers.authorizedAdministratorListPage);
|
||||||
}),
|
}),
|
||||||
|
//by DaisyWu 新增--权限管理
|
||||||
|
CommonItem(
|
||||||
|
leftTitel:
|
||||||
|
TranslationLoader.lanKeys!.authorityManagement!.tr,
|
||||||
|
rightTitle: "",
|
||||||
|
isHaveLine: true,
|
||||||
|
isHaveDirection: true,
|
||||||
|
action: () {
|
||||||
|
Navigator.pushNamed(
|
||||||
|
context, Routers.authorityManagementPage);
|
||||||
|
}),
|
||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: TranslationLoader.lanKeys!.lockGroup!.tr,
|
leftTitel: TranslationLoader.lanKeys!.lockGroup!.tr,
|
||||||
rightTitle: "",
|
rightTitle: "",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
class LanKeyEntity {
|
class LanKeyEntity {
|
||||||
LanKeyEntity({
|
LanKeyEntity(
|
||||||
this.starLock,
|
{this.starLock,
|
||||||
this.clickUnlockAndHoldDownClose,
|
this.clickUnlockAndHoldDownClose,
|
||||||
this.checkingIn,
|
this.checkingIn,
|
||||||
this.electronicKey,
|
this.electronicKey,
|
||||||
@ -199,6 +199,10 @@ class LanKeyEntity {
|
|||||||
this.touchUnlock,
|
this.touchUnlock,
|
||||||
this.pushNotification,
|
this.pushNotification,
|
||||||
this.lockUserManagement,
|
this.lockUserManagement,
|
||||||
|
this.authorityManagement,
|
||||||
|
this.associatedDevice,
|
||||||
|
this.associatedName,
|
||||||
|
this.device,
|
||||||
this.authorizedAdmin,
|
this.authorizedAdmin,
|
||||||
this.addAuthorizedAdmin,
|
this.addAuthorizedAdmin,
|
||||||
this.lockGroup,
|
this.lockGroup,
|
||||||
@ -242,6 +246,7 @@ class LanKeyEntity {
|
|||||||
this.problemThree,
|
this.problemThree,
|
||||||
this.pleaseEnterYourAnswer,
|
this.pleaseEnterYourAnswer,
|
||||||
this.aboutToExpire,
|
this.aboutToExpire,
|
||||||
|
this.deAuthorize,
|
||||||
this.changeName,
|
this.changeName,
|
||||||
this.designation,
|
this.designation,
|
||||||
this.state,
|
this.state,
|
||||||
@ -367,8 +372,7 @@ class LanKeyEntity {
|
|||||||
this.hideInvalidUnlockPermissionsTip,
|
this.hideInvalidUnlockPermissionsTip,
|
||||||
this.appUnlockRequiresMobilePhoneAccessToTheLockTip,
|
this.appUnlockRequiresMobilePhoneAccessToTheLockTip,
|
||||||
this.checkAll,
|
this.checkAll,
|
||||||
this.getVerificationCode
|
this.getVerificationCode});
|
||||||
});
|
|
||||||
|
|
||||||
LanKeyEntity.fromJson(dynamic json) {
|
LanKeyEntity.fromJson(dynamic json) {
|
||||||
starLock = json['starLock'];
|
starLock = json['starLock'];
|
||||||
@ -577,6 +581,11 @@ class LanKeyEntity {
|
|||||||
touchUnlock = json['touchUnlock'];
|
touchUnlock = json['touchUnlock'];
|
||||||
pushNotification = json['pushNotification'];
|
pushNotification = json['pushNotification'];
|
||||||
lockUserManagement = json['lockUserManagement'];
|
lockUserManagement = json['lockUserManagement'];
|
||||||
|
authorityManagement = json['authorityManagement'];
|
||||||
|
associatedDevice = json['associatedDevice'];
|
||||||
|
associatedName = json['associatedName'];
|
||||||
|
device = json['device'];
|
||||||
|
|
||||||
authorizedAdmin = json['authorizedAdmin'];
|
authorizedAdmin = json['authorizedAdmin'];
|
||||||
addAuthorizedAdmin = json['addAuthorizedAdmin'];
|
addAuthorizedAdmin = json['addAuthorizedAdmin'];
|
||||||
lockGroup = json['lockGroup'];
|
lockGroup = json['lockGroup'];
|
||||||
@ -623,6 +632,7 @@ class LanKeyEntity {
|
|||||||
problemThree = json['problemThree'];
|
problemThree = json['problemThree'];
|
||||||
pleaseEnterYourAnswer = json['pleaseEnterYourAnswer'];
|
pleaseEnterYourAnswer = json['pleaseEnterYourAnswer'];
|
||||||
aboutToExpire = json['aboutToExpire'];
|
aboutToExpire = json['aboutToExpire'];
|
||||||
|
deAuthorize = json['deAuthorize'];
|
||||||
changeName = json['changeName'];
|
changeName = json['changeName'];
|
||||||
|
|
||||||
designation = json['designation'];
|
designation = json['designation'];
|
||||||
@ -969,6 +979,10 @@ class LanKeyEntity {
|
|||||||
String? touchUnlock;
|
String? touchUnlock;
|
||||||
String? pushNotification;
|
String? pushNotification;
|
||||||
String? lockUserManagement;
|
String? lockUserManagement;
|
||||||
|
String? authorityManagement;
|
||||||
|
String? associatedDevice;
|
||||||
|
String? associatedName;
|
||||||
|
String? device;
|
||||||
String? authorizedAdmin;
|
String? authorizedAdmin;
|
||||||
String? addAuthorizedAdmin;
|
String? addAuthorizedAdmin;
|
||||||
String? lockGroup;
|
String? lockGroup;
|
||||||
@ -1015,6 +1029,7 @@ class LanKeyEntity {
|
|||||||
String? problemThree;
|
String? problemThree;
|
||||||
String? pleaseEnterYourAnswer;
|
String? pleaseEnterYourAnswer;
|
||||||
String? aboutToExpire;
|
String? aboutToExpire;
|
||||||
|
String? deAuthorize;
|
||||||
String? changeName;
|
String? changeName;
|
||||||
|
|
||||||
String? designation;
|
String? designation;
|
||||||
@ -1359,6 +1374,10 @@ class LanKeyEntity {
|
|||||||
map['touchUnlock'] = touchUnlock;
|
map['touchUnlock'] = touchUnlock;
|
||||||
map['pushNotification'] = pushNotification;
|
map['pushNotification'] = pushNotification;
|
||||||
map['lockUserManagement'] = lockUserManagement;
|
map['lockUserManagement'] = lockUserManagement;
|
||||||
|
map['authorityManagement'] = authorityManagement;
|
||||||
|
map['associatedDevice'] = associatedDevice;
|
||||||
|
map['associatedName'] = associatedName;
|
||||||
|
map['device'] = device;
|
||||||
map['authorizedAdmin'] = authorizedAdmin;
|
map['authorizedAdmin'] = authorizedAdmin;
|
||||||
map['addAuthorizedAdmin'] = addAuthorizedAdmin;
|
map['addAuthorizedAdmin'] = addAuthorizedAdmin;
|
||||||
map['lockGroup'] = lockGroup;
|
map['lockGroup'] = lockGroup;
|
||||||
@ -1406,6 +1425,7 @@ class LanKeyEntity {
|
|||||||
map['problemThree'] = problemThree;
|
map['problemThree'] = problemThree;
|
||||||
map['pleaseEnterYourAnswer'] = pleaseEnterYourAnswer;
|
map['pleaseEnterYourAnswer'] = pleaseEnterYourAnswer;
|
||||||
map['aboutToExpire'] = aboutToExpire;
|
map['aboutToExpire'] = aboutToExpire;
|
||||||
|
map['deAuthorize'] = deAuthorize;
|
||||||
map['changeName'] = changeName;
|
map['changeName'] = changeName;
|
||||||
|
|
||||||
map['designation'] = designation;
|
map['designation'] = designation;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user