274 lines
9.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../../../appRouters.dart';
import '../../../app_settings/app_colors.dart';
import '../../../blue/blue_manage.dart';
import '../../../blue/io_tool/io_manager.dart';
import '../../../blue/io_tool/io_tool.dart';
import '../../../tools/storage.dart';
import '../../../translations/trans_lib.dart';
import '../../lockMian/entity/lockInfoEntity.dart';
import 'lockDetail_logic.dart';
class LockDetailPage extends StatefulWidget {
final isFrist;
final KeyInfos keyInfo;
final LockMainEntity lockMainEntity;
const LockDetailPage(
{Key? key,
required this.lockMainEntity,
required this.isFrist,
required this.keyInfo})
: super(key: key);
@override
State<LockDetailPage> createState() => _LockDetailPageState();
}
class _LockDetailPageState extends State<LockDetailPage> {
final logic = Get.put(LockDetailLogic());
final state = Get.find<LockDetailLogic>().state;
@override
void initState() {
// TODO: implement initState
super.initState();
state.keyInfos.value = widget.keyInfo;
BlueManage().connectDeviceName =
state.keyInfos.value.bluetooth!.bluetoothDeviceName!;
BlueManage().connectDeviceMacAddress =
state.keyInfos.value.bluetooth!.bluetoothDeviceId!;
List<int> publicKeyData =
state.keyInfos.value.bluetooth!.publicKey!.cast<int>();
var saveStrList = changeIntListToStringList(publicKeyData);
Storage.setStringList(saveBluePublicKey, saveStrList);
// 私钥
List<int> privateKeyData =
state.keyInfos.value.bluetooth!.privateKey!.cast<int>();
var savePrivateKeyList = changeIntListToStringList(privateKeyData);
Storage.setStringList(saveBluePrivateKey, savePrivateKeyList);
// print("publicKeyData:$publicKeyData saveStrList:$saveStrList privateKeyData:$privateKeyData savePrivateKeyList:$savePrivateKeyList");
// logic.connectBlue();
}
@override
Widget build(BuildContext context) {
return Container(
width: 1.sw,
height: 1.sh - ScreenUtil().statusBarHeight * 2,
color: Colors.white,
child: Column(
children: [topWidget(), Expanded(child: bottomWidget())],
),
);
}
Widget topWidget() {
// KeyInfos keyInfo = widget.lockMainEntity.data!.keyInfos![0];
return Column(
children: [
SizedBox(height: 30.h),
Stack(
alignment: Alignment.centerRight,
children: [
Align(
alignment: Alignment.center,
child: Text(
widget.keyInfo!.lockAlias!,
style:
TextStyle(fontSize: 22.sp, fontWeight: FontWeight.w400),
)),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Text(
"100%",
style: TextStyle(
fontSize: 18.sp, color: AppColors.darkGrayTextColor),
),
SizedBox(width: 2.w),
Image.asset(
'images/main/icon_main_cell.png',
width: 30.w,
height: 24.w,
),
SizedBox(width: 30.w),
],
),
],
),
SizedBox(height: 30.h),
Container(
// width: 1.sw,
color: Colors.white,
height: 280.w,
child: Stack(
children: [
Center(
child: GestureDetector(
onTap: () {
// logic.transferPermissionsAction();
logic.openDoorAction();
// logic.editLockUserAction();
// logic.factoryDataResetAction();
},
child: Image.asset('images/main/icon_main_openLockBtn.png',
width: 268.w, height: 268.w),
)),
Align(
alignment: const Alignment(0.6, 1),
child: Image.asset(
'images/main/icon_main_remoteUnlocking.png',
width: 50.w,
height: 52.w,
)),
],
),
),
SizedBox(
height: 30.h,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
TranslationLoader.lanKeys!.clickUnlockAndHoldDownClose!.tr,
style: TextStyle(
fontSize: 20.sp,
color: const Color(0xFFB3B3B3),
fontWeight: FontWeight.w500),
),
],
),
SizedBox(
height: 30.h,
),
Divider(
height: 1,
color: AppColors.greyLineColor,
indent: 20.w,
endIndent: 20.w,
)
],
);
}
Widget bottomWidget() {
return Container(
margin: EdgeInsets.only(left: 10.w, right: 10.w, top: 40.h),
// color: Colors.blue,
child: SizedBox(
child: GridView.count(
crossAxisCount: 4,
// childAspectRatio: 3,
crossAxisSpacing: 20.w,
mainAxisSpacing: 0.h,
physics: const NeverScrollableScrollPhysics(),
children: [
bottomItem('images/main/icon_main_clockingIn.png',
TranslationLoader.lanKeys!.checkingIn!.tr, () {
Navigator.pushNamed(context, Routers.checkingInListPage);
}),
bottomItem('images/main/icon_main_electronicKey.png',
TranslationLoader.lanKeys!.electronicKey!.tr, () {
Navigator.pushNamed(context, Routers.electronicKeyListPage,
arguments: {
"lockMainEntity": widget.lockMainEntity,
"keyInfo": widget.keyInfo
});
}),
bottomItem('images/main/icon_main_password.png',
TranslationLoader.lanKeys!.password!.tr, () {
Navigator.pushNamed(context, Routers.passwordKeyListPage,
arguments: {
"lockMainEntity": widget.lockMainEntity,
"keyInfo": widget.keyInfo
});
}),
bottomItem('images/main/icon_main_icCard.png',
TranslationLoader.lanKeys!.card!.tr, () {
Navigator.pushNamed(context, Routers.otherTypeKeyListPage,
arguments: 0);
}),
bottomItem('images/main/icon_main_fingerprint.png',
TranslationLoader.lanKeys!.fingerprint!.tr, () {
Navigator.pushNamed(context, Routers.otherTypeKeyListPage,
arguments: 1);
}),
bottomItem('images/main/icon_main_remoteControl.png',
TranslationLoader.lanKeys!.remoteControl!.tr, () {
Navigator.pushNamed(context, Routers.otherTypeKeyListPage,
arguments: 2);
}),
//可视对讲门锁新增->人脸、监控
bottomItem('images/main/icon_main_fingerprint.png', '人脸', () {
// Navigator.pushNamed(context, Routers.otherTypeKeyListPage,
// arguments: 1);
}),
bottomItem('images/main/icon_main_fingerprint.png', '监控', () {
// Navigator.pushNamed(context, Routers.otherTypeKeyListPage,
// arguments: 1);
}),
bottomItem('images/main/icon_main_authorizedAdmin.png',
TranslationLoader.lanKeys!.authorizedAdmin!.tr, () {
Navigator.pushNamed(context, Routers.authorizedAdminListPage,
arguments: {
"lockMainEntity": widget.lockMainEntity,
"keyInfo": widget.keyInfo
});
}),
bottomItem('images/main/icon_main_operatingRecord.png',
TranslationLoader.lanKeys!.operatingRecord!.tr, () {
Navigator.pushNamed(context, Routers.lockOperatingRecordPage,
arguments: {
"lockMainEntity": widget.lockMainEntity,
"keyInfo": widget.keyInfo
});
}),
bottomItem('images/main/icon_main_set.png',
TranslationLoader.lanKeys!.set!.tr, () {
Navigator.pushNamed(context, Routers.lockSetPage,
arguments: widget.keyInfo);
}),
],
),
),
);
}
Widget bottomItem(String iconUrl, String name, Function() onClick) {
var width = 42.w;
var height = 42.h;
return GestureDetector(
onTap: onClick,
child: Container(
// height: 300.h,
color: Colors.white,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(
width: width,
height: height,
child: Image.asset(iconUrl,
width: width, height: height, fit: BoxFit.fitWidth),
),
SizedBox(height: 10.w),
Expanded(
child: Text(name,
style: TextStyle(
fontSize: 20.sp, color: AppColors.blackColor),
textAlign: TextAlign.center))
],
)),
);
}
}