1,操作记录页面修改

2,发送电子钥匙页面修改
3,部分bug修改
This commit is contained in:
Daisy 2024-02-28 15:27:10 +08:00
parent 027f81fb61
commit 82f4fe293c
20 changed files with 396 additions and 320 deletions

View File

@ -2,6 +2,7 @@ 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/doorLockLog/doorLockLog_page.dart'; import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_page.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_page.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_page.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';
@ -59,7 +60,6 @@ import 'main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdayS
import 'main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_page.dart'; import 'main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_page.dart';
import 'main/lockDetail/checkingIn/checkingInStaff/checkingInSetStaffList/checkingInStaffList_page.dart'; import 'main/lockDetail/checkingIn/checkingInStaff/checkingInSetStaffList/checkingInStaffList_page.dart';
import 'main/lockDetail/checkingIn/checkingInStaff/checkingInStaffDetail/checkingInStaffDetail_page.dart'; import 'main/lockDetail/checkingIn/checkingInStaff/checkingInStaffDetail/checkingInStaffDetail_page.dart';
import 'main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord_page.dart';
import 'main/lockDetail/face/addFace/addFace_page.dart'; import 'main/lockDetail/face/addFace/addFace_page.dart';
import 'main/lockDetail/face/addFaceType/addFaceTypeManage/addFaceTypeManage_page.dart'; import 'main/lockDetail/face/addFaceType/addFaceTypeManage/addFaceTypeManage_page.dart';
import 'main/lockDetail/face/faceList/faceList_page.dart'; import 'main/lockDetail/face/faceList/faceList_page.dart';

View File

@ -6,6 +6,7 @@ import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_entity.dart'; import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_entity.dart';
import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_state.dart'; import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_state.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
import 'package:star_lock/main/lockDetail/lockOperatingRecord/lockOperatingRecordGetLastRecordTime_entity.dart'; import 'package:star_lock/main/lockDetail/lockOperatingRecord/lockOperatingRecordGetLastRecordTime_entity.dart';
import 'package:star_lock/tools/eventBusEventManage.dart'; import 'package:star_lock/tools/eventBusEventManage.dart';
@ -18,7 +19,6 @@ import '../../../blue/sender_manage.dart';
import '../../../network/api_repository.dart'; import '../../../network/api_repository.dart';
import '../../../tools/baseGetXController.dart'; import '../../../tools/baseGetXController.dart';
import '../../../tools/storage.dart'; import '../../../tools/storage.dart';
import '../electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart';
class DoorLockLogLogic extends BaseGetXController { class DoorLockLogLogic extends BaseGetXController {
DoorLockLogState state = DoorLockLogState(); DoorLockLogState state = DoorLockLogState();

View File

@ -1,6 +1,6 @@
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_state.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_state.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.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/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';

View File

@ -1,6 +1,6 @@
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_state.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_state.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKeyEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKeyEntity.dart';
import 'package:star_lock/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';

View File

@ -0,0 +1,31 @@
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_state.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';
class KeyOperationRecordLogic extends BaseGetXController {
final KeyOperationRecordState state = KeyOperationRecordState();
//
Future<void> mockNetworkDataRequest() async {
KeyOperationRecordEntity entity = await ApiRepository.to.lockRecordList(
'0',
state.keyId.value,
'0',
state.lockId.value,
'1',
'1',
'20',
'0',
'',
'',
'',
state.keyboardPwdId.value,
state.cardId.value,
state.fingerprintId.value);
if (entity.errorCode!.codeIsSuccessful) {
print("操作记录列表成功:${entity.data?.itemList}");
state.dataList.value = entity.data!.itemList!;
}
}
}

View File

@ -1,13 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart'; import 'package:star_lock/app_settings/app_colors.dart';
import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_logic.dart';
import 'package:star_lock/tools/noData.dart';
import '../../../../app_settings/app_colors.dart'; import 'package:star_lock/tools/titleAppBar.dart';
import '../../../../tools/titleAppBar.dart'; import 'package:star_lock/translations/trans_lib.dart';
import '../../../../translations/trans_lib.dart';
class KeyOperationRecordPage extends StatefulWidget { class KeyOperationRecordPage extends StatefulWidget {
const KeyOperationRecordPage({Key? key}) : super(key: key); const KeyOperationRecordPage({Key? key}) : super(key: key);
@ -17,31 +16,11 @@ class KeyOperationRecordPage extends StatefulWidget {
} }
class _KeyOperationRecordPageState extends State<KeyOperationRecordPage> { class _KeyOperationRecordPageState extends State<KeyOperationRecordPage> {
String _keyId = ''; final logic = Get.put(KeyOperationRecordLogic());
String _lockId = ''; final state = Get.find<KeyOperationRecordLogic>().state;
String _keyboardPwdId = ''; //ID
String _cardId = ''; //ID
String _fingerprintId = ''; //ID
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
dynamic obj = ModalRoute.of(context)?.settings.arguments;
if (obj != null && (obj["keyId"] != null)) {
_keyId = obj["keyId"];
}
if (obj != null && (obj["lockId"] != null)) {
_lockId = obj["lockId"];
}
if (obj != null && (obj["keyboardPwdId"] != null)) {
_keyboardPwdId = obj["keyboardPwdId"];
}
if (obj != null && (obj["cardId"] != null)) {
_cardId = obj["cardId"];
}
if (obj != null && (obj["fingerprintId"] != null)) {
_fingerprintId = obj["fingerprintId"];
}
return Scaffold( return Scaffold(
backgroundColor: AppColors.mainBackgroundColor, backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar( appBar: TitleAppBar(
@ -49,8 +28,12 @@ class _KeyOperationRecordPageState extends State<KeyOperationRecordPage> {
haveBack: true, haveBack: true,
backgroundColor: AppColors.mainColor, backgroundColor: AppColors.mainColor,
), ),
body: FutureBuilder<List<KeyRecordDataItem>>( body: Obx(() => state.dataList.value.isEmpty
future: mockNetworkDataRequest(), ? NoData()
: _buildMainUI(state.dataList.value)),
/*
FutureBuilder<List<KeyRecordDataItem>>(
future: logic.mockNetworkDataRequest(),
builder: (BuildContext context, builder: (BuildContext context,
AsyncSnapshot<List<KeyRecordDataItem>> snapshot) { AsyncSnapshot<List<KeyRecordDataItem>> snapshot) {
// //
@ -70,39 +53,17 @@ class _KeyOperationRecordPageState extends State<KeyOperationRecordPage> {
} }
} else { } else {
// loading // loading
return Container(); return Center(
} child: Text(
}), '暂无数据',
style:
TextStyle(color: AppColors.blackColor, fontSize: 24.sp),
),
); );
} }
}),
// */
Future<List<KeyRecordDataItem>> mockNetworkDataRequest() async { );
KeyOperationRecordEntity entity = await ApiRepository.to.lockRecordList(
'0',
_keyId,
'0',
_lockId,
'1',
'1',
'20',
'0',
'',
'',
'',
_keyboardPwdId,
_cardId,
_fingerprintId);
if (entity.errorCode!.codeIsSuccessful) {
print("操作记录列表成功:${entity.data?.itemList}");
}
final data = entity.data;
if (data != null) {
return data.itemList!;
} else {
List<KeyRecordDataItem> dataList = [];
return dataList;
}
} }
Widget _buildMainUI(List<KeyRecordDataItem> itemDataList) { Widget _buildMainUI(List<KeyRecordDataItem> itemDataList) {

View File

@ -0,0 +1,32 @@
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
class KeyOperationRecordState {
var dataList = <KeyRecordDataItem>[].obs;
final keyId = ''.obs;
final lockId = ''.obs;
final keyboardPwdId = ''.obs; //ID
final cardId = ''.obs; //ID
final fingerprintId = ''.obs; //ID
KeyOperationRecordState() {
Map map = Get.arguments;
// dynamic obj = ModalRoute.of(context)?.settings.arguments;
if ((map["keyId"] != null)) {
keyId.value = map["keyId"];
}
if ((map["lockId"] != null)) {
lockId.value = map["lockId"];
}
if ((map["keyboardPwdId"] != null)) {
keyboardPwdId.value = map["keyboardPwdId"];
}
if ((map["cardId"] != null)) {
cardId.value = map["cardId"];
}
if ((map["fingerprintId"] != null)) {
fingerprintId.value = map["fingerprintId"];
}
}
}

View File

@ -92,8 +92,7 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
SizedBox( SizedBox(
height: 20.h, height: 20.h,
), ),
Expanded( Expanded(child: _buildMainUI()),
child: _buildMainUI()),
SizedBox( SizedBox(
height: 20.h, height: 20.h,
), ),
@ -123,13 +122,19 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
Widget _buildMainUI() { Widget _buildMainUI() {
return Obx(() => state.itemDataList.value.isEmpty return Obx(() => state.itemDataList.value.isEmpty
? NoData(noDataHeight: 1.sh - ScreenUtil().statusBarHeight - ScreenUtil().bottomBarHeight - 190.h - 64.h) ? NoData(
noDataHeight: 1.sh -
ScreenUtil().statusBarHeight -
ScreenUtil().bottomBarHeight -
190.h -
64.h)
: SlidableAutoCloseBehavior( : SlidableAutoCloseBehavior(
child: ListView.separated( child: ListView.separated(
shrinkWrap: true, shrinkWrap: true,
itemCount: state.itemDataList.value.length, itemCount: state.itemDataList.value.length,
itemBuilder: (c, index) { itemBuilder: (c, index) {
ElectronicKeyListItem indexEntity = state.itemDataList.value[index]; ElectronicKeyListItem indexEntity =
state.itemDataList.value[index];
String useDateStr = ''; //使 String useDateStr = ''; //使
String keyStatus = ''; // String keyStatus = ''; //
@ -155,7 +160,8 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
children: [ children: [
SlidableAction( SlidableAction(
onPressed: (BuildContext context) { onPressed: (BuildContext context) {
showIosTipViewDialog(context, indexEntity.keyId!.toString()); showIosTipViewDialog(
context, indexEntity.keyId!.toString());
}, },
backgroundColor: Colors.red, backgroundColor: Colors.red,
foregroundColor: Colors.white, foregroundColor: Colors.white,
@ -163,8 +169,14 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
), ),
], ],
), ),
child: _electronicKeyItem('images/controls_user.png', indexEntity.keyName!, useDateStr, keyStatus, isAdminKey, () { child: _electronicKeyItem(
Navigator.pushNamed(context, Routers.electronicKeyDetailPage, 'images/controls_user.png',
indexEntity.keyName!,
useDateStr,
keyStatus,
isAdminKey, () {
Navigator.pushNamed(
context, Routers.electronicKeyDetailPage,
arguments: {"itemData": indexEntity}).then((val) { arguments: {"itemData": indexEntity}).then((val) {
if (val != null) { if (val != null) {
logic.mockNetworkDataRequest(); logic.mockNetworkDataRequest();
@ -291,7 +303,11 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
child: Row( child: Row(
children: [ children: [
SizedBox(width: 30.w), SizedBox(width: 30.w),
Image.asset(avatarURL, width: 60.w, height: 60.w,), Image.asset(
avatarURL,
width: 60.w,
height: 60.w,
),
SizedBox(width: 20.w), SizedBox(width: 20.w),
Expanded( Expanded(
child: Column( child: Column(
@ -305,16 +321,20 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
child: Row( child: Row(
children: [ children: [
Flexible( Flexible(
child: Text( child: Text(receiveUser,
receiveUser,
maxLines: 1, maxLines: 1,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
style: TextStyle(fontSize: 24.sp, color: AppColors.blackColor) style: TextStyle(
), fontSize: 24.sp,
color: AppColors.blackColor)),
), ),
SizedBox(width: 10.w), SizedBox(width: 10.w),
isAdminKey isAdminKey
? Image.asset('images/icon_electronicKey_admin.png', width: 24.w, height: 20.w,) ? Image.asset(
'images/icon_electronicKey_admin.png',
width: 24.w,
height: 20.w,
)
: Container(), : Container(),
], ],
), ),

View File

@ -53,7 +53,8 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
} }
Widget indexChangeWidget() { Widget indexChangeWidget() {
if (state.isSendSuccess.value == true && state.sendSucceedType.value.toString() == widget.type) { if (state.isSendSuccess.value == true &&
state.sendSucceedType.value.toString() == widget.type) {
return sendElectronicKeySucceed(); return sendElectronicKeySucceed();
} else { } else {
switch (int.parse(widget.type)) { switch (int.parse(widget.type)) {
@ -66,7 +67,7 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
keyTimeWidget(), keyTimeWidget(),
remoteUnlockingWidget(), remoteUnlockingWidget(),
keyRealNameWidget(), keyRealNameWidget(),
keyBottomWidget() keyBottomWidget(state.timeLimitTips)
], ],
); );
} }
@ -78,7 +79,7 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
keyInfoWidget(), keyInfoWidget(),
remoteUnlockingWidget(), remoteUnlockingWidget(),
keyRealNameWidget(), keyRealNameWidget(),
keyBottomWidget() keyBottomWidget(state.permanentTips)
], ],
); );
} }
@ -90,7 +91,7 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
keyInfoWidget(), keyInfoWidget(),
remoteUnlockingWidget(), remoteUnlockingWidget(),
keyRealNameWidget(), keyRealNameWidget(),
keyBottomWidget() keyBottomWidget(state.onceLimitTips)
], ],
); );
} }
@ -103,7 +104,7 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
keyPeriodValidityWidget(), keyPeriodValidityWidget(),
remoteUnlockingWidget(), remoteUnlockingWidget(),
keyRealNameWidget(), keyRealNameWidget(),
keyBottomWidget() keyBottomWidget(state.cycleLimitTips)
], ],
); );
} }
@ -144,7 +145,6 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
result as Map<String, dynamic>; result as Map<String, dynamic>;
state.countryCode.value = result['code']; state.countryCode.value = result['code'];
state.countryName.value = result['countryName']; state.countryName.value = result['countryName'];
setState(() {});
} }
}, },
), ),
@ -171,13 +171,11 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
action: () { action: () {
Pickers.showDatePicker(context, mode: DateMode.YMDHM, Pickers.showDatePicker(context, mode: DateMode.YMDHM,
onConfirm: (p) { onConfirm: (p) {
setState(() {
state.selectEffectiveDate.value = state.selectEffectiveDate.value =
'${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}'; '${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}';
state.effectiveDateTime.value = state.effectiveDateTime.value =
DateTime.parse(state.selectEffectiveDate.value); DateTime.parse(state.selectEffectiveDate.value);
}); });
});
}), }),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.failureTime!.tr, leftTitel: TranslationLoader.lanKeys!.failureTime!.tr,
@ -186,13 +184,11 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
action: () { action: () {
Pickers.showDatePicker(context, mode: DateMode.YMDHM, Pickers.showDatePicker(context, mode: DateMode.YMDHM,
onConfirm: (p) { onConfirm: (p) {
setState(() {
state.selectFailureDate.value = state.selectFailureDate.value =
'${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}'; '${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}';
state.failureDateTime.value = state.failureDateTime.value =
DateTime.parse(state.selectFailureDate.value); DateTime.parse(state.selectFailureDate.value);
}); });
});
}), }),
Container(height: 10.h), Container(height: 10.h),
], ],
@ -221,7 +217,7 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
Widget keyPeriodValidityWidget() { Widget keyPeriodValidityWidget() {
return Column( return Column(
children: [ children: [
Obx(() => CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.periodValidity!.tr, leftTitel: TranslationLoader.lanKeys!.periodValidity!.tr,
rightTitle: state.weekdaysList.value.isEmpty rightTitle: state.weekdaysList.value.isEmpty
? '' ? ''
@ -238,7 +234,7 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
state.failureTimestamp.value = state.failureTimestamp.value =
result['endDate'].millisecondsSinceEpoch; result['endDate'].millisecondsSinceEpoch;
} }
})), }),
SizedBox( SizedBox(
height: 10.h, height: 10.h,
) )
@ -246,7 +242,7 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
); );
} }
Widget keyBottomWidget() { Widget keyBottomWidget(String sendElectronicKeyTips) {
return Column( return Column(
children: [ children: [
Container( Container(
@ -256,7 +252,7 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
children: [ children: [
Expanded( Expanded(
child: Text( child: Text(
TranslationLoader.lanKeys!.sendKeyBottomTip!.tr, sendElectronicKeyTips,
textAlign: TextAlign.start, textAlign: TextAlign.start,
style: TextStyle( style: TextStyle(
fontSize: 18.sp, color: AppColors.darkGrayTextColor), fontSize: 18.sp, color: AppColors.darkGrayTextColor),
@ -411,7 +407,6 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
// if (entity.errorCode!.codeIsSuccessful) { // if (entity.errorCode!.codeIsSuccessful) {
// print("标记为已入住成功啦啦啦啦啦"); // print("标记为已入住成功啦啦啦啦啦");
// Toast.show(msg: "标记成功"); // Toast.show(msg: "标记成功");
// setState(() {});
// } else { // } else {
// Toast.show(msg: '操作失败'); // Toast.show(msg: '操作失败');
// } // }
@ -423,7 +418,6 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
print("标记为已入住成功啦啦啦啦啦"); print("标记为已入住成功啦啦啦啦啦");
logic.showToast("标记成功"); logic.showToast("标记成功");
setState(() {});
} }
} }
@ -461,10 +455,18 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
// contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0), // contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0),
hintText: tfStr, hintText: tfStr,
hintStyle: TextStyle(fontSize: 22.sp), hintStyle: TextStyle(fontSize: 22.sp),
focusedBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)), focusedBorder: const OutlineInputBorder(
disabledBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)), borderSide:
enabledBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)), BorderSide(width: 0, color: Colors.transparent)),
border: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)), disabledBorder: const OutlineInputBorder(
borderSide:
BorderSide(width: 0, color: Colors.transparent)),
enabledBorder: const OutlineInputBorder(
borderSide:
BorderSide(width: 0, color: Colors.transparent)),
border: const OutlineInputBorder(
borderSide:
BorderSide(width: 0, color: Colors.transparent)),
contentPadding: const EdgeInsets.symmetric(vertical: 0), contentPadding: const EdgeInsets.symmetric(vertical: 0),
), ),
style: TextStyle( style: TextStyle(
@ -489,7 +491,6 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
onTap: () async { onTap: () async {
Contact? currentContact = Contact? currentContact =
await state.contactPicker.selectContact(); await state.contactPicker.selectContact();
setState(() {
state.contact = currentContact!; state.contact = currentContact!;
if (currentContact.phoneNumbers!.isNotEmpty) { if (currentContact.phoneNumbers!.isNotEmpty) {
state.emailOrPhoneController.text = currentContact state.emailOrPhoneController.text = currentContact
@ -499,7 +500,6 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
if (currentContact.fullName!.isNotEmpty) { if (currentContact.fullName!.isNotEmpty) {
state.keyNameController.text = currentContact.fullName!; state.keyNameController.text = currentContact.fullName!;
} }
});
}, },
), ),
) )
@ -512,15 +512,16 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
// //
Widget remoteUnlockingWidget() { Widget remoteUnlockingWidget() {
return Visibility( return Visibility(
visible: state.keyInfo.value.lockSetting!.remoteUnlock == 1 ? true : false, visible:
state.keyInfo.value.lockSetting!.remoteUnlock == 1 ? true : false,
child: Column( child: Column(
children: [ children: [
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.remoteUnlockingAllowed!.tr, leftTitel: TranslationLoader.lanKeys!.remoteUnlockingAllowed!.tr,
rightTitle: "", rightTitle: "",
isHaveRightWidget: true, isHaveRightWidget: true,
rightWidget: rightWidget: SizedBox(
SizedBox(width: 60.w, height: 50.h, child: _remoteSwitch(true)), width: 60.w, height: 50.h, child: _remoteSwitch(true)),
action: () {}), action: () {}),
Container(height: 10.h), Container(height: 10.h),
], ],
@ -537,13 +538,11 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
value: value:
isRemote ? state.isRemoteUnlock.value : state.isAuthentication.value, isRemote ? state.isRemoteUnlock.value : state.isAuthentication.value,
onChanged: (value) { onChanged: (value) {
setState(() {
if (isRemote) { if (isRemote) {
state.isRemoteUnlock.value = !state.isRemoteUnlock.value; state.isRemoteUnlock.value = !state.isRemoteUnlock.value;
} else { } else {
state.isAuthentication.value = !state.isAuthentication.value; state.isAuthentication.value = !state.isAuthentication.value;
} }
});
}, },
); );
} }

View File

@ -37,6 +37,11 @@ class SendElectronicKeyState {
final sendSucceedType = 0.obs; final sendSucceedType = 0.obs;
final timeLimitTips = '接收者在有效期内可以不限次数使用'; //
final permanentTips = '接收者可以使用此App开关锁'; //
final onceLimitTips = '单次钥匙有效期为1小时只能使用一次'; //
final cycleLimitTips = '接收者可以在有效期内的固定时间段里,不限次数使用'; //
SendElectronicKeyState() { SendElectronicKeyState() {
Map map = Get.arguments; Map map = Get.arguments;
keyInfo.value = map["keyInfo"]; keyInfo.value = map["keyInfo"];

View File

@ -5,8 +5,8 @@ import 'package:flutter_reactive_ble/flutter_reactive_ble.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:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
import '../../../appRouters.dart';
import '../../../app_settings/app_colors.dart'; import '../../../app_settings/app_colors.dart';
import '../../../blue/blue_manage.dart'; import '../../../blue/blue_manage.dart';
import '../../../blue/io_protocol/io_addUser.dart'; import '../../../blue/io_protocol/io_addUser.dart';
@ -21,7 +21,6 @@ import '../../../network/api_repository.dart';
import '../../../tools/baseGetXController.dart'; import '../../../tools/baseGetXController.dart';
import '../../../tools/eventBusEventManage.dart'; import '../../../tools/eventBusEventManage.dart';
import '../../../tools/storage.dart'; import '../../../tools/storage.dart';
import '../electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart';
import '../lockOperatingRecord/lockOperatingRecordGetLastRecordTime_entity.dart'; import '../lockOperatingRecord/lockOperatingRecordGetLastRecordTime_entity.dart';
import 'lockDetail_state.dart'; import 'lockDetail_state.dart';
import 'lockNetToken_entity.dart'; import 'lockNetToken_entity.dart';
@ -376,7 +375,9 @@ class LockDetailLogic extends BaseGetXController {
// state.animationController.forward(); // state.animationController.forward();
}); });
BlueManage().bludSendData(state.keyInfos.value.bluetooth!.bluetoothDeviceName!, (DeviceConnectionState deviceConnectionState) async { BlueManage()
.bludSendData(state.keyInfos.value.bluetooth!.bluetoothDeviceName!,
(DeviceConnectionState deviceConnectionState) async {
if (deviceConnectionState == DeviceConnectionState.connected) { if (deviceConnectionState == DeviceConnectionState.connected) {
// //
var privateKey = await Storage.getStringList(saveBluePrivateKey); var privateKey = await Storage.getStringList(saveBluePrivateKey);
@ -390,7 +391,8 @@ class LockDetailLogic extends BaseGetXController {
if (token != null) { if (token != null) {
getTokenList = changeStringListToIntList(token); getTokenList = changeStringListToIntList(token);
} }
print("BlueManage().connectDeviceName:${BlueManage().connectDeviceName} authUserID:${state.senderUserId.toString()} keyID:${state.keyInfos.value.keyId.toString()} userID:${await Storage.getUid()}"); print(
"BlueManage().connectDeviceName:${BlueManage().connectDeviceName} authUserID:${state.senderUserId.toString()} keyID:${state.keyInfos.value.keyId.toString()} userID:${await Storage.getUid()}");
IoSenderManage.senderAddUser( IoSenderManage.senderAddUser(
lockID: BlueManage().connectDeviceName, lockID: BlueManage().connectDeviceName,
authUserID: state.senderUserId.toString(), authUserID: state.senderUserId.toString(),
@ -437,7 +439,8 @@ class LockDetailLogic extends BaseGetXController {
var token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
print("openDoorTokenPubToken:$getTokenList getPrivateKeyList:$getPrivateKeyList"); print(
"openDoorTokenPubToken:$getTokenList getPrivateKeyList:$getPrivateKeyList");
// List<int>listData = await IoSenderManage.senderOpenLock( // List<int>listData = await IoSenderManage.senderOpenLock(
// keyID: BlueManage().connectDeviceName, // keyID: BlueManage().connectDeviceName,
// userID: await Storage.getUid(), // userID: await Storage.getUid(),
@ -449,7 +452,9 @@ class LockDetailLogic extends BaseGetXController {
// signKey: signKeyDataList, // signKey: signKeyDataList,
// privateKey: getPrivateKeyList, // privateKey: getPrivateKeyList,
// ); // );
BlueManage().bludSendData(state.keyInfos.value.bluetooth!.bluetoothDeviceName!, (DeviceConnectionState deviceConnectionState) async { BlueManage()
.bludSendData(state.keyInfos.value.bluetooth!.bluetoothDeviceName!,
(DeviceConnectionState deviceConnectionState) async {
if (deviceConnectionState == DeviceConnectionState.connected) { if (deviceConnectionState == DeviceConnectionState.connected) {
IoSenderManage.senderOpenLock( IoSenderManage.senderOpenLock(
keyID: BlueManage().connectDeviceName, keyID: BlueManage().connectDeviceName,
@ -540,7 +545,8 @@ class LockDetailLogic extends BaseGetXController {
showBlueConnetctToastTimer(action: () { showBlueConnetctToastTimer(action: () {
dismissEasyLoading(); dismissEasyLoading();
}); });
BlueManage().bludSendData(BlueManage().connectDeviceName, (DeviceConnectionState deviceConnectionState) async { BlueManage().bludSendData(BlueManage().connectDeviceName,
(DeviceConnectionState deviceConnectionState) async {
if (deviceConnectionState == DeviceConnectionState.connected) { if (deviceConnectionState == DeviceConnectionState.connected) {
dismissEasyLoading(); dismissEasyLoading();
var privateKey = await Storage.getStringList(saveBluePrivateKey); var privateKey = await Storage.getStringList(saveBluePrivateKey);
@ -672,7 +678,8 @@ class LockDetailLogic extends BaseGetXController {
// token // token
void getLockNetToken() async { void getLockNetToken() async {
LockNetTokenEntity entity = await ApiRepository.to.getLockNetToken(lockId: state.keyInfos.value.lockId.toString()); LockNetTokenEntity entity = await ApiRepository.to
.getLockNetToken(lockId: state.keyInfos.value.lockId.toString());
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
state.lockNetToken = entity.data!.token!; state.lockNetToken = entity.data!.token!;
print("state.lockNetToken:${state.lockNetToken}"); print("state.lockNetToken:${state.lockNetToken}");
@ -698,7 +705,9 @@ class LockDetailLogic extends BaseGetXController {
// //
void getLockRecordLastUploadDataTime() async { void getLockRecordLastUploadDataTime() async {
LockOperatingRecordGetLastRecordTimeEntity entity = await ApiRepository.to.getLockRecordLastUploadDataTime(lockId: state.keyInfos.value.lockId.toString()); LockOperatingRecordGetLastRecordTimeEntity entity = await ApiRepository.to
.getLockRecordLastUploadDataTime(
lockId: state.keyInfos.value.lockId.toString());
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
senderReferEventRecordTime(entity.data!.operateDate! ~/ 1000); senderReferEventRecordTime(entity.data!.operateDate! ~/ 1000);
} }
@ -716,27 +725,34 @@ class LockDetailLogic extends BaseGetXController {
// //
Future<void> uploadElectricQuantityRequest(String electricQuantity) async { Future<void> uploadElectricQuantityRequest(String electricQuantity) async {
KeyOperationRecordEntity entity = await ApiRepository.to.uploadElectricQuantity(electricQuantity, state.keyInfos.value.lockId.toString()); KeyOperationRecordEntity entity = await ApiRepository.to
.uploadElectricQuantity(
electricQuantity, state.keyInfos.value.lockId.toString());
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
showToast("电量更新成功", something: () { showToast("电量更新成功", something: () {
eventBus.fire(RefreshLockListInfoDataEvent()); eventBus.fire(RefreshLockListInfoDataEvent());
}); });
} }
} }
/// ///
StreamSubscription? StreamSubscription?
_lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent; _lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent;
void _initLockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceAction() { void _initLockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceAction() {
// eventBus // eventBus
_lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent = eventBus.on<LockSetChangeSetRefreshLockDetailWithType>().listen((event) { _lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent = eventBus
.on<LockSetChangeSetRefreshLockDetailWithType>()
.listen((event) {
if (event.type == 0) { if (event.type == 0) {
// 0 // 0
state.isAttendance.value = int.parse(event.setResult); state.isAttendance.value = int.parse(event.setResult);
state.keyInfos.value.lockSetting!.attendance = int.parse(event.setResult); state.keyInfos.value.lockSetting!.attendance =
int.parse(event.setResult);
} else if (event.type == 1) { } else if (event.type == 1) {
// 1 // 1
state.isOpenLockNeedOnline.value = int.parse(event.setResult); state.isOpenLockNeedOnline.value = int.parse(event.setResult);
state.keyInfos.value.lockSetting!.appUnlockOnline = int.parse(event.setResult); state.keyInfos.value.lockSetting!.appUnlockOnline =
int.parse(event.setResult);
} else if (event.type == 2) { } else if (event.type == 2) {
// 2 // 2
state.isOpenPassageMode.value = int.parse(event.setResult); state.isOpenPassageMode.value = int.parse(event.setResult);
@ -753,13 +769,22 @@ class LockDetailLogic extends BaseGetXController {
}); });
} }
late StreamSubscription<List<DiscoveredDevice>>_scanListDiscoveredDeviceSubscription; late StreamSubscription<List<DiscoveredDevice>>
_scanListDiscoveredDeviceSubscription;
void _scanListDiscoveredDeviceSubscriptionAction() { void _scanListDiscoveredDeviceSubscriptionAction() {
_scanListDiscoveredDeviceSubscription = EventBusManager().eventBus!.on<List<DiscoveredDevice>>().listen((List<DiscoveredDevice> list) { _scanListDiscoveredDeviceSubscription = EventBusManager()
final knownDeviceIndex = list.indexWhere((d) => d.name == state.keyInfos.value.bluetooth!.bluetoothDeviceName!); .eventBus!
.on<List<DiscoveredDevice>>()
.listen((List<DiscoveredDevice> list) {
final knownDeviceIndex = list.indexWhere((d) =>
d.name == state.keyInfos.value.bluetooth!.bluetoothDeviceName!);
if (knownDeviceIndex >= 0) { if (knownDeviceIndex >= 0) {
// //
state.currentDeviceUUid.value = (list[knownDeviceIndex].serviceUuids.isNotEmpty ? list[knownDeviceIndex].serviceUuids[0] : "").toString(); state.currentDeviceUUid.value =
(list[knownDeviceIndex].serviceUuids.isNotEmpty
? list[knownDeviceIndex].serviceUuids[0]
: "")
.toString();
} }
}); });
} }

View File

@ -2,6 +2,7 @@ import 'dart:async';
import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
import '../../../blue/blue_manage.dart'; import '../../../blue/blue_manage.dart';
import '../../../blue/io_protocol/io_referEventRecordTime.dart'; import '../../../blue/io_protocol/io_referEventRecordTime.dart';
@ -12,7 +13,6 @@ import '../../../blue/sender_manage.dart';
import '../../../network/api_repository.dart'; import '../../../network/api_repository.dart';
import '../../../tools/baseGetXController.dart'; import '../../../tools/baseGetXController.dart';
import '../../../tools/storage.dart'; import '../../../tools/storage.dart';
import '../electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart';
import 'lockOperatingRecordGetLastRecordTime_entity.dart'; import 'lockOperatingRecordGetLastRecordTime_entity.dart';
import 'lockOperatingRecord_state.dart'; import 'lockOperatingRecord_state.dart';

View File

@ -1,8 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
import '../../../app_settings/app_colors.dart'; import '../../../app_settings/app_colors.dart';
import '../../../tools/custom_bottom_sheet.dart'; import '../../../tools/custom_bottom_sheet.dart';
@ -26,7 +25,6 @@ class _LockOperatingRecordPageState extends State<LockOperatingRecordPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
backgroundColor: AppColors.mainBackgroundColor, backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar( appBar: TitleAppBar(
@ -34,7 +32,8 @@ class _LockOperatingRecordPageState extends State<LockOperatingRecordPage> {
haveBack: true, haveBack: true,
backgroundColor: AppColors.mainColor, backgroundColor: AppColors.mainColor,
actionsList: [ actionsList: [
(state.keyInfos.value.isLockOwner == 1 || state.keyInfos.value.keyRight == 1) (state.keyInfos.value.isLockOwner == 1 ||
state.keyInfos.value.keyRight == 1)
? IconButton( ? IconButton(
icon: Image.asset( icon: Image.asset(
'images/icon_bar_more.png', 'images/icon_bar_more.png',
@ -79,9 +78,7 @@ class _LockOperatingRecordPageState extends State<LockOperatingRecordPage> {
), ),
), ),
_searchWidget(), _searchWidget(),
SizedBox( SizedBox(height: 10.h),
height: 10.h
),
Expanded(child: _buildMainUI()), Expanded(child: _buildMainUI()),
], ],
), ),
@ -124,16 +121,19 @@ class _LockOperatingRecordPageState extends State<LockOperatingRecordPage> {
} }
Widget _buildMainUI() { Widget _buildMainUI() {
return Obx(() => state.lockOperatingRecordListData.value.isNotEmpty ? ListView.separated( return Obx(() => state.lockOperatingRecordListData.value.isNotEmpty
? ListView.separated(
itemCount: state.lockOperatingRecordListData.length, itemCount: state.lockOperatingRecordListData.length,
itemBuilder: (c, index) { itemBuilder: (c, index) {
KeyRecordDataItem dataItem = state.lockOperatingRecordListData[index]; KeyRecordDataItem dataItem =
state.lockOperatingRecordListData[index];
int? operateDate = dataItem.operateDate; int? operateDate = dataItem.operateDate;
DateTime dateStr = DateTime.fromMillisecondsSinceEpoch(operateDate!); DateTime dateStr =
String operateDateStr = '${dateStr.toLocal().toString().substring(0, 16)} '; DateTime.fromMillisecondsSinceEpoch(operateDate!);
return _operatingRecordItem(getTypeIcon(dataItem.recordType!), dataItem.recordTypeName!, operateDateStr, () { String operateDateStr =
'${dateStr.toLocal().toString().substring(0, 16)} ';
}); return _operatingRecordItem(getTypeIcon(dataItem.recordType!),
dataItem.recordTypeName!, operateDateStr, () {});
}, },
separatorBuilder: (BuildContext context, int index) { separatorBuilder: (BuildContext context, int index) {
return const Divider( return const Divider(
@ -141,7 +141,8 @@ class _LockOperatingRecordPageState extends State<LockOperatingRecordPage> {
color: AppColors.greyLineColor, color: AppColors.greyLineColor,
); );
}, },
) : NoData()); )
: NoData());
} }
Widget _dateItem(String lockDate) { Widget _dateItem(String lockDate) {
@ -185,7 +186,8 @@ class _LockOperatingRecordPageState extends State<LockOperatingRecordPage> {
return title; return title;
} }
Widget _operatingRecordItem(String userAvatarStr, String userNameStr, String unlockDescStr, Function() action) { Widget _operatingRecordItem(String userAvatarStr, String userNameStr,
String unlockDescStr, Function() action) {
return GestureDetector( return GestureDetector(
onTap: action, onTap: action,
child: Container( child: Container(
@ -261,5 +263,4 @@ class _LockOperatingRecordPageState extends State<LockOperatingRecordPage> {
); );
}); });
} }
} }

View File

@ -1,8 +1,7 @@
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
import '../../lockMian/entity/lockListInfo_entity.dart'; import '../../lockMian/entity/lockListInfo_entity.dart';
import '../electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart';
class LockOperatingRecordState { class LockOperatingRecordState {
final keyInfos = LockListInfoItemEntity().obs; final keyInfos = LockListInfoItemEntity().obs;
@ -10,5 +9,4 @@ class LockOperatingRecordState{
LockOperatingRecordState() { LockOperatingRecordState() {
keyInfos.value = Get.arguments["keyInfo"]; keyInfos.value = Get.arguments["keyInfo"];
} }
} }

View File

@ -1,10 +1,9 @@
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
import '../../../../../network/api_repository.dart'; import '../../../../../network/api_repository.dart';
import '../../../../../tools/baseGetXController.dart'; import '../../../../../tools/baseGetXController.dart';
import '../../../../../tools/eventBusEventManage.dart'; import '../../../../../tools/eventBusEventManage.dart';
import '../../../electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart';
import 'editLockName_state.dart'; import 'editLockName_state.dart';
class EditLockNameLogic extends BaseGetXController { class EditLockNameLogic extends BaseGetXController {
@ -18,14 +17,12 @@ class EditLockNameLogic extends BaseGetXController{
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
state.lockBasicInfo.value.lockAlias = state.changeLockNameController.text; state.lockBasicInfo.value.lockAlias = state.changeLockNameController.text;
showToast("修改成功", something: () { showToast("修改成功", something: () {
eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(3, state.lockBasicInfo.value.lockAlias!)); eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(
3, state.lockBasicInfo.value.lockAlias!));
eventBus.fire(RefreshLockListInfoDataEvent()); eventBus.fire(RefreshLockListInfoDataEvent());
}); });
Get.back(result: { Get.back(result: {"lockBasicInfo": state.lockBasicInfo.value});
"lockBasicInfo":state.lockBasicInfo.value
});
} }
} }
} }

View File

@ -1,7 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
import '../../../../../blue/blue_manage.dart'; import '../../../../../blue/blue_manage.dart';
import '../../../../../blue/io_protocol/io_getStarLockStatusInfo.dart'; import '../../../../../blue/io_protocol/io_getStarLockStatusInfo.dart';
@ -13,7 +13,6 @@ import '../../../../../network/api_repository.dart';
import '../../../../../tools/baseGetXController.dart'; import '../../../../../tools/baseGetXController.dart';
import '../../../../../tools/eventBusEventManage.dart'; import '../../../../../tools/eventBusEventManage.dart';
import '../../../../../tools/storage.dart'; import '../../../../../tools/storage.dart';
import '../../../electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart';
import 'uploadElectricQuantity_state.dart'; import 'uploadElectricQuantity_state.dart';
class UploadElectricQuantityLogic extends BaseGetXController { class UploadElectricQuantityLogic extends BaseGetXController {
@ -21,12 +20,15 @@ class UploadElectricQuantityLogic extends BaseGetXController {
// //
Future<void> uploadElectricQuantityRequest(String electricQuantity) async { Future<void> uploadElectricQuantityRequest(String electricQuantity) async {
KeyOperationRecordEntity entity = await ApiRepository.to.uploadElectricQuantity(electricQuantity, state.lockSetInfoData.value.lockId.toString()); KeyOperationRecordEntity entity = await ApiRepository.to
.uploadElectricQuantity(
electricQuantity, state.lockSetInfoData.value.lockId.toString());
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
showToast("锁电量更新成功", something: () { showToast("锁电量更新成功", something: () {
eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value)); eventBus
eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(0, electricQuantity)); .fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value));
eventBus.fire(
LockSetChangeSetRefreshLockDetailWithType(0, electricQuantity));
eventBus.fire(RefreshLockListInfoDataEvent()); eventBus.fire(RefreshLockListInfoDataEvent());
}); });
} }
@ -44,7 +46,8 @@ class UploadElectricQuantityLogic extends BaseGetXController {
dismissEasyLoading(); dismissEasyLoading();
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
}); });
BlueManage().bludSendData(BlueManage().connectDeviceName, (DeviceConnectionState deviceConnectionState) async { BlueManage().bludSendData(BlueManage().connectDeviceName,
(DeviceConnectionState deviceConnectionState) async {
if (deviceConnectionState == DeviceConnectionState.connected) { if (deviceConnectionState == DeviceConnectionState.connected) {
dismissEasyLoading(); dismissEasyLoading();
var privateKey = await Storage.getStringList(saveBluePrivateKey); var privateKey = await Storage.getStringList(saveBluePrivateKey);
@ -68,7 +71,8 @@ class UploadElectricQuantityLogic extends BaseGetXController {
// //
late StreamSubscription<Reply> _replySubscription; late StreamSubscription<Reply> _replySubscription;
void _initReplySubscription() { void _initReplySubscription() {
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) { _replySubscription =
EventBusManager().eventBus!.on<Reply>().listen((reply) {
// //
if (reply is GetStarLockStatuInfoReply) { if (reply is GetStarLockStatuInfoReply) {
_replyGetStarLockStatusInfo(reply); _replyGetStarLockStatusInfo(reply);
@ -89,9 +93,12 @@ class UploadElectricQuantityLogic extends BaseGetXController {
// //
var battRemCap = reply.data[132]; var battRemCap = reply.data[132];
state.lockSetInfoData.value.lockBasicInfo!.electricQuantity = battRemCap; state.lockSetInfoData.value.lockBasicInfo!.electricQuantity =
state.uploadElectricQuantityDate.value = DateTime.now().millisecondsSinceEpoch; battRemCap;
state.lockSetInfoData.value.lockBasicInfo!.electricQuantityDate = DateTime.now().millisecondsSinceEpoch; state.uploadElectricQuantityDate.value =
DateTime.now().millisecondsSinceEpoch;
state.lockSetInfoData.value.lockBasicInfo!.electricQuantityDate =
DateTime.now().millisecondsSinceEpoch;
uploadElectricQuantityRequest(battRemCap.toString()); uploadElectricQuantityRequest(battRemCap.toString());
break; break;
case 0x06: case 0x06:
@ -139,5 +146,4 @@ class UploadElectricQuantityLogic extends BaseGetXController {
super.onClose(); super.onClose();
_replySubscription.cancel(); _replySubscription.cancel();
} }
} }

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockListEntity.dart'; import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockListEntity.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';

View File

@ -1,7 +1,7 @@
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/login/selectCountryRegion/common/countryRegionEntity.dart'; import 'package:star_lock/login/selectCountryRegion/common/countryRegionEntity.dart';
import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_entity.dart'; import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_entity.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.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/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';

View File

@ -127,6 +127,7 @@ class _XSDropDownWidgetState extends State<XSDropDownWidget> {
child: Text( child: Text(
item.itemTitle, item.itemTitle,
style: TextStyle( style: TextStyle(
fontSize: 24.sp,
color: item.itemValue == currentValue color: item.itemValue == currentValue
? Colors.white ? Colors.white
: Colors.black, // : Colors.black, //