diff --git a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_logic.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_logic.dart index 3c539dd7..73f03298 100644 --- a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_logic.dart @@ -1,6 +1,64 @@ import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_state.dart'; +import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart'; +import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; class CatEyeCustomModeLogic extends BaseGetXController { final CatEyeCustomModeState state = CatEyeCustomModeState(); + + // 获取锁设置信息 + Future getLockSettingInfoData() async { + LockSetInfoEntity entity = await ApiRepository.to.getLockSettingInfoData( + lockId: state.lockSetInfoData.value.lockId.toString(), + ); + if (entity.errorCode!.codeIsSuccessful) { + state.lockSetInfoData.value = entity.data!; + state.catEyeConfigData.value = + entity.data!.lockSettingInfo!.catEyeConfig![0]; + + if (state.catEyeConfigData.value.catEyeModeConfig != null) { + if (state.catEyeConfigData.value.catEyeModeConfig!.recordMode == 1) { + state.selectVideoSlot.value = '自定义时段'; + } else { + state.selectVideoSlot.value = '全天'; + } + + state.recordTime.value = + state.catEyeConfigData.value.catEyeModeConfig!.recordTime!; + state.detectionDistance.value = + '${state.catEyeConfigData.value.catEyeModeConfig!.detectionDistance!}秒'; + state.realTimeMode.value = + state.catEyeConfigData.value.catEyeModeConfig!.realTimeMode == 0 + ? '发生事件时查看' + : '实时查看'; + } + } + return entity; + } + + //设置猫眼工作模式 + void updateCatEyeModeConfig() async { + var entity = await ApiRepository.to.updateCatEyeModeConfig( + lockId: state.lockSetInfoData.value.lockId!, + catEyeConfig: [ + { + 'catEyeMode': 4, + 'catEyeModeConfig': { + 'recordMode': + state.catEyeConfigData.value.catEyeModeConfig!.recordMode, + 'recordStartTime': + state.catEyeConfigData.value.catEyeModeConfig!.recordStartTime, + 'recordEndTime': + state.catEyeConfigData.value.catEyeModeConfig!.recordEndTime, + 'recordTime': state.recordTime.value, + 'detectionDistance': state.detectionDistance.value, + 'realTimeMode': state.realTimeMode.value, + } + } + ], + ); + if (entity.errorCode!.codeIsSuccessful) { + showToast('设置成功'); + } + } } diff --git a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart index 313fee0c..5d6dee0b 100644 --- a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart @@ -1,4 +1,3 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -21,6 +20,12 @@ class _CatEyeCustomModePageState extends State { final logic = Get.put(CatEyeCustomModeLogic()); final state = Get.find().state; + @override + initState() { + super.initState(); + logic.getLockSettingInfoData(); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -28,45 +33,65 @@ class _CatEyeCustomModePageState extends State { appBar: TitleAppBar( barTitle: TranslationLoader.lanKeys!.customMode!.tr, haveBack: true, + backAction: () { + Navigator.pop(context, true); + }, backgroundColor: AppColors.mainColor), body: Column( children: [ - CommonItem( - leftTitel: TranslationLoader.lanKeys!.videoSlot!.tr, - rightTitle: "", - isHaveLine: false, - isHaveDirection: true, - isHaveRightWidget: true, - rightWidget: Text('当日22:00~次日08:00', - style: TextStyle( - fontSize: 22.sp, color: AppColors.darkGrayTextColor)), - action: () => Get.toNamed(Routers.videoSlotPage), - ), - _buildSubTitleItem('有人出现时录像', '有人在门口出现10秒后开始录像。\n有人按门铃时立即录像', - state.showsUpVideo.value, () { - _openBottomItemSheet(state.showsUpVideoList.value, 0); - }), + Obx(() => CommonItem( + leftTitel: TranslationLoader.lanKeys!.videoSlot!.tr, + rightTitle: "", + isHaveLine: false, + isHaveDirection: true, + isHaveRightWidget: true, + rightWidget: Text(state.selectVideoSlot.value, + style: TextStyle( + fontSize: 22.sp, color: AppColors.darkGrayTextColor)), + action: () { + Navigator.pushNamed(context, Routers.videoSlotPage, + arguments: { + 'lockSetInfoData': state.lockSetInfoData.value, + 'catEyeConfigData': state.lockSetInfoData.value + .lockSettingInfo!.catEyeConfig!.isNotEmpty + ? state.lockSetInfoData.value.lockSettingInfo! + .catEyeConfig![0] + : null + }).then((value) => {logic.getLockSettingInfoData()}); + }, + )), + Obx(() => _buildSubTitleItem('有人出现时录像', + '有人在门口出现10秒后开始录像。\n有人按门铃时立即录像', state.recordTime.value, () { + _openBottomItemSheet(state.showsUpVideoList.value, 0); + })), SizedBox( height: 30.h, ), - Obx(() => _buildSubTitleItem( - '人体侦测距离', '有人出现在门前1.5米范围时启动录像', state.detectionRange.value, - () { + Obx(() => _buildSubTitleItem('人体侦测距离', '有人出现在门前1.5米范围时启动录像', + state.detectionDistance.value, () { _openBottomItemSheet(state.detectionRangeList.value, 1); })), SizedBox( height: 30.h, ), - CommonItem( - leftTitel: '实时画面', - rightTitle: "全天", - isHaveLine: false, - isHaveDirection: true, - isHaveRightWidget: false, - action: () { - Get.toNamed(Routers.liveVideoPage); - }, - ) + Obx(() => CommonItem( + leftTitel: '实时画面', + rightTitle: state.realTimeMode.value, + isHaveLine: false, + isHaveDirection: true, + isHaveRightWidget: false, + action: () { + Navigator.pushNamed(context, Routers.liveVideoPage, + arguments: { + 'lockSetInfoData': state.lockSetInfoData.value, + 'catEyeConfigData': state.lockSetInfoData.value + .lockSettingInfo!.catEyeConfig!.isNotEmpty + ? state.lockSetInfoData.value.lockSettingInfo! + .catEyeConfig![0] + : null + }).then((value) => {logic.getLockSettingInfoData()}); + }, + )) ], )); } @@ -76,6 +101,7 @@ class _CatEyeCustomModePageState extends State { return GestureDetector( onTap: action, child: Container( + color: Colors.white, margin: EdgeInsets.only(left: 20.sp, right: 20.sp, top: 20.h), child: Row( mainAxisAlignment: MainAxisAlignment.start, @@ -143,15 +169,14 @@ class _CatEyeCustomModePageState extends State { items: bottomItemList, chooseCallback: (value) { if (clickIndex == 0) { - //感应距离 - state.showsUpVideo.value = state.showsUpVideoList.value[value]; + //有人出现时录像 + state.recordTime.value = state.showsUpVideoList.value[value]; } else if (clickIndex == 1) { //录像时长 - state.detectionRange.value = + state.detectionDistance.value = state.detectionRangeList.value[value]; } - - setState(() {}); + logic.updateCatEyeModeConfig(); }, ); }); diff --git a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_state.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_state.dart index a7a3a22c..7c541646 100644 --- a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_state.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_state.dart @@ -1,17 +1,16 @@ -import 'dart:ui'; - import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/app_settings/app_colors.dart'; +import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart'; import 'package:star_lock/translations/trans_lib.dart'; class CatEyeCustomModeState { var isCheck = false.obs; var faceOn = false.obs; //面容开锁 var autoBright = false.obs; //自动亮屏 - var showsUpVideo = '10${TranslationLoader.lanKeys!.second!.tr}'.obs; //有人出现时录像 - var detectionRange = '约1.5米'.obs; //人体侦测距离 + // var showsUpVideo = '10${TranslationLoader.lanKeys!.second!.tr}'.obs; //有人出现时录像 + // var detectionRange = '约1.5米'.obs; //人体侦测距离 var showsUpVideoList = [ '不录像', '立即录像', @@ -37,4 +36,23 @@ class CatEyeCustomModeState { text: TranslationLoader.lanKeys!.addAndUseFaceWhenUnlockingTip!.tr, style: subTipsStyle), ]); + + var lockSetInfoData = LockSetInfoData().obs; + var catEyeConfigData = CatEyeConfig().obs; + + var selectVideoSlot = ''.obs; //录像时段 0全天 1自定义时间 + var recordTime = ''.obs; //有人出现时录像 + var detectionDistance = ''.obs; //人体侦测距离 + var realTimeMode = ''.obs; //实时画面 0发生事件事查看 1实时查看 + + CatEyeCustomModeState() { + Map map = Get.arguments; + if (map["lockSetInfoData"] != null) { + lockSetInfoData.value = map["lockSetInfoData"]; + } + + if (map['catEyeConfigData'] != null) { + catEyeConfigData.value = map['catEyeConfigData']; + } + } } diff --git a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_page.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_page.dart index 7ee2af12..763619aa 100644 --- a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_page.dart @@ -48,7 +48,7 @@ class _CatEyeSetPageState extends State { Navigator.pushNamed(context, Routers.catEyeWorkModePage, arguments: { 'lockSetInfoData': state.lockSetInfoData.value, - 'catEyeConfigata': state.lockSetInfoData.value + 'catEyeConfigData': state.lockSetInfoData.value .lockSettingInfo!.catEyeConfig!.isNotEmpty ? state.lockSetInfoData.value.lockSettingInfo! .catEyeConfig![0] diff --git a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_logic.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_logic.dart index 5d44b635..3e615459 100644 --- a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_logic.dart @@ -1,4 +1,6 @@ +import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart'; import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_state.dart'; +import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; @@ -27,4 +29,32 @@ class CatEyeWorkModeLogic extends BaseGetXController { showToast('设置成功'); } } + + // 获取锁设置信息 + Future getLockSettingInfoData() async { + LockSetInfoEntity entity = await ApiRepository.to.getLockSettingInfoData( + lockId: state.lockSetInfoData.value.lockId.toString(), + ); + if (entity.errorCode!.codeIsSuccessful) { + state.lockSetInfoData.value = entity.data!; + + state.selectCatEyeWorkMode.value = + state.catEyeConfigData.value.catEyeMode!; + + if (state.catEyeConfigData.value.catEyeMode == + XSConstantMacro.catEyeWorkModePowerSaving) { + state.boolList.value[0] = true; + } else if (state.catEyeConfigData.value.catEyeMode == + XSConstantMacro.catEyeWorkModeStayCapture) { + state.boolList.value[1] = true; + } else if (state.catEyeConfigData.value.catEyeMode == + XSConstantMacro.catEyeWorkModeRealTimeMonitoring) { + state.boolList.value[2] = true; + } else if (state.catEyeConfigData.value.catEyeMode == + XSConstantMacro.catEyeWorkModeCustom) { + state.boolList.value[3] = true; + } + } + return entity; + } } diff --git a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart index 4ec91f25..5a7360b9 100644 --- a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart @@ -19,6 +19,12 @@ class _CatEyeWorkModePageState extends State { final logic = Get.put(CatEyeWorkModeLogic()); final state = Get.find().state; + @override + initState() { + super.initState(); + logic.getLockSettingInfoData(); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -60,72 +66,75 @@ class _CatEyeWorkModePageState extends State { Widget _buildTipsView(String titleStr, String subTitle, int clickIndex) { return GestureDetector( - child: Container( - width: ScreenUtil().screenWidth - 40.w, - margin: EdgeInsets.only(left: 20.w, right: 20.w, bottom: 10.h), - decoration: BoxDecoration( - color: state.boolList.value[clickIndex] - ? AppColors.blueViewBgColor - : AppColors.greyBackgroundColor, - borderRadius: BorderRadius.circular(10.0), - ), - child: Padding( - padding: EdgeInsets.only( - left: 20.w, top: 30.h, bottom: 30.h, right: 20.w), - child: Row( - children: [ - state.boolList.value[clickIndex] - ? Image.asset( - 'images/mine/icon_mine_blueSelect.png', - width: 20.w, - height: 14.w, - ) - : SizedBox( - width: 20.w, - height: 14.w, - ), - SizedBox(width: 10.w), - Expanded( - child: _buildRichText( - titleStr, subTitle, state.boolList.value[clickIndex]), - ), - SizedBox( - width: 10.w, - ), - GestureDetector( - child: Container( - width: 90.w, - height: 40.h, - decoration: BoxDecoration( - color: Colors.transparent, - borderRadius: BorderRadius.circular(15.0), - border: Border.all( - color: AppColors.placeholderTextColor, width: 1.w), - ), - child: Center( - child: Text( - clickIndex == 3 ? '设置' : '查看', - style: TextStyle( - color: AppColors.placeholderTextColor, - fontSize: 20.sp), - ), - ), + child: Container( + width: ScreenUtil().screenWidth - 40.w, + margin: EdgeInsets.only(left: 20.w, right: 20.w, bottom: 10.h), + decoration: BoxDecoration( + color: state.boolList.value[clickIndex] + ? AppColors.blueViewBgColor + : AppColors.greyBackgroundColor, + borderRadius: BorderRadius.circular(10.0), + ), + child: Padding( + padding: EdgeInsets.only( + left: 20.w, top: 30.h, bottom: 30.h, right: 20.w), + child: Row( + children: [ + state.boolList.value[clickIndex] + ? Image.asset( + 'images/mine/icon_mine_blueSelect.png', + width: 20.w, + height: 14.w, + ) + : SizedBox( + width: 20.w, + height: 14.w, + ), + SizedBox(width: 10.w), + Expanded( + child: _buildRichText( + titleStr, subTitle, state.boolList.value[clickIndex]), ), - onTap: () { - //自定义模式跳转 - if (clickIndex == 3) { - Get.toNamed(Routers.catEyeCustomModePage); - } else { - //其他模式弹框 - showBottomSheet(context, clickIndex); - } - }, - ), - ], - )), - ), - onTap: () { - setState(() { + SizedBox( + width: 10.w, + ), + GestureDetector( + child: Container( + width: 90.w, + height: 40.h, + decoration: BoxDecoration( + color: Colors.transparent, + borderRadius: BorderRadius.circular(15.0), + border: Border.all( + color: AppColors.placeholderTextColor, width: 1.w), + ), + child: Center( + child: Text( + clickIndex == 3 ? '设置' : '查看', + style: TextStyle( + color: AppColors.placeholderTextColor, + fontSize: 20.sp), + ), + ), + ), + onTap: () { + //自定义模式跳转 + if (clickIndex == 3) { + Navigator.pushNamed( + context, Routers.catEyeCustomModePage, + arguments: { + 'lockSetInfoData': state.lockSetInfoData.value, + }).then((value) => logic.getLockSettingInfoData()); + } else { + //其他模式弹框 + showBottomSheet(context, clickIndex); + } + }, + ), + ], + )), + ), + onTap: () { for (int i = 0; i < state.boolList.value.length; i++) { if (clickIndex == i) { state.boolList.value[clickIndex] = true; @@ -153,8 +162,6 @@ class _CatEyeWorkModePageState extends State { } } }); - }, - ); } Widget _buildRichText(String titleStr, String subTitle, bool isClick) { diff --git a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_state.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_state.dart index 1d9e29dc..07d95051 100644 --- a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_state.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_state.dart @@ -18,8 +18,8 @@ class CatEyeWorkModeState { CatEyeWorkModeState() { Map map = Get.arguments; lockSetInfoData.value = map["lockSetInfoData"]; - if (map['catEyeConfigata'] != null) { - catEyeConfigData.value = map['catEyeConfigata']; + if (map['catEyeConfigData'] != null) { + catEyeConfigData.value = map['catEyeConfigData']; selectCatEyeWorkMode.value = catEyeConfigData.value.catEyeMode!; if (catEyeConfigData.value.catEyeMode == diff --git a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_logic.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_logic.dart index 2e5fe60b..2b97acf8 100644 --- a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_logic.dart @@ -1,6 +1,59 @@ +import 'package:get/get.dart'; import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_state.dart'; +import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart'; +import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; class VideoSlotLogic extends BaseGetXController { final VideoSlotState state = VideoSlotState(); + + // 获取锁设置信息 + Future getLockSettingInfoData() async { + LockSetInfoEntity entity = await ApiRepository.to.getLockSettingInfoData( + lockId: state.lockSetInfoData.value.lockId.toString(), + ); + if (entity.errorCode!.codeIsSuccessful) { + state.lockSetInfoData.value = entity.data!; + state.catEyeConfigData.value = + entity.data!.lockSettingInfo!.catEyeConfig![0]; + + if (state.catEyeConfigData.value.catEyeModeConfig != null) { + if (state.catEyeConfigData.value.catEyeModeConfig!.recordMode == 1) { + // state.selectVideoSlot.value = '自定义时段'; + state.isCustom.value = true; + } else { + // state.selectVideoSlot.value = '全天'; + state.isCustom.value = false; + } + } + } + return entity; + } + + //设置猫眼工作模式 + void updateCatEyeModeConfig() async { + var entity = await ApiRepository.to.updateCatEyeModeConfig( + lockId: state.lockSetInfoData.value.lockId!, + catEyeConfig: [ + { + 'catEyeMode': 4, + 'catEyeModeConfig': { + 'recordMode': state.recordMode.value, + 'recordStartTime': state.recordStartTime.value, + 'recordEndTime': state.recordEndTime.value, + 'recordTime': + state.catEyeConfigData.value.catEyeModeConfig!.recordTime, + 'detectionDistance': state + .catEyeConfigData.value.catEyeModeConfig!.detectionDistance, + 'realTimeMode': + state.catEyeConfigData.value.catEyeModeConfig!.realTimeMode, + } + } + ], + ); + if (entity.errorCode!.codeIsSuccessful) { + showToast('设置成功'); + Get.back(); + } + } } diff --git a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_page.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_page.dart index 0acc0049..69375ae7 100644 --- a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_page.dart @@ -27,6 +27,9 @@ class _VideoSlotPageState extends State { appBar: TitleAppBar( barTitle: '录像时段', haveBack: true, + backAction: () { + Navigator.pop(context, true); + }, backgroundColor: AppColors.mainColor, actionsList: [ TextButton( @@ -35,7 +38,16 @@ class _VideoSlotPageState extends State { style: TextStyle(color: Colors.white, fontSize: 24.sp), ), onPressed: () { - Get.back(); + state.isCustom.value == false + ? state.recordMode.value = 0 + : state.recordMode.value = 1; + if (state.recordMode.value == 1) { + state.recordStartTime.value = + state.startDateTime.value.millisecondsSinceEpoch; + state.recordEndTime.value = + state.endDateTime.value.millisecondsSinceEpoch; + } + logic.updateCatEyeModeConfig(); }, ), ], @@ -49,7 +61,7 @@ class _VideoSlotPageState extends State { SizedBox( height: 30.h, ), - _buildCustomTimeView('自定义时间', '', 1), + _buildCustomTimeView('自定义时间', 1), ], )); } @@ -92,13 +104,17 @@ class _VideoSlotPageState extends State { )), )), onTap: () { - state.isCustom.value = !state.isCustom.value; + if (clickIndex == 0) { + state.isCustom.value = false; + } else { + state.isCustom.value = true; + } }, ); } //自定义时间 - Widget _buildCustomTimeView(String leftStr, String rightStr, int isEndTIme) { + Widget _buildCustomTimeView(String leftStr, int clickIndex) { return GestureDetector( child: Obx(() => Container( width: ScreenUtil().screenWidth - 40.w, @@ -164,7 +180,11 @@ class _VideoSlotPageState extends State { )), )), onTap: () { - state.isCustom.value = !state.isCustom.value; + if (clickIndex == 1) { + state.isCustom.value = true; + } else { + state.isCustom.value = false; + } }, ); } diff --git a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_state.dart b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_state.dart index bb88f238..b707c003 100644 --- a/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_state.dart +++ b/star_lock/lib/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_state.dart @@ -1,6 +1,10 @@ import 'package:get/get.dart'; +import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart'; class VideoSlotState { + var lockSetInfoData = LockSetInfoData().obs; + var catEyeConfigData = CatEyeConfig().obs; + var isCustom = false.obs; //是否自定义 DateTime dateTime = DateTime.now(); final startDateTime = DateTime.now().obs; //开始时间:当日 @@ -9,4 +13,22 @@ class VideoSlotState { var startDate = '${DateTime.now().hour}:${DateTime.now().minute}'.obs; //默认为当前时间 var endDate = '${DateTime.now().hour}:${DateTime.now().minute}'.obs; //默认为当前时间 + + var recordMode = 0.obs; //录像时段 0全天 1自定义时间 + + var recordStartTime = 0.obs; // 自定义开始时间 + var recordEndTime = 0.obs; // 自定义结束时间 + var recordTime = ''.obs; //有人出现时录像 + var detectionDistance = 0.obs; //人体侦测距离 + var realTimeMode = 0.obs; //实时画面 0发生事件事查看 1实时查看 + + VideoSlotState() { + Map map = Get.arguments; + if (map['lockSetInfoData'] != null) { + lockSetInfoData.value = map['lockSetInfoData']; + } + if (map['catEyeConfigData'] != null) { + catEyeConfigData.value = map['catEyeConfigData']; + } + } } diff --git a/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_logic.dart b/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_logic.dart index 54439bfe..1169c067 100644 --- a/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_logic.dart @@ -1,6 +1,59 @@ +import 'package:get/get.dart'; import 'package:star_lock/main/lockDetail/lockSet/liveVideo/liveVideo_state.dart'; +import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart'; +import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; class LiveVideoLogic extends BaseGetXController { final LiveVideoState state = LiveVideoState(); + + // 获取锁设置信息 + Future getLockSettingInfoData() async { + LockSetInfoEntity entity = await ApiRepository.to.getLockSettingInfoData( + lockId: state.lockSetInfoData.value.lockId.toString(), + ); + if (entity.errorCode!.codeIsSuccessful) { + state.lockSetInfoData.value = entity.data!; + state.catEyeConfigData.value = + entity.data!.lockSettingInfo!.catEyeConfig![0]; + + if (state.catEyeConfigData.value.catEyeModeConfig != null) { + if (state.catEyeConfigData.value.catEyeModeConfig!.recordMode == 1) { + state.isLiveView.value = true; + } else { + state.isLiveView.value = false; + } + } + } + return entity; + } + + //设置猫眼工作模式 + void updateCatEyeModeConfig() async { + var entity = await ApiRepository.to.updateCatEyeModeConfig( + lockId: state.lockSetInfoData.value.lockId ?? 0, + catEyeConfig: [ + { + 'catEyeMode': 4, + 'catEyeModeConfig': { + 'recordMode': + state.catEyeConfigData.value.catEyeModeConfig!.recordMode, + 'recordStartTime': + state.catEyeConfigData.value.catEyeModeConfig!.recordStartTime, + 'recordEndTime': + state.catEyeConfigData.value.catEyeModeConfig!.recordEndTime, + 'recordTime': + state.catEyeConfigData.value.catEyeModeConfig!.recordTime, + 'detectionDistance': state + .catEyeConfigData.value.catEyeModeConfig!.detectionDistance, + 'realTimeMode': state.realTimeMode.value, + } + } + ], + ); + if (entity.errorCode!.codeIsSuccessful) { + showToast('设置成功'); + Get.back(); + } + } } diff --git a/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_page.dart b/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_page.dart index eed2b299..5c14e10a 100644 --- a/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_page.dart @@ -33,7 +33,11 @@ class _LiveVideoPageState extends State { style: TextStyle(color: Colors.white, fontSize: 24.sp), ), onPressed: () { - Get.back(); + state.isLiveView.value == false + ? state.realTimeMode.value = 0 + : state.realTimeMode.value = 1; + + logic.updateCatEyeModeConfig(); }, ), ], @@ -117,7 +121,11 @@ class _LiveVideoPageState extends State { )), ), onTap: () { - state.isLiveView.value = !state.isLiveView.value; + if (clickIndex == 0) { + state.isLiveView.value = false; + } else { + state.isLiveView.value = true; + } }, )); } diff --git a/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_state.dart b/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_state.dart index d239cc81..fedd25d5 100644 --- a/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_state.dart +++ b/star_lock/lib/main/lockDetail/lockSet/liveVideo/liveVideo_state.dart @@ -1,5 +1,19 @@ import 'package:get/get.dart'; +import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart'; class LiveVideoState { var isLiveView = false.obs; //是否实时查看 + var realTimeMode = 0.obs; //实时画面 0发生事件事查看 1实时查看 + var lockSetInfoData = LockSetInfoData().obs; + var catEyeConfigData = CatEyeConfig().obs; + + LiveVideoState() { + Map map = Get.arguments; + if (map['lockSetInfoData'] != null) { + lockSetInfoData.value = map['lockSetInfoData']; + } + if (map['catEyeConfigData'] != null) { + catEyeConfigData.value = map['catEyeConfigData']; + } + } } diff --git a/star_lock/lib/talk/udp/udp_talkClass.dart b/star_lock/lib/talk/udp/udp_talkClass.dart index 2a5bee5e..3d5ba4d0 100644 --- a/star_lock/lib/talk/udp/udp_talkClass.dart +++ b/star_lock/lib/talk/udp/udp_talkClass.dart @@ -88,9 +88,10 @@ class UDPTalkClass { } playLocalAudioTimer = Timer.periodic(const Duration(seconds: 1), (timer) { playLocalAudioSecond++; + print('还在工作么这个定时器$playLocalAudioSecond'); // 检查条件,如果达到60秒且未得到应答,则认为失败 if (playLocalAudioSecond >= 60) { - playLocalAudioTimer.cancel(); // 取消定时器 + timer.cancel(); // 取消定时器 playLocalAudioSecond = 0; // LockMonitoringLogic().initiateUdpHangUpAction(5); callNoAnswer(4);