feat:修改开锁页 ui
This commit is contained in:
parent
3238359c54
commit
f9cffeb49f
@ -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(
|
||||||
|
|||||||
@ -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());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user