1,群发钥匙新增部分逻辑判断

2,更换、新增部分图片
This commit is contained in:
Daisy 2023-09-11 09:48:47 +08:00
parent 2b7dd44856
commit 7b632e8019
31 changed files with 742 additions and 466 deletions

View File

@ -134,7 +134,7 @@
"lockEscalation":"锁升级", "lockEscalation":"锁升级",
"markedHouseState":"标记房态", "markedHouseState":"标记房态",
"unlockReminder":"开锁提醒", "unlockReminder":"开锁提醒",
"unlockQRCode":"开锁二维码", "unlockQRCode":"微信二维码",
"lockNumber":"锁编号", "lockNumber":"锁编号",
"electricQuantity":"电量", "electricQuantity":"电量",
"lockName":"名称", "lockName":"名称",

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 112 KiB

View File

@ -1,13 +1,10 @@
import 'package:flutter/widgets.dart';
import 'package:get/get.dart'; 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/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_page.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/lockUserList_page.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiver_page.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiver_page.dart';
import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_main_page.dart'; import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_main_page.dart';
import 'package:star_lock/main/lockMian/entity/lockInfoEntity.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/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';
@ -75,7 +72,6 @@ import 'main/lockDetail/electronicKey/electronicKeyPeriodValidity/electronicKeyP
import 'main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicManageKey/massSendElectronicKeyManage_page.dart'; import 'main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicManageKey/massSendElectronicKeyManage_page.dart';
import 'main/lockDetail/electronicKey/sendElectronicKey/sendElectronicManageKey/sendElectronicKeyManage_page.dart'; import 'main/lockDetail/electronicKey/sendElectronicKey/sendElectronicManageKey/sendElectronicKeyManage_page.dart';
import 'main/lockDetail/electronicKey/sendEmailNotification/sendEmailNotification_page.dart'; import 'main/lockDetail/electronicKey/sendEmailNotification/sendEmailNotification_page.dart';
import 'main/lockDetail/lockDetail/lockDetail_page.dart';
import 'main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart'; import 'main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart';
import 'main/lockDetail/otherTypeKey/otherTypeKeyDetail/otherTypeKeyDetail_page.dart'; import 'main/lockDetail/otherTypeKey/otherTypeKeyDetail/otherTypeKeyDetail_page.dart';
import 'main/lockDetail/otherTypeKey/otherTypeKeyList/otherTypeKeyList_page.dart'; import 'main/lockDetail/otherTypeKey/otherTypeKeyList/otherTypeKeyList_page.dart';
@ -754,6 +750,5 @@ abstract class AppRouters {
page: () => const MassSendReceiverPage()), page: () => const MassSendReceiverPage()),
GetPage( GetPage(
name: Routers.lockUserListPage, page: () => const LockUserListPage()) name: Routers.lockUserListPage, page: () => const LockUserListPage())
]; ];
} }

View File

@ -1,4 +1,6 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter_pickers/pickers.dart';
import 'package:flutter_pickers/time_picker/model/date_mode.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:flutter_native_contact_picker/flutter_native_contact_picker.dart'; import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart';
@ -22,6 +24,13 @@ class MassSendElectronicKeyPage extends StatefulWidget {
class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> { class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
final FlutterContactPicker _contactPicker = FlutterContactPicker(); final FlutterContactPicker _contactPicker = FlutterContactPicker();
late Contact _contact; late Contact _contact;
var _selectEffectiveDate = ''; //
var _selectFailureDate = ''; //
late DateTime _effectiveDateTime;
late DateTime _failureDateTime;
late bool _isSendSuccess;
late bool _isRemote; //
List _receiverList = [];
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -31,6 +40,16 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
DateTime dateTime = DateTime.now();
_effectiveDateTime = dateTime;
_failureDateTime = dateTime;
_selectEffectiveDate =
'${dateTime.year}-${dateTime.month}-${dateTime.day} ${dateTime.hour}:${dateTime.minute}'; //
_selectFailureDate =
'${dateTime.year}-${dateTime.month}-${dateTime.day} ${dateTime.hour}:${dateTime.minute}'; //
_isSendSuccess = false;
_isRemote = false;
} }
Widget indexChangeWidget() { Widget indexChangeWidget() {
@ -82,11 +101,21 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
Container(height: 10.h), Container(height: 10.h),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.receiver!.tr, leftTitel: TranslationLoader.lanKeys!.receiver!.tr,
rightTitle: TranslationLoader.lanKeys!.pleaseAdd!.tr, rightTitle: _receiverList.isEmpty
? TranslationLoader.lanKeys!.pleaseAdd!.tr
: _receiverList.length.toString(),
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Navigator.pushNamed(context, Routers.massSendReceiverPage); Navigator.pushNamed(context, Routers.massSendReceiverPage)
.then((value) {
if (value != null) {
value as Map<String, dynamic>;
_receiverList = value['lockUserList'];
setState(() {});
}
});
}), }),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.lock!.tr, leftTitel: TranslationLoader.lanKeys!.lock!.tr,
@ -106,12 +135,33 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
children: [ children: [
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.effectiveTime!.tr, leftTitel: TranslationLoader.lanKeys!.effectiveTime!.tr,
rightTitle: "2020.06.20 11:49", rightTitle: _selectEffectiveDate,
isHaveLine: true), isHaveLine: true,
isHaveDirection: true,
action: () {
Pickers.showDatePicker(context, mode: DateMode.YMDHM,
onConfirm: (p) {
setState(() {
_selectEffectiveDate =
'${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}';
_effectiveDateTime = DateTime.parse(_selectEffectiveDate);
});
});
}),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.failureTime!.tr, leftTitel: TranslationLoader.lanKeys!.failureTime!.tr,
rightTitle: "2020.06.20 11:49", rightTitle: _selectFailureDate,
), isHaveDirection: true,
action: () {
Pickers.showDatePicker(context, mode: DateMode.YMDHM,
onConfirm: (p) {
setState(() {
_selectFailureDate =
'${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}';
_failureDateTime = DateTime.parse(_selectFailureDate);
});
});
}),
Container(height: 10.h), Container(height: 10.h),
], ],
); );
@ -162,17 +212,20 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
} }
CupertinoSwitch _switch() { CupertinoSwitch _switch() {
bool _isOn = false;
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: _isRemote,
onChanged: (value) { onChanged: (value) {
setState(() { setState(() {
_isOn = value; _isRemote = !_isRemote;
}); });
}, },
); );
} }
String intToStr(int v) {
return (v < 10) ? "0$v" : "$v";
}
} }

View File

@ -1,10 +1,8 @@
import 'dart:ui';
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/utils.dart'; import 'package:get/utils.dart';
import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/app_settings/app_colors.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/lockUserListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart';
import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/submitBtn.dart'; import 'package:star_lock/tools/submitBtn.dart';

View File

@ -0,0 +1,92 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:star_lock/app_settings/app_colors.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart';
class massSendLockGroupCell extends StatelessWidget {
final int currentIndex;
// LockListItem itemData;
List lockListByGroup;
final VoidCallback selectLockAction;
massSendLockGroupCell(int index,
{Key? key,
required this.currentIndex,
required this.lockListByGroup,
// required this.itemData,
required this.selectLockAction})
: super(key: key);
@override
Widget build(BuildContext context) {
return ListView.separated(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: lockListByGroup.length,
itemBuilder: (_, itemIndex) {
LockListItem itemData = lockListByGroup[itemIndex];
return _itemBuilder(itemData);
},
separatorBuilder: (BuildContext context, int index) {
return const Divider(
height: 1,
color: AppColors.greyLineColor,
);
},
);
}
Widget _itemBuilder(LockListItem itemData) {
return GestureDetector(
child: Container(
height: 60.h,
color: Colors.white,
width: ScreenUtil().screenWidth,
child: Row(
children: [
SizedBox(
width: 30.w,
),
Image.asset(
'images/mine/icon_mine_gatewaySignal_prompt.png',
width: 36.w,
height: 36.w,
),
SizedBox(
width: 10.w,
),
Text(
itemData.lockAlias!,
style: TextStyle(
fontSize: 20.sp, color: AppColors.darkGrayTextColor),
),
Expanded(
child: SizedBox(
width: 20.w,
)),
Image.asset(
itemData.isCheck!
? "images/icon_round_selet.png"
: "images/icon_round_unSelet.png",
width: 30.w,
height: 30.w,
),
SizedBox(
width: 30.w,
)
],
),
),
onTap: () {
selectLockAction();
// selectNameIndex = index;
// setState(() {
// if (selectNameIndex == index) {
// isNameSelect = !isNameSelect;
// }
// });
},
);
}
}

View File

@ -52,9 +52,10 @@ class LockListData {
class LockListItem { class LockListItem {
int? lockId; int? lockId;
String? lockAlias; String? lockAlias;
bool? isCheck = false;
bool? isRefresh = false; bool? isRefresh = false;
LockListItem({this.lockId, this.lockAlias, this.isRefresh}); LockListItem({this.lockId, this.lockAlias, this.isRefresh, this.isCheck});
LockListItem.fromJson(Map<String, dynamic> json) { LockListItem.fromJson(Map<String, dynamic> json) {
lockId = json['lockId']; lockId = json['lockId'];

View File

@ -2,11 +2,13 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/utils.dart'; import 'package:get/utils.dart';
import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/app_settings/app_colors.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupCell.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/lockSeletGrouping/LockGroupListEntity.dart'; import 'package:star_lock/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/LockGroupListEntity.dart';
import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/ExpandedListView.dart'; import 'package:star_lock/tools/ExpandedListView.dart';
import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/submitBtn.dart';
import 'package:star_lock/translations/trans_lib.dart'; import 'package:star_lock/translations/trans_lib.dart';
class MassSendLockGroupListPage extends StatefulWidget { class MassSendLockGroupListPage extends StatefulWidget {
@ -22,6 +24,7 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
List lockListByGroup = []; List lockListByGroup = [];
List lockGroupList = []; List lockGroupList = [];
List clickIndexList = []; List clickIndexList = [];
int clickIndex = -1;
@override @override
void initState() { void initState() {
@ -66,6 +69,12 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
height: 10.h, height: 10.h,
), ),
Expanded(child: _buildListView(context, lockGroupList)), Expanded(child: _buildListView(context, lockGroupList)),
SubmitBtn(
btnName: '确定',
onClick: () {
Navigator.pop(context);
},
),
SizedBox( SizedBox(
height: 40.h, height: 40.h,
) )
@ -97,9 +106,10 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
dataList = entity.data!.lockList!; dataList = entity.data!.lockList!;
} }
} }
lockListByGroup = dataList;
setState(() {}); setState(() {
lockListByGroup = dataList;
});
return dataList; return dataList;
} }
@ -125,68 +135,15 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
onTap: () { onTap: () {
listLockByGroup(itemData.keyGroupId.toString()); listLockByGroup(itemData.keyGroupId.toString());
clickIndexList.add(index); clickIndexList.add(index);
clickIndex = index;
}, },
title: itemData.keyGroupName!, title: itemData.keyGroupName!,
imgName: '', imgName: '',
typeImgList: const [], typeImgList: const [],
child: ListView.separated( child: massSendLockGroupCell(index,
physics: const NeverScrollableScrollPhysics(), currentIndex: index,
shrinkWrap: true, lockListByGroup: lockListByGroup,
itemCount: lockListByGroup.length, selectLockAction: () {}),
itemBuilder: (_, itemIndex) {
LockListItem itemData = lockListByGroup[itemIndex];
return _buildNameWidget(context, itemIndex,
'images/icon_password.png', itemData.lockAlias);
},
separatorBuilder: (BuildContext context, int index) {
return const Divider(
height: 1,
color: AppColors.greyLineColor,
);
},
),
);
}
//
Widget _buildNameWidget(context, index, imageName, getName) {
return GestureDetector(
child: Container(
height: 60.h,
color: Colors.white,
width: ScreenUtil().screenWidth,
child: Row(
children: [
SizedBox(
width: 30.w,
),
Image.asset(
'images/mine/icon_mine_gatewaySignal_prompt.png',
width: 36.w,
height: 36.w,
),
SizedBox(
width: 10.w,
),
Text(
getName,
style: TextStyle(
fontSize: 20.sp, color: AppColors.darkGrayTextColor),
),
SizedBox(
width: 30.w,
)
],
),
),
onTap: () {
// selectNameIndex = index;
// setState(() {
// if (selectNameIndex == index) {
// isNameSelect = !isNameSelect;
// }
// });
},
); );
} }
} }

View File

@ -0,0 +1,155 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get_utils/get_utils.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart';
import 'package:star_lock/tools/commonItem.dart';
import 'package:star_lock/translations/trans_lib.dart';
class MassSendReceiverCell extends StatelessWidget {
final int currentIndex;
LockUserData userData;
final VoidCallback clickDeleteUser;
MassSendReceiverCell(int index,
{Key? key,
required this.currentIndex,
required this.userData,
required this.clickDeleteUser})
: super(key: key);
@override
Widget build(BuildContext context) {
TextEditingController emailOrPhoneController = TextEditingController();
TextEditingController keyNameController = TextEditingController();
return Container(
color: Colors.white,
child: Row(
children: [
GestureDetector(
child: SizedBox(
width: 40.w,
child: Row(
children: [
SizedBox(
width: 10.w,
),
Image.asset(
'images/icon_massSend_delete.png',
width: 26.w,
height: 26.w,
)
],
),
),
onTap: () {
clickDeleteUser();
// _lockUserList.removeAt(index - 1);
// setState(() {});
},
),
Expanded(
child: Column(
children: [
CommonItem(
leftTitel: TranslationLoader.lanKeys!.receiver!.tr,
rightTitle: userData.userid ?? ' ',
isHaveLine: true,
isHaveRightWidget: true,
rightWidget: getTFWidget(
true,
TranslationLoader.lanKeys!.pleaseEnterNumberOrEmail!.tr,
1,
userData)),
CommonItem(
leftTitel: TranslationLoader.lanKeys!.name!.tr,
rightTitle: userData.nickname ?? ' ',
isHaveRightWidget: true,
rightWidget: getTFWidget(
false,
TranslationLoader.lanKeys!.enterYourName!.tr,
2,
userData)),
],
))
],
),
);
}
TextEditingController _receiverController(String getStr) {
TextEditingController controller = TextEditingController(text: getStr);
controller.addListener(() {
print(controller.text);
});
return controller;
}
TextEditingController _nickNameController(String getStr) {
TextEditingController controller = TextEditingController(text: getStr);
controller.addListener(() {
print(controller.text);
});
return controller;
}
//
Widget getTFWidget(
bool isHaveBtn, String tfStr, int lineIndex, LockUserData userData) {
return SizedBox(
height: 50.h,
width: 320.w,
child: Row(
children: [
Expanded(
child: TextField(
controller: lineIndex == 1
? _receiverController(userData.userid ?? '')
: _nickNameController(userData.nickname ?? ''),
//
maxLines: 1,
autofocus: false,
textAlign: TextAlign.end,
decoration: InputDecoration(
//
contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0),
hintText: tfStr,
hintStyle: TextStyle(fontSize: 22.sp),
//线
border: InputBorder.none,
),
),
),
SizedBox(
width: 10.w,
),
isHaveBtn
? Container(
width: 32.w,
height: 32.w,
decoration: const BoxDecoration(
color: Colors.white,
image: DecorationImage(
image: AssetImage('images/icon_addressBook.png'),
fit: BoxFit.fill),
),
alignment: Alignment.center,
child: InkWell(
onTap: () async {
// Contact? currentContact =
// await _contactPicker.selectContact();
// setState(() {
// _contact = currentContact!;
// // print("object111111111111 ${_contact.fullName} ${_contact.phoneNumbers}");
// });
},
),
)
: Container()
],
),
);
}
}

View File

@ -3,7 +3,8 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/utils.dart'; import 'package:get/utils.dart';
import 'package:star_lock/appRouters.dart'; import 'package:star_lock/appRouters.dart';
import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/app_settings/app_colors.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/lockUserListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiverCell.dart';
import 'package:star_lock/tools/commonItem.dart'; import 'package:star_lock/tools/commonItem.dart';
import 'package:star_lock/translations/trans_lib.dart'; import 'package:star_lock/translations/trans_lib.dart';
@ -49,6 +50,19 @@ class _MassSendReceiverPageState extends State<MassSendReceiverPage> {
icon: const Icon(Icons.arrow_back_ios, color: Colors.white), icon: const Icon(Icons.arrow_back_ios, color: Colors.white),
onPressed: () => Navigator.of(context).pop(), onPressed: () => Navigator.of(context).pop(),
), ),
actions: [
TextButton(
child: Text(
TranslationLoader.lanKeys!.save!.tr,
style: TextStyle(color: Colors.white, fontSize: 24.sp),
),
onPressed: () {
Map<String, dynamic> resultMap = {};
resultMap['lockUserList'] = _lockUserList;
Navigator.pop(context, resultMap);
},
),
],
), ),
body: Column( body: Column(
children: [ children: [
@ -83,6 +97,9 @@ class _MassSendReceiverPageState extends State<MassSendReceiverPage> {
child: ListView.separated( child: ListView.separated(
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
LockUserData data = _lockUserList[index]; LockUserData data = _lockUserList[index];
emailOrPhoneController.text = data.userid ?? '';
keyNameController.text = data.nickname ?? '';
return _itemBuilder(index, data); return _itemBuilder(index, data);
}, },
itemCount: _lockUserList.length, itemCount: _lockUserList.length,
@ -149,110 +166,14 @@ class _MassSendReceiverPageState extends State<MassSendReceiverPage> {
} }
Widget _itemBuilder(int index, LockUserData userData) { Widget _itemBuilder(int index, LockUserData userData) {
return Container( return MassSendReceiverCell(
color: Colors.white, index,
child: Row( currentIndex: index,
children: [ userData: userData,
GestureDetector( clickDeleteUser: () {
child: SizedBox(
width: 40.w,
child: Row(
children: [
SizedBox(
width: 10.w,
),
Image.asset(
'images/icon_massSend_delete.png',
width: 26.w,
height: 26.w,
)
],
),
),
onTap: () {
_lockUserList.removeAt(index - 1); _lockUserList.removeAt(index - 1);
setState(() {}); setState(() {});
}, },
),
Expanded(
child: Column(
children: [
CommonItem(
leftTitel: TranslationLoader.lanKeys!.receiver!.tr,
rightTitle: userData.userid ?? ' ',
isHaveLine: true,
isHaveRightWidget: true,
rightWidget: getTFWidget(
true,
TranslationLoader.lanKeys!.pleaseEnterNumberOrEmail!.tr,
1)),
CommonItem(
leftTitel: TranslationLoader.lanKeys!.name!.tr,
rightTitle: userData.nickname ?? ' ',
isHaveRightWidget: true,
rightWidget: getTFWidget(
false, TranslationLoader.lanKeys!.enterYourName!.tr, 2)),
],
))
],
),
);
}
//
Widget getTFWidget(bool isHaveBtn, String tfStr, int lineIndex) {
return SizedBox(
height: 50.h,
width: 320.w,
child: Row(
children: [
Expanded(
child: TextField(
controller:
lineIndex == 1 ? emailOrPhoneController : keyNameController,
//
maxLines: 1,
// controller: _controller,
autofocus: false,
textAlign: TextAlign.end,
decoration: InputDecoration(
//
contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0),
hintText: tfStr,
hintStyle: TextStyle(fontSize: 22.sp),
//线
border: InputBorder.none,
),
),
),
SizedBox(
width: 10.w,
),
isHaveBtn
? Container(
width: 32.w,
height: 32.w,
decoration: const BoxDecoration(
color: Colors.white,
image: DecorationImage(
image: AssetImage('images/icon_addressBook.png'),
fit: BoxFit.fill),
),
alignment: Alignment.center,
child: InkWell(
onTap: () async {
// Contact? currentContact =
// await _contactPicker.selectContact();
// setState(() {
// _contact = currentContact!;
// // print("object111111111111 ${_contact.fullName} ${_contact.phoneNumbers}");
// });
},
),
)
: Container()
],
),
); );
} }
} }

View File

@ -128,12 +128,21 @@ class _BasicInformationPageState extends State<BasicInformationPage> {
leftTitel: TranslationLoader leftTitel: TranslationLoader
.lanKeys!.adminOpenLockPassword!.tr, .lanKeys!.adminOpenLockPassword!.tr,
rightTitle: "", rightTitle: "",
isHaveLine: false, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Navigator.pushNamed(context, Navigator.pushNamed(context,
Routers.adminOpenLockPasswordPage); Routers.adminOpenLockPasswordPage);
}), }),
CommonItem(
leftTitel:
TranslationLoader.lanKeys!.unlockQRCode!.tr,
rightTitle: "",
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.toNamed(Routers.unlockQRCodePage);
}),
], ],
), ),
), ),

View File

@ -65,57 +65,43 @@ class _LockSetPageState extends State<LockSetPage> {
height: 10.h, height: 10.h,
), ),
CommonItem( CommonItem(
leftTitel: leftTitel: TranslationLoader.lanKeys!.doorMagnetic!.tr,
TranslationLoader.lanKeys!.wirelessKeyboard!.tr,
rightTitle: "", rightTitle: "",
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
// Get.toNamed(Routers.wirelessKeyboardPage); Get.toNamed(Routers.doorMagneticPage);
Toast.show(msg: "功能暂未开放"); // Toast.show(msg: "功能暂未开放");
}), }),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.doorMagnetic!.tr, leftTitel:
TranslationLoader.lanKeys!.wirelessKeyboard!.tr,
rightTitle: "", rightTitle: "",
isHaveLine: false, isHaveLine: false,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
// Get.toNamed(Routers.doorMagneticPage); Get.toNamed(Routers.wirelessKeyboardPage);
Toast.show(msg: "功能暂未开放"); // Toast.show(msg: "功能暂未开放");
}), }),
SizedBox( SizedBox(
height: 10.h, height: 10.h,
), ),
Obx(()=> CommonItem(
leftTitel: TranslationLoader.lanKeys!.remoteUnlocking!.tr,
rightTitle: state.getKeyInfosData.value.remoteEnable == 1 ? TranslationLoader.lanKeys!.opened!.tr : TranslationLoader.lanKeys!.closed!.tr,
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.toNamed(Routers.remoteUnlockingPage, arguments: state.getKeyInfosData.value);
})),
Obx(() => CommonItem( Obx(() => CommonItem(
leftTitel: leftTitel:
TranslationLoader.lanKeys!.automaticBlocking!.tr, TranslationLoader.lanKeys!.automaticBlocking!.tr,
rightTitle: state.getKeyInfosData.value.autoLockTime! > -1 ? "${state.getKeyInfosData.value.autoLockTime!.toString()}s" : TranslationLoader.lanKeys!.closed!.tr, rightTitle: state.getKeyInfosData.value.autoLockTime! > -1
? "${state.getKeyInfosData.value.autoLockTime!.toString()}s"
: TranslationLoader.lanKeys!.closed!.tr,
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Get.toNamed(Routers.automaticBlockingPage, arguments: state.getKeyInfosData.value); Get.toNamed(Routers.automaticBlockingPage,
arguments: state.getKeyInfosData.value);
})), })),
Obx(() => CommonItem(
leftTitel:
TranslationLoader.lanKeys!.normallyOpenMode!.tr,
rightTitle: state.getKeyInfosData.value.passageMode == 1 ? TranslationLoader.lanKeys!.opened!.tr : TranslationLoader.lanKeys!.closed!.tr,
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.toNamed(Routers.normallyOpenModePage, arguments: state.getKeyInfosData.value);
}),),
Obx(() { Obx(() {
var titleStr = ""; var titleStr = "";
if(state.getKeyInfosData.value.lockSound == 1){ if (state.getKeyInfosData.value.lockSound == 1) {
switch(state.getKeyInfosData.value.volume){ switch (state.getKeyInfosData.value.volume) {
case 1: case 1:
titleStr = TranslationLoader.lanKeys!.low!.tr; titleStr = TranslationLoader.lanKeys!.low!.tr;
break; break;
@ -132,7 +118,7 @@ class _LockSetPageState extends State<LockSetPage> {
titleStr = TranslationLoader.lanKeys!.higher!.tr; titleStr = TranslationLoader.lanKeys!.higher!.tr;
break; break;
} }
}else{ } else {
titleStr = TranslationLoader.lanKeys!.closed!.tr; titleStr = TranslationLoader.lanKeys!.closed!.tr;
} }
return CommonItem( return CommonItem(
@ -141,51 +127,113 @@ class _LockSetPageState extends State<LockSetPage> {
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Get.toNamed(Routers.lockSoundSetPage, arguments: state.getKeyInfosData.value); Get.toNamed(Routers.lockSoundSetPage,
arguments: state.getKeyInfosData.value);
}); });
}), }),
Obx(() => CommonItem( Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.burglarAlarm!.tr, leftTitel: TranslationLoader.lanKeys!.burglarAlarm!.tr,
rightTitle: state.getKeyInfosData.value.tamperAlert == 1 ? TranslationLoader.lanKeys!.opened!.tr : TranslationLoader.lanKeys!.closed!.tr, rightTitle: state.getKeyInfosData.value.tamperAlert == 1
? TranslationLoader.lanKeys!.opened!.tr
: TranslationLoader.lanKeys!.closed!.tr,
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Get.toNamed(Routers.burglarAlarmPage, arguments: state.getKeyInfosData.value); Get.toNamed(Routers.burglarAlarmPage,
arguments: state.getKeyInfosData.value);
})),
SizedBox(
height: 10.h,
),
Obx(
() => CommonItem(
leftTitel:
TranslationLoader.lanKeys!.normallyOpenMode!.tr,
rightTitle: state.getKeyInfosData.value.passageMode == 1
? TranslationLoader.lanKeys!.opened!.tr
: TranslationLoader.lanKeys!.closed!.tr,
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.toNamed(Routers.normallyOpenModePage,
arguments: state.getKeyInfosData.value);
}),
),
Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.remoteUnlocking!.tr,
rightTitle: state.getKeyInfosData.value.remoteEnable == 1
? TranslationLoader.lanKeys!.opened!.tr
: TranslationLoader.lanKeys!.closed!.tr,
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.toNamed(Routers.remoteUnlockingPage,
arguments: state.getKeyInfosData.value);
})), })),
Obx(() => CommonItem( Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.resetButton!.tr, leftTitel: TranslationLoader.lanKeys!.resetButton!.tr,
rightTitle: state.getKeyInfosData.value.resetButton == 1 ? TranslationLoader.lanKeys!.opened!.tr : TranslationLoader.lanKeys!.closed!.tr, rightTitle: state.getKeyInfosData.value.resetButton == 1
? TranslationLoader.lanKeys!.opened!.tr
: TranslationLoader.lanKeys!.closed!.tr,
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Get.toNamed(Routers.resetButtonPage, arguments: state.getKeyInfosData.value); Get.toNamed(Routers.resetButtonPage,
arguments: state.getKeyInfosData.value);
})), })),
CommonItem( SizedBox(
leftTitel: TranslationLoader.lanKeys!.unlockQRCode!.tr, height: 10.h,
rightTitle: "", ),
Obx(() {
var title = "";
if (state.getKeyInfosData.value.roomStatus == 1) {
title = TranslationLoader.lanKeys!.checkedIn!.tr;
} else if (state.getKeyInfosData.value.roomStatus == 2) {
title = TranslationLoader.lanKeys!.leisure!.tr;
}
return CommonItem(
leftTitel:
TranslationLoader.lanKeys!.markedHouseState!.tr,
rightTitle: title,
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Get.toNamed(Routers.unlockQRCodePage); Get.toNamed(Routers.markedHouseStatePage,
arguments: state.getKeyInfosData.value);
});
}), }),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.wifiDistributionNetwork!.tr, leftTitel: TranslationLoader.lanKeys!.checkingIn!.tr,
rightTitle: "",
isHaveLine: true,
isHaveRightWidget: true,
rightWidget: SizedBox(width: 60.w, child: _switch())),
CommonItem(
leftTitel: TranslationLoader.lanKeys!.unlockReminder!.tr,
rightTitle: "", rightTitle: "",
isHaveLine: false, isHaveLine: false,
isHaveRightWidget: true,
rightWidget: SizedBox(width: 60.w, child: _switch())),
SizedBox(
height: 10.h,
),
CommonItem(
leftTitel: TranslationLoader
.lanKeys!.wifiDistributionNetwork!.tr,
rightTitle: "",
isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Get.toNamed(Routers.configuringWifiPage); Get.toNamed(Routers.configuringWifiPage);
}), }),
SizedBox(
height: 10.h,
),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.lockTime!.tr, leftTitel: TranslationLoader.lanKeys!.lockTime!.tr,
rightTitle: "", rightTitle: "",
isHaveLine: true, isHaveLine: true,
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Get.toNamed(Routers.lockTimePage, arguments: state.getKeyInfosData.value); Get.toNamed(Routers.lockTimePage,
arguments: state.getKeyInfosData.value);
}), }),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.diagnose!.tr, leftTitel: TranslationLoader.lanKeys!.diagnose!.tr,
@ -220,53 +268,6 @@ class _LockSetPageState extends State<LockSetPage> {
action: () { action: () {
Get.toNamed(Routers.lockEscalationPage); Get.toNamed(Routers.lockEscalationPage);
}), }),
SizedBox(
height: 10.h,
),
CommonItem(
leftTitel: "Amazon Alexa",
rightTitle: "",
isHaveLine: true,
isHaveDirection: true,
action: () {}),
CommonItem(
leftTitel: "Google Home",
rightTitle: "",
isHaveLine: true,
isHaveDirection: true,
action: () {}),
SizedBox(
height: 10.h,
),
Obx((){
var title = "";
if(state.getKeyInfosData.value.roomStatus == 1){
title = TranslationLoader.lanKeys!.checkedIn!.tr;
}else if(state.getKeyInfosData.value.roomStatus == 2){
title = TranslationLoader.lanKeys!.leisure!.tr;
}
return CommonItem(
leftTitel:
TranslationLoader.lanKeys!.markedHouseState!.tr,
rightTitle: title,
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.toNamed(Routers.markedHouseStatePage, arguments: state.getKeyInfosData.value);
});
}),
CommonItem(
leftTitel: TranslationLoader.lanKeys!.checkingIn!.tr,
rightTitle: "",
isHaveLine: true,
isHaveRightWidget: true,
rightWidget: SizedBox(width: 60.w, child: _switch())),
CommonItem(
leftTitel: TranslationLoader.lanKeys!.unlockReminder!.tr,
rightTitle: "",
isHaveLine: false,
isHaveRightWidget: true,
rightWidget: SizedBox(width: 60.w, child: _switch())),
SizedBox( SizedBox(
height: 30.h, height: 30.h,
), ),

View File

@ -21,7 +21,7 @@ class _UnlockQRCodePageState extends State<UnlockQRCodePage> {
return Scaffold( return Scaffold(
backgroundColor: AppColors.mainBackgroundColor, backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar( appBar: TitleAppBar(
barTitle: TranslationLoader.lanKeys!.burglarAlarm!.tr, barTitle: TranslationLoader.lanKeys!.unlockQRCode!.tr,
haveBack: true, haveBack: true,
backgroundColor: AppColors.mainColor), backgroundColor: AppColors.mainColor),
body: Column( body: Column(

View File

@ -56,7 +56,8 @@ class _LockDetailPageState extends State<LockDetailPage> {
Storage.setStringList(saveBluePrivateKey, savePrivateKeyList); Storage.setStringList(saveBluePrivateKey, savePrivateKeyList);
// signKey // signKey
List<int> signKeyData = state.keyInfos.value.bluetooth!.signKey!.cast<int>(); List<int> signKeyData =
state.keyInfos.value.bluetooth!.signKey!.cast<int>();
var saveSignKeyList = changeIntListToStringList(signKeyData); var saveSignKeyList = changeIntListToStringList(signKeyData);
Storage.setStringList(saveBlueSignKey, saveSignKeyList); Storage.setStringList(saveBlueSignKey, saveSignKeyList);
// print("publicKeyData:$publicKeyData saveStrList:$saveStrList privateKeyData:$privateKeyData savePrivateKeyList:$savePrivateKeyList"); // print("publicKeyData:$publicKeyData saveStrList:$saveStrList privateKeyData:$privateKeyData savePrivateKeyList:$savePrivateKeyList");
@ -129,7 +130,8 @@ class _LockDetailPageState extends State<LockDetailPage> {
width: 268.w, height: 268.w), width: 268.w, height: 268.w),
)), )),
Visibility( Visibility(
visible: state.keyInfos.value.remoteEnable == 1 ? true: false, visible:
state.keyInfos.value.remoteEnable == 1 ? true : false,
child: Align( child: Align(
alignment: const Alignment(0.6, 1), alignment: const Alignment(0.6, 1),
child: Image.asset( child: Image.asset(
@ -179,85 +181,92 @@ class _LockDetailPageState extends State<LockDetailPage> {
crossAxisSpacing: 20.w, crossAxisSpacing: 20.w,
mainAxisSpacing: 0.h, mainAxisSpacing: 0.h,
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
children: getShowWidget() children: getShowWidget()),
),
), ),
); );
} }
List<Widget> getShowWidget(){ List<Widget> getShowWidget() {
var showWidgetArr = <Widget>[]; var showWidgetArr = <Widget>[];
// //
showWidgetArr.add(bottomItem('images/main/icon_main_clockingIn.png', showWidgetArr.add(bottomItem('images/main/icon_main_clockingIn.png',
TranslationLoader.lanKeys!.checkingIn!.tr, () { TranslationLoader.lanKeys!.checkingIn!.tr, () {
Get.toNamed( Routers.checkingInListPage); Get.toNamed(Routers.checkingInListPage);
})); }));
var defaultWidgetArr = [ var defaultWidgetArr = [
// //
bottomItem('images/main/icon_main_electronicKey.png', TranslationLoader.lanKeys!.electronicKey!.tr, () { bottomItem('images/main/icon_main_electronicKey.png',
TranslationLoader.lanKeys!.electronicKey!.tr, () {
Get.toNamed(Routers.electronicKeyListPage, arguments: { Get.toNamed(Routers.electronicKeyListPage, arguments: {
"lockMainEntity": widget.lockMainEntity, "lockMainEntity": widget.lockMainEntity,
"keyInfo": widget.keyInfo "keyInfo": widget.keyInfo
}); });
}), }),
// //
bottomItem('images/main/icon_main_password.png', TranslationLoader.lanKeys!.password!.tr, () { bottomItem('images/main/icon_main_password.png',
Get.toNamed(Routers.passwordKeyListPage, TranslationLoader.lanKeys!.password!.tr, () {
arguments: { Get.toNamed(Routers.passwordKeyListPage, arguments: {
"lockMainEntity": widget.lockMainEntity, "lockMainEntity": widget.lockMainEntity,
"keyInfo": widget.keyInfo "keyInfo": widget.keyInfo
}); });
}), }),
// ic卡 // ic卡
bottomItem('images/main/icon_main_icCard.png', TranslationLoader.lanKeys!.card!.tr, () { bottomItem('images/main/icon_main_icCard.png',
Get.toNamed(Routers.otherTypeKeyListPage, TranslationLoader.lanKeys!.card!.tr, () {
arguments: 0); Get.toNamed(Routers.otherTypeKeyListPage, arguments: 0);
}), }),
// //
bottomItem('images/main/icon_main_fingerprint.png', TranslationLoader.lanKeys!.fingerprint!.tr, () { bottomItem('images/main/icon_main_fingerprint.png',
Get.toNamed(Routers.otherTypeKeyListPage, TranslationLoader.lanKeys!.fingerprint!.tr, () {
arguments: 1); Get.toNamed(Routers.otherTypeKeyListPage, arguments: 1);
}), }),
// //
bottomItem('images/main/icon_main_remoteControl.png', TranslationLoader.lanKeys!.remoteControl!.tr, () { bottomItem('images/main/icon_main_remoteControl.png',
Get.toNamed(Routers.otherTypeKeyListPage, TranslationLoader.lanKeys!.remoteControl!.tr, () {
arguments: 2); Get.toNamed(Routers.otherTypeKeyListPage, arguments: 2);
}), }),
]; ];
showWidgetArr.addAll(defaultWidgetArr); showWidgetArr.addAll(defaultWidgetArr);
//-> //->
showWidgetArr.add(bottomItem('images/main/icon_main_fingerprint.png', '人脸', () { showWidgetArr.add(
bottomItem('images/main/icon_face.png', '人脸', () {
// Navigator.pushNamed(context, Routers.otherTypeKeyListPage, // Navigator.pushNamed(context, Routers.otherTypeKeyListPage,
// arguments: 1); // arguments: 1);
}),); }),
);
//-> //->
showWidgetArr.add(bottomItem('images/main/icon_main_fingerprint.png', '监控', () { showWidgetArr.add(
bottomItem('images/main/icon_catEyes.png', '监控', () {
// Navigator.pushNamed(context, Routers.otherTypeKeyListPage, // Navigator.pushNamed(context, Routers.otherTypeKeyListPage,
// arguments: 1); // arguments: 1);
}),); }),
);
var endWiddget = [ var endWiddget = [
// //
bottomItem('images/main/icon_main_authorizedAdmin.png', TranslationLoader.lanKeys!.authorizedAdmin!.tr, () { bottomItem('images/main/icon_main_authorizedAdmin.png',
TranslationLoader.lanKeys!.authorizedAdmin!.tr, () {
Get.toNamed(Routers.authorizedAdminListPage, arguments: { Get.toNamed(Routers.authorizedAdminListPage, arguments: {
"lockMainEntity": widget.lockMainEntity, "lockMainEntity": widget.lockMainEntity,
"keyInfo": widget.keyInfo "keyInfo": widget.keyInfo
}); });
}), }),
// //
bottomItem('images/main/icon_main_operatingRecord.png', TranslationLoader.lanKeys!.operatingRecord!.tr, () { bottomItem('images/main/icon_main_operatingRecord.png',
Get.toNamed(Routers.lockOperatingRecordPage, TranslationLoader.lanKeys!.operatingRecord!.tr, () {
arguments: { Get.toNamed(Routers.lockOperatingRecordPage, arguments: {
"lockMainEntity": widget.lockMainEntity, "lockMainEntity": widget.lockMainEntity,
"keyInfo": widget.keyInfo "keyInfo": widget.keyInfo
}); });
}), }),
// //
bottomItem('images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr, () { bottomItem(
'images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr,
() {
Get.toNamed(Routers.lockSetPage, arguments: widget.keyInfo); Get.toNamed(Routers.lockSetPage, arguments: widget.keyInfo);
}), }),
]; ];

View File

@ -86,8 +86,8 @@ class _PasswordKeyManageTabbarPageState
Tab _tab(ItemView item) { Tab _tab(ItemView item) {
return Tab( return Tab(
// text: item.title, // text: item.title,
child: Container( child: SizedBox(
width: 1.sw / 8, width: item.title.length > 2 ? 1.sw / 8 : 1.sw / 12,
// margin: EdgeInsets.all(10.w), // margin: EdgeInsets.all(10.w),
// color: Colors.red, // color: Colors.red,
child: Text( child: Text(

View File

@ -41,7 +41,7 @@ class _SeletLockTypePageState extends State<SeletLockTypePage> with BaseWidget {
TranslationLoader.lanKeys!.doorLock!.tr, () { TranslationLoader.lanKeys!.doorLock!.tr, () {
Navigator.pushNamed(context, Routers.addLockPage); Navigator.pushNamed(context, Routers.addLockPage);
}), }),
lockTypeItem('images/lockType/lockType_doorLock.png', lockTypeItem('images/lockType/lockType_NFCLock.png',
TranslationLoader.lanKeys!.NFCPassiveLock!.tr, () { TranslationLoader.lanKeys!.NFCPassiveLock!.tr, () {
Navigator.pushNamed(context, Routers.addLockPage); Navigator.pushNamed(context, Routers.addLockPage);
}), }),
@ -57,8 +57,7 @@ class _SeletLockTypePageState extends State<SeletLockTypePage> with BaseWidget {
TranslationLoader.lanKeys!.parkingLock!.tr, () { TranslationLoader.lanKeys!.parkingLock!.tr, () {
Navigator.pushNamed(context, Routers.addLockPage); Navigator.pushNamed(context, Routers.addLockPage);
}), }),
lockTypeItem( lockTypeItem('images/lockType/lockType_entranceGuardLock.png',
'images/lockType/lockType_intelligentLockCore.png',
TranslationLoader.lanKeys!.itelligentAccessControl!.tr, TranslationLoader.lanKeys!.itelligentAccessControl!.tr,
() { () {
Navigator.pushNamed(context, Routers.addLockPage); Navigator.pushNamed(context, Routers.addLockPage);
@ -68,7 +67,7 @@ class _SeletLockTypePageState extends State<SeletLockTypePage> with BaseWidget {
// TranslationLoader.lanKeys!.bicycleLock!.tr, () { // TranslationLoader.lanKeys!.bicycleLock!.tr, () {
// Navigator.pushNamed(context, Routers.addLockPage); // Navigator.pushNamed(context, Routers.addLockPage);
// }), // }),
lockTypeItem('images/lockType/lockType_remoteControl.png', lockTypeItem('images/lockType/lockType_gatewayLock.png',
TranslationLoader.lanKeys!.gateway!.tr, () { TranslationLoader.lanKeys!.gateway!.tr, () {
Navigator.pushNamed(context, Routers.gatewayListPage); Navigator.pushNamed(context, Routers.gatewayListPage);
}), }),
@ -138,8 +137,8 @@ class _SeletLockTypePageState extends State<SeletLockTypePage> with BaseWidget {
SizedBox(width: 30.w), SizedBox(width: 30.w),
Image.asset( Image.asset(
lockTypeIcon, lockTypeIcon,
width: 32.w, width: 48.w,
height: 48.w, height: 60.w,
), ),
SizedBox(width: 20.w), SizedBox(width: 20.w),
Expanded( Expanded(

View File

@ -17,32 +17,62 @@ class MineMultiLanguagePage extends StatefulWidget {
} }
class _MineMultiLanguagePageState extends State<MineMultiLanguagePage> { class _MineMultiLanguagePageState extends State<MineMultiLanguagePage> {
final logic = Get.put(MineMultiLanguageLogic()); final logic = Get.put(MineMultiLanguageLogic());
final state = Get.find<MineMultiLanguageLogic>().state; final state = Get.find<MineMultiLanguageLogic>().state;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
backgroundColor: AppColors.mainBackgroundColor, backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(barTitle: TranslationLoader.lanKeys!.multilingual!.tr, haveBack:true, backgroundColor: AppColors.mainColor), appBar: TitleAppBar(
barTitle: TranslationLoader.lanKeys!.multilingual!.tr,
haveBack: true,
backgroundColor: AppColors.mainColor),
body: Column( body: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: _children(), children: _children(),
) ));
);
} }
List<Widget> _children(){ List<Widget> _children() {
List<Widget> l = []; List<Widget> l = [];
for(int i = 0; i < state.languages.length; i++){ l.add(
CommonItem(
leftTitel: '跟随系统',
rightTitle: "",
allHeight: 90.h,
isHaveLine: true,
isHaveDirection: false,
isHaveRightWidget: true,
rightWidget: Container(),
action: () {
// logic.changeLanguage(e);
}),
);
for (int i = 0; i < state.languages.length; i++) {
var e = state.languages[i]; var e = state.languages[i];
var lanType = ExtensionLanguageType.fromLanguageCode(e.languageCode); var lanType = ExtensionLanguageType.fromLanguageCode(e.languageCode);
l.add(CommonItem(leftTitel:lanType.lanTitle, rightTitle:"", allHeight: 90.h, isHaveLine: true, isHaveDirection:false, isHaveRightWidget: true, rightWidget: Obx(() => state.currentLanguageType.value == lanType ? Image(image: const AssetImage("images/icon_item_checked.png"),width:30.w,height:30.w, fit: BoxFit.contain,): Container()), action: (){ l.add(
CommonItem(
leftTitel: lanType.lanTitle,
rightTitle: "",
allHeight: 90.h,
isHaveLine: true,
isHaveDirection: false,
isHaveRightWidget: true,
rightWidget: Obx(() => state.currentLanguageType.value == lanType
? Image(
image: const AssetImage("images/icon_item_checked.png"),
width: 30.w,
height: 30.w,
fit: BoxFit.contain,
)
: Container()),
action: () {
logic.changeLanguage(e); logic.changeLanguage(e);
}),); }),
);
} }
return l; return l;
} }

View File

@ -153,6 +153,21 @@ class _MineSetPageState extends State<MineSetPage> {
Navigator.pushNamed(context, Navigator.pushNamed(context,
Routers.aPPUnlockNeedMobileNetworkingLockPage); Routers.aPPUnlockNeedMobileNetworkingLockPage);
}), }),
SizedBox(
height: 10.h,
),
CommonItem(
leftTitel: "Amazon Alexa",
rightTitle: "",
isHaveLine: true,
isHaveDirection: true,
action: () {}),
CommonItem(
leftTitel: "Google Home",
rightTitle: "",
isHaveLine: true,
isHaveDirection: true,
action: () {}),
// CommonItem(leftTitel:TranslationLoader.lanKeys!.valueAddedServices!.tr, rightTitle:"", isHaveDirection: true, action: (){ // CommonItem(leftTitel:TranslationLoader.lanKeys!.valueAddedServices!.tr, rightTitle:"", isHaveDirection: true, action: (){
// //
// }), // }),

View File

@ -46,7 +46,8 @@ abstract class Api {
final String getWifiServiceIpURL = '/wifiLock/getWifiServiceIp'; // Wifi锁服务器 final String getWifiServiceIpURL = '/wifiLock/getWifiServiceIp'; // Wifi锁服务器
final String updateSpecialValueUrl = '/room/updateSpecialValue'; // / final String updateSpecialValueUrl = '/room/updateSpecialValue'; // /
final String setAutoLockTimeUrl = '/room/setAutoLockTime'; // final String setAutoLockTimeUrl = '/room/setAutoLockTime'; //
final String getPassageModeConfigUrl = '/room/getPassageModeConfig'; // final String getPassageModeConfigUrl =
'/room/getPassageModeConfig'; //
final String configPassageModeUrl = '/room/configPassageMode'; // final String configPassageModeUrl = '/room/configPassageMode'; //
final String updateSettingUrl = '/room/updateSetting'; // /// final String updateSettingUrl = '/room/updateSetting'; // ///
final String roomQueryDateUrl = '/room/queryDate'; // final String roomQueryDateUrl = '/room/queryDate'; //
@ -56,5 +57,4 @@ abstract class Api {
final String lockUserListURL = '/keyUser/listKeyUser'; // final String lockUserListURL = '/keyUser/listKeyUser'; //
final String canSendKeyURL = '/keyUser/canSendKey'; // final String canSendKeyURL = '/keyUser/canSendKey'; //
final String batchSendKeyURL = '/key/batchSend'; // final String batchSendKeyURL = '/key/batchSend'; //
} }

View File

@ -297,10 +297,8 @@ class ApiProvider extends BaseProvider {
})); }));
// Wifi锁服务器 // Wifi锁服务器
Future<Response> getWifiLockServiceIpAndPort() => post( Future<Response> getWifiLockServiceIpAndPort() =>
getWifiServiceIpURL.toUrl, post(getWifiServiceIpURL.toUrl, jsonEncode({}));
jsonEncode({
}));
Future<Response> passwordKeyList( Future<Response> passwordKeyList(
String keyStatus, String keyStatus,
@ -428,10 +426,10 @@ class ApiProvider extends BaseProvider {
lockListByGroupURL.toUrl, lockListByGroupURL.toUrl,
jsonEncode({'type': type, 'keyGroupId': keyGroupId})); jsonEncode({'type': type, 'keyGroupId': keyGroupId}));
///
///
// //
Future<Response> remoteUnlockingOpenOrCloseLoadData(String lockId, String featureValue) => Future<Response> remoteUnlockingOpenOrCloseLoadData(
String lockId, String featureValue) =>
post( post(
updateSpecialValueUrl.toUrl, updateSpecialValueUrl.toUrl,
jsonEncode({ jsonEncode({
@ -440,7 +438,8 @@ class ApiProvider extends BaseProvider {
})); }));
// //
Future<Response> setAutoUnlockLoadData(String lockId, String autoLockTime, String type) => Future<Response> setAutoUnlockLoadData(
String lockId, String autoLockTime, String type) =>
post( post(
setAutoLockTimeUrl.toUrl, setAutoLockTimeUrl.toUrl,
jsonEncode({ jsonEncode({
@ -450,15 +449,22 @@ class ApiProvider extends BaseProvider {
})); }));
// //
Future<Response> getPassageModeConfigLoadData(String lockId) => Future<Response> getPassageModeConfigLoadData(String lockId) => post(
post(
getPassageModeConfigUrl.toUrl, getPassageModeConfigUrl.toUrl,
jsonEncode({ jsonEncode({
'lockId': lockId, 'lockId': lockId,
})); }));
// //
Future<Response> configPassageMode(String lockId, String passageMode, String autoUnlock, String type, String startDate, String endDate, String isAllDay, List weekDays) => Future<Response> configPassageMode(
String lockId,
String passageMode,
String autoUnlock,
String type,
String startDate,
String endDate,
String isAllDay,
List weekDays) =>
post( post(
configPassageModeUrl.toUrl, configPassageModeUrl.toUrl,
jsonEncode({ jsonEncode({
@ -473,7 +479,8 @@ class ApiProvider extends BaseProvider {
})); }));
// //
Future<Response> setLockSetGeneralSetting(String lockId, String changeType, String isOn, String type) => Future<Response> setLockSetGeneralSetting(
String lockId, String changeType, String isOn, String type) =>
post( post(
updateSettingUrl.toUrl, updateSettingUrl.toUrl,
jsonEncode({ jsonEncode({
@ -484,27 +491,25 @@ class ApiProvider extends BaseProvider {
})); }));
// //
Future<Response> getLockTimeFromGatewayLoadData(String lockId) => Future<Response> getLockTimeFromGatewayLoadData(String lockId) => post(
post(
roomQueryDateUrl.toUrl, roomQueryDateUrl.toUrl,
jsonEncode({ jsonEncode({
'lockId': lockId, 'lockId': lockId,
})); }));
// //
Future<Response> getServerDatetimeLoadData(String lockId) => Future<Response> getServerDatetimeLoadData(String lockId) => post(
post(
getServerDatetimeUrl.toUrl, getServerDatetimeUrl.toUrl,
jsonEncode({ jsonEncode({
'lockId': lockId, 'lockId': lockId,
})); }));
// //
Future<Response> getLockVersionInfoLoadData(String lockId) => Future<Response> getLockVersionInfoLoadData(String lockId) => post(
post(
getLockVersionInfoUrl.toUrl, getLockVersionInfoUrl.toUrl,
jsonEncode({ jsonEncode({
'lockId': lockId,})); 'lockId': lockId,
}));
Future<Response> listLockByGroup(String type, String keyGroupId) => post( Future<Response> listLockByGroup(String type, String keyGroupId) => post(
listLockByGroupURL.toUrl, listLockByGroupURL.toUrl,
@ -532,6 +537,25 @@ class ApiProvider extends BaseProvider {
'keyGroupIdList': keyGroupIdList, 'keyGroupIdList': keyGroupIdList,
'lockIdList': lockIdList 'lockIdList': lockIdList
})); }));
Future<Response> batchSendKey(
String endDate,
String keyGroupIdList,
String lockIdList,
String createUser,
String isRemoteUnlock,
String keyNameForAdmin,
String receiverUsername,
String startDate,
String countryCode,
String usernameType) =>
post(
batchSendKeyURL.toUrl,
jsonEncode({
'endDate': endDate,
'keyGroupIdList': keyGroupIdList,
'lockIdList': lockIdList
}));
} }
extension ExtensionString on String { extension ExtensionString on String {

View File

@ -2,8 +2,8 @@ import 'package:get/get.dart';
import 'package:star_lock/login/seletCountryRegion/common/countryRegionEntity.dart'; import 'package:star_lock/login/seletCountryRegion/common/countryRegionEntity.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.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/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/lockUserListEntity.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/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';
@ -408,28 +408,25 @@ class ApiRepository {
return PasswordKeyEntity.fromJson(res.body); return PasswordKeyEntity.fromJson(res.body);
} }
// Wifi锁服务器 // Wifi锁服务器
Future<ConfiguringWifiEntity> getWifiLockServiceIpAndPort() async { Future<ConfiguringWifiEntity> getWifiLockServiceIpAndPort() async {
final res = await apiProvider.getWifiLockServiceIpAndPort(); final res = await apiProvider.getWifiLockServiceIpAndPort();
return ConfiguringWifiEntity.fromJson(res.body); return ConfiguringWifiEntity.fromJson(res.body);
} }
/// ///
// / // /
Future<LoginEntity> remoteUnlockingOpenOrClose( Future<LoginEntity> remoteUnlockingOpenOrClose({
{
required String lockId, required String lockId,
required String featureValue, required String featureValue,
}) async { }) async {
final res = final res = await apiProvider.remoteUnlockingOpenOrCloseLoadData(
await apiProvider.remoteUnlockingOpenOrCloseLoadData(lockId, featureValue); lockId, featureValue);
return LoginEntity.fromJson(res.body); return LoginEntity.fromJson(res.body);
} }
// //
Future<LoginEntity> setAutoUnlock( Future<LoginEntity> setAutoUnlock({
{
required String lockId, required String lockId,
required String autoLockTime, required String autoLockTime,
required String type, required String type,
@ -440,18 +437,15 @@ class ApiRepository {
} }
// configPassageMode // configPassageMode
Future<GetPassageModeConfigEntity> getPassageModeConfig( Future<GetPassageModeConfigEntity> getPassageModeConfig({
{
required String lockId, required String lockId,
}) async { }) async {
final res = final res = await apiProvider.getPassageModeConfigLoadData(lockId);
await apiProvider.getPassageModeConfigLoadData(lockId);
return GetPassageModeConfigEntity.fromJson(res.body); return GetPassageModeConfigEntity.fromJson(res.body);
} }
// //
Future<GetPassageModeConfigEntity> configPassageModeLoadData( Future<GetPassageModeConfigEntity> configPassageModeLoadData({
{
required String lockId, required String lockId,
required String passageMode, required String passageMode,
required String autoUnlock, required String autoUnlock,
@ -461,52 +455,46 @@ class ApiRepository {
required String isAllDay, required String isAllDay,
required List weekDays, required List weekDays,
}) async { }) async {
final res = final res = await apiProvider.configPassageMode(lockId, passageMode,
await apiProvider.configPassageMode(lockId, passageMode, autoUnlock, type, startDate, endDate, isAllDay, weekDays); autoUnlock, type, startDate, endDate, isAllDay, weekDays);
return GetPassageModeConfigEntity.fromJson(res.body); return GetPassageModeConfigEntity.fromJson(res.body);
} }
// //
Future<LoginEntity> setLockSetGeneralSettingData( Future<LoginEntity> setLockSetGeneralSettingData({
{
required String lockId, required String lockId,
required String changeType, required String changeType,
required String isOn, required String isOn,
required String type, required String type,
}) async { }) async {
final res = final res = await apiProvider.setLockSetGeneralSetting(
await apiProvider.setLockSetGeneralSetting(lockId, changeType, isOn, type); lockId, changeType, isOn, type);
return LoginEntity.fromJson(res.body); return LoginEntity.fromJson(res.body);
} }
// //
Future<GetPassageModeConfigEntity> getLockTimeFromGateway( Future<GetPassageModeConfigEntity> getLockTimeFromGateway({
{
required String lockId, required String lockId,
}) async { }) async {
final res = final res = await apiProvider.getLockTimeFromGatewayLoadData(lockId);
await apiProvider.getLockTimeFromGatewayLoadData(lockId);
return GetPassageModeConfigEntity.fromJson(res.body); return GetPassageModeConfigEntity.fromJson(res.body);
} }
// //
Future<GetServerDatetimeEntity> getServerDatetimeData( Future<GetServerDatetimeEntity> getServerDatetimeData({
{
required String lockId, required String lockId,
}) async { }) async {
final res = final res = await apiProvider.getServerDatetimeLoadData(lockId);
await apiProvider.getServerDatetimeLoadData(lockId);
return GetServerDatetimeEntity.fromJson(res.body); return GetServerDatetimeEntity.fromJson(res.body);
} }
// //
Future<GetServerDatetimeEntity> getLockVersionInfoData( Future<GetServerDatetimeEntity> getLockVersionInfoData({
{
required String lockId, required String lockId,
}) async { }) async {
final res = final res = await apiProvider.getLockVersionInfoLoadData(lockId);
await apiProvider.getLockVersionInfoLoadData(lockId); return GetServerDatetimeEntity.fromJson(res.body);
return GetServerDatetimeEntity.fromJson(res.body);} }
// //
Future<MassSendLockGroupListEntity> listLockByGroup( Future<MassSendLockGroupListEntity> listLockByGroup(
@ -535,4 +523,30 @@ class ApiRepository {
await apiProvider.canSendKey(endDate, keyGroupIdList, lockIdList); await apiProvider.canSendKey(endDate, keyGroupIdList, lockIdList);
return KeyDetailEntity.fromJson(res.body); return KeyDetailEntity.fromJson(res.body);
} }
//
Future<KeyDetailEntity> batchSendKey(
String endDate,
String keyGroupIdList,
String lockIdList,
String createUser,
String isRemoteUnlock,
String keyNameForAdmin,
String receiverUsername,
String startDate,
String countryCode,
String usernameType) async {
final res = await apiProvider.batchSendKey(
endDate,
keyGroupIdList,
lockIdList,
createUser,
isRemoteUnlock,
keyNameForAdmin,
receiverUsername,
startDate,
countryCode,
usernameType);
return KeyDetailEntity.fromJson(res.body);
}
} }

View File

@ -2,6 +2,7 @@ import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:get/get_connect/http/src/request/request.dart'; import 'package:get/get_connect/http/src/request/request.dart';
import 'package:star_lock/login/login/entity/LoginData.dart';
import '../login/login/entity/LoginEntity.dart'; import '../login/login/entity/LoginEntity.dart';
import '../tools/platform_info_services.dart'; import '../tools/platform_info_services.dart';
@ -18,7 +19,10 @@ FutureOr<Request> requestInterceptor(Request request) async {
String? xToken = ''; String? xToken = '';
final data = await Storage.getString('userLoginData'); final data = await Storage.getString('userLoginData');
if (data != null && data.isNotEmpty) { if (data != null && data.isNotEmpty) {
xToken = LoginEntity.fromJson(jsonDecode(data)).data!.accessToken; LoginData loginData = LoginData.fromJson(jsonDecode(data));
xToken = loginData.accessToken;
// xToken = LoginEntity.fromJson(jsonDecode(data)).data!.accessToken;
} }
request.headers['Authorization'] = "Bearer ${xToken ?? ''}"; request.headers['Authorization'] = "Bearer ${xToken ?? ''}";
return request; return request;

View File

@ -45,11 +45,10 @@ class ShowTFView extends StatelessWidget {
controller: controller, controller: controller,
autofocus: false, autofocus: false,
decoration: InputDecoration( decoration: InputDecoration(
//
contentPadding: contentPadding:
EdgeInsets.only(top: 20.h, left: 15.0, bottom: 13.h), const EdgeInsets.only(left: 5, top: -8, bottom: 6),
hintText: tipTitle, hintText: TranslationLoader.lanKeys!.pleaseEnter!.tr,
hintStyle: TextStyle(fontSize: 28.sp), hintStyle: TextStyle(fontSize: 22.sp, height: 1.0),
//线 //线
border: InputBorder.none, border: InputBorder.none,
// //