feat:修改开锁页 ui

This commit is contained in:
anfe 2024-06-17 15:52:21 +08:00
parent 3238359c54
commit f9cffeb49f
2 changed files with 132 additions and 73 deletions

View File

@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.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';
@ -60,7 +61,9 @@ class _LockDetailPageState extends State<LockDetailPage>
_initRefreshLockDetailInfoDataEventAction(); _initRefreshLockDetailInfoDataEventAction();
logic.initReplySubscription(); logic.initReplySubscription();
logic.initLockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceAction(); logic.initLockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceAction();
logic.loadData(lockListInfoItemEntity: widget.lockListInfoItemEntity, isOnlyOneData: widget.isOnlyOneData); logic.loadData(
lockListInfoItemEntity: widget.lockListInfoItemEntity,
isOnlyOneData: widget.isOnlyOneData);
} }
@override @override
@ -95,35 +98,50 @@ class _LockDetailPageState extends State<LockDetailPage>
final String lockAlias = state.keyInfos.value.lockAlias!; final String lockAlias = state.keyInfos.value.lockAlias!;
return Stack( return Stack(
children: <Widget>[ children: <Widget>[
Column( SingleChildScrollView(
children: <Widget>[ child: Column(
SizedBox( children: <Widget>[
height: 15.h, SizedBox(
), height: 15.h,
Padding(
padding: EdgeInsets.symmetric(horizontal: 24.w),
child: Text(
lockAlias,
textAlign: TextAlign.center,
style: TextStyle(fontSize: 24.sp, color: Colors.black),
), ),
), Padding(
SizedBox( padding: EdgeInsets.symmetric(horizontal: 24.w),
height: 35.h, child: Text(
), lockAlias,
xhjInfoView(), textAlign: TextAlign.center,
SizedBox( style: TextStyle(fontSize: 24.sp, color: Colors.black),
height: 35.h, ),
), ),
labelText('images/icon_slider_horizontal.png', '功能'.tr, () { SizedBox(
Get.to(LockDetailListPage( height: 35.h,
title: '功能'.tr, items: getBottomWidget())); ),
}), xhjInfoView(),
labelText('images/icon_puzzlepiece_extension.png', '配件'.tr, () { SizedBox(
Get.to(LockDetailListPage( height: 35.h,
title: '配件'.tr, items: getAttachmentWidget())); ),
}), labelText(
], img: 'images/icon_slider_horizontal.png',
text: '功能'.tr,
child: bottomWidget()),
labelText(
img: 'images/icon_puzzlepiece_extension.png',
text: '配件'.tr,
child: attachmentWidget()),
btnText(
img: 'images/main/icon_main_set.png',
text: TranslationLoader.lanKeys!.set!.tr,
onTap: () {
if (state.openDoorBtnisUneable.value == false) {
return;
}
Get.toNamed(Routers.lockSetPage,
arguments: <String, Object?>{
'lockId': state.keyInfos.value.lockId,
'isOnlyOneData': state.isOnlyOneData
});
}),
],
),
), ),
Visibility( Visibility(
visible: state.iSClosedUnlockSuccessfulPopup.value, visible: state.iSClosedUnlockSuccessfulPopup.value,
@ -139,7 +157,8 @@ class _LockDetailPageState extends State<LockDetailPage>
); );
} }
Widget labelText(String img, String text, var onTap) { Widget btnText(
{required String img, required String text, required var onTap}) {
return GestureDetector( return GestureDetector(
onTap: onTap, onTap: onTap,
child: Container( child: Container(
@ -152,16 +171,19 @@ class _LockDetailPageState extends State<LockDetailPage>
BoxShadow( BoxShadow(
color: Colors.black.withOpacity(0.15), color: Colors.black.withOpacity(0.15),
offset: const Offset(0, 0), offset: const Offset(0, 0),
blurRadius: 10.r, blurRadius: 5.r,
spreadRadius: 0, spreadRadius: 0,
), ),
]), ]),
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
Image.asset( FlavorsImg(
img, black: true,
width: 32.r, child: Image.asset(
height: 32.r, img,
width: 32.r,
height: 32.r,
),
), ),
SizedBox( SizedBox(
width: 15.w, width: 15.w,
@ -181,6 +203,49 @@ class _LockDetailPageState extends State<LockDetailPage>
); );
} }
Widget labelText(
{required String img, required String text, required Widget child}) {
return Container(
margin: EdgeInsets.symmetric(horizontal: 0.05.sw, vertical: 15.h),
padding: EdgeInsets.symmetric(horizontal: 0.05.sw, vertical: 20.h),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16.r),
boxShadow: <BoxShadow>[
BoxShadow(
color: Colors.black.withOpacity(0.15),
offset: const Offset(0, 0),
blurRadius: 5.r,
spreadRadius: 0,
),
]),
child: Column(
children: <Widget>[
Row(
children: <Widget>[
Image.asset(
img,
width: 32.r,
height: 32.r,
),
SizedBox(
width: 15.w,
),
Text(
text,
style: TextStyle(fontSize: 24.sp, color: AppColors.blackColor),
),
],
),
SizedBox(
height: 18.h,
),
child,
],
),
);
}
Widget xhjInfoView() { Widget xhjInfoView() {
return Container( return Container(
width: 0.9.sw, width: 0.9.sw,
@ -294,7 +359,7 @@ class _LockDetailPageState extends State<LockDetailPage>
BoxShadow( BoxShadow(
color: Colors.black.withOpacity(0.3), color: Colors.black.withOpacity(0.3),
offset: const Offset(0, 0), offset: const Offset(0, 0),
blurRadius: 10.r, blurRadius: 15.r,
spreadRadius: 0, spreadRadius: 0,
), ),
]), ]),
@ -836,6 +901,7 @@ class _LockDetailPageState extends State<LockDetailPage>
// childAspectRatio: 3, // childAspectRatio: 3,
crossAxisSpacing: 20.w, crossAxisSpacing: 20.w,
mainAxisSpacing: 0.h, mainAxisSpacing: 0.h,
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
children: getAttachmentWidget()), children: getAttachmentWidget()),
); );
@ -880,7 +946,8 @@ class _LockDetailPageState extends State<LockDetailPage>
crossAxisCount: 4, crossAxisCount: 4,
// childAspectRatio: 3, // childAspectRatio: 3,
crossAxisSpacing: 25.h, crossAxisSpacing: 25.h,
mainAxisSpacing: 0.h, mainAxisSpacing: 5.h,
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
children: getBottomWidget()), children: getBottomWidget()),
); );
@ -922,13 +989,15 @@ class _LockDetailPageState extends State<LockDetailPage>
})); }));
// //
showWidgetArr.add(bottomItem('images/main/icon_main_set.png', if (F.isSKY) {
TranslationLoader.lanKeys!.set!.tr, true, () { showWidgetArr.add(bottomItem('images/main/icon_main_set.png',
Get.toNamed(Routers.lockSetPage, arguments: <String, Object?>{ TranslationLoader.lanKeys!.set!.tr, true, () {
'lockId': state.keyInfos.value.lockId, Get.toNamed(Routers.lockSetPage, arguments: <String, Object?>{
'isOnlyOneData': state.isOnlyOneData 'lockId': state.keyInfos.value.lockId,
}); 'isOnlyOneData': state.isOnlyOneData
})); });
}));
}
return showWidgetArr; return showWidgetArr;
} }
@ -1106,17 +1175,19 @@ class _LockDetailPageState extends State<LockDetailPage>
}), }),
); );
endWiddget.add( if (F.isSKY) {
// endWiddget.add(
bottomItem('images/main/icon_main_set.png', //
TranslationLoader.lanKeys!.set!.tr, true, () { bottomItem('images/main/icon_main_set.png',
// logic.clickItemBtnAction(10); TranslationLoader.lanKeys!.set!.tr, true, () {
Get.toNamed(Routers.lockSetPage, arguments: <String, Object?>{ // logic.clickItemBtnAction(10);
'lockId': state.keyInfos.value.lockId, Get.toNamed(Routers.lockSetPage, arguments: <String, Object?>{
'isOnlyOneData': state.isOnlyOneData, 'lockId': state.keyInfos.value.lockId,
}); 'isOnlyOneData': state.isOnlyOneData,
}), });
); }),
);
}
showWidgetArr.addAll(endWiddget); showWidgetArr.addAll(endWiddget);
return showWidgetArr; return showWidgetArr;
} }
@ -1158,13 +1229,13 @@ class _LockDetailPageState extends State<LockDetailPage>
xhjCall: () => Container( xhjCall: () => Container(
color: Colors.white, color: Colors.white,
margin: EdgeInsets.symmetric(vertical: 5.h), margin: EdgeInsets.symmetric(vertical: 5.h),
padding: EdgeInsets.symmetric(vertical: 15.h, horizontal: 15.w), child: Column(
child: Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
SizedBox( SizedBox(
width: 42.w, width: 42.w,
height: 42.h, height: 42.w,
child: FlavorsImg( child: FlavorsImg(
black: true, black: true,
child: Image.asset(iconUrl, child: Image.asset(iconUrl,
@ -1176,7 +1247,7 @@ class _LockDetailPageState extends State<LockDetailPage>
fit: BoxFit.fitWidth), fit: BoxFit.fitWidth),
), ),
), ),
SizedBox(width: 20.w), SizedBox(height: 20.h),
Text( Text(
name, name,
style: TextStyle( style: TextStyle(

View File

@ -569,15 +569,10 @@ class LockSetLogic extends BaseGetXController {
); );
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
BlueManage().connectDeviceMacAddress = ''; BlueManage().connectDeviceMacAddress = '';
final bool isXHJ = F.isXHJ;
final bool isOnlyOneData = state.isOnlyOneData.value == true; final bool isOnlyOneData = state.isOnlyOneData.value == true;
await Future<dynamic>.delayed(const Duration(milliseconds: 200)) await Future<dynamic>.delayed(const Duration(milliseconds: 200))
.then((e) { .then((e) {
if (isXHJ) { Get.close(isOnlyOneData ? 1 : 2);
Get.close(3);
} else {
Get.close(isOnlyOneData ? 1 : 2);
}
}); });
SchedulerBinding.instance.addPostFrameCallback((_) { SchedulerBinding.instance.addPostFrameCallback((_) {
eventBus.fire(RefreshLockListInfoDataEvent()); eventBus.fire(RefreshLockListInfoDataEvent());
@ -594,17 +589,10 @@ class LockSetLogic extends BaseGetXController {
state.deleteAdministratorIsHaveAllData.value == true ? 1 : 0); state.deleteAdministratorIsHaveAllData.value == true ? 1 : 0);
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
BlueManage().connectDeviceMacAddress = ''; BlueManage().connectDeviceMacAddress = '';
final bool isXHJ = F.isXHJ;
final bool isOnlyOneData = state.isOnlyOneData.value == true; final bool isOnlyOneData = state.isOnlyOneData.value == true;
await Future<dynamic>.delayed(const Duration(milliseconds: 200)) await Future<dynamic>.delayed(const Duration(milliseconds: 200))
.then((e) { .then((e) {
if (isXHJ) { Get.close(isOnlyOneData ? 1 : 2);
Get.close(3);
} else {
final int onlyOneDataInt = isOnlyOneData ? 1 : 2;
Get.close(onlyOneDataInt);
}
}); });
SchedulerBinding.instance.addPostFrameCallback((_) { SchedulerBinding.instance.addPostFrameCallback((_) {
eventBus.fire(RefreshLockListInfoDataEvent()); eventBus.fire(RefreshLockListInfoDataEvent());