猫眼设置自定义模式获取设置项接口对接

解决点击自定义模式设置项不能弹出相应选项问题
猫眼自定义模式--实时画面接口对接
猫眼自定义模式--有人出现时录像接口对接
猫眼自定义模式--人体侦测距离接口对接
This commit is contained in:
Daisy 2024-04-06 17:00:36 +08:00
parent c57426cbcc
commit bc781eba98
14 changed files with 425 additions and 116 deletions

View File

@ -1,6 +1,64 @@
import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_state.dart'; 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'; import 'package:star_lock/tools/baseGetXController.dart';
class CatEyeCustomModeLogic extends BaseGetXController { class CatEyeCustomModeLogic extends BaseGetXController {
final CatEyeCustomModeState state = CatEyeCustomModeState(); final CatEyeCustomModeState state = CatEyeCustomModeState();
//
Future<LockSetInfoEntity> 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('设置成功');
}
}
} }

View File

@ -1,4 +1,3 @@
import 'package:flutter/cupertino.dart';
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';
@ -21,6 +20,12 @@ class _CatEyeCustomModePageState extends State<CatEyeCustomModePage> {
final logic = Get.put(CatEyeCustomModeLogic()); final logic = Get.put(CatEyeCustomModeLogic());
final state = Get.find<CatEyeCustomModeLogic>().state; final state = Get.find<CatEyeCustomModeLogic>().state;
@override
initState() {
super.initState();
logic.getLockSettingInfoData();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@ -28,45 +33,65 @@ class _CatEyeCustomModePageState extends State<CatEyeCustomModePage> {
appBar: TitleAppBar( appBar: TitleAppBar(
barTitle: TranslationLoader.lanKeys!.customMode!.tr, barTitle: TranslationLoader.lanKeys!.customMode!.tr,
haveBack: true, haveBack: true,
backAction: () {
Navigator.pop(context, true);
},
backgroundColor: AppColors.mainColor), backgroundColor: AppColors.mainColor),
body: Column( body: Column(
children: [ children: [
CommonItem( Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.videoSlot!.tr, leftTitel: TranslationLoader.lanKeys!.videoSlot!.tr,
rightTitle: "", rightTitle: "",
isHaveLine: false, isHaveLine: false,
isHaveDirection: true, isHaveDirection: true,
isHaveRightWidget: true, isHaveRightWidget: true,
rightWidget: Text('当日22:00~次日08:00', rightWidget: Text(state.selectVideoSlot.value,
style: TextStyle( style: TextStyle(
fontSize: 22.sp, color: AppColors.darkGrayTextColor)), fontSize: 22.sp, color: AppColors.darkGrayTextColor)),
action: () => Get.toNamed(Routers.videoSlotPage), action: () {
), Navigator.pushNamed(context, Routers.videoSlotPage,
_buildSubTitleItem('有人出现时录像', '有人在门口出现10秒后开始录像。\n有人按门铃时立即录像', arguments: {
state.showsUpVideo.value, () { 'lockSetInfoData': state.lockSetInfoData.value,
_openBottomItemSheet(state.showsUpVideoList.value, 0); '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( SizedBox(
height: 30.h, height: 30.h,
), ),
Obx(() => _buildSubTitleItem( Obx(() => _buildSubTitleItem('人体侦测距离', '有人出现在门前1.5米范围时启动录像',
'人体侦测距离', '有人出现在门前1.5米范围时启动录像', state.detectionRange.value, state.detectionDistance.value, () {
() {
_openBottomItemSheet(state.detectionRangeList.value, 1); _openBottomItemSheet(state.detectionRangeList.value, 1);
})), })),
SizedBox( SizedBox(
height: 30.h, height: 30.h,
), ),
CommonItem( Obx(() => CommonItem(
leftTitel: '实时画面', leftTitel: '实时画面',
rightTitle: "全天", rightTitle: state.realTimeMode.value,
isHaveLine: false, isHaveLine: false,
isHaveDirection: true, isHaveDirection: true,
isHaveRightWidget: false, isHaveRightWidget: false,
action: () { action: () {
Get.toNamed(Routers.liveVideoPage); 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<CatEyeCustomModePage> {
return GestureDetector( return GestureDetector(
onTap: action, onTap: action,
child: Container( child: Container(
color: Colors.white,
margin: EdgeInsets.only(left: 20.sp, right: 20.sp, top: 20.h), margin: EdgeInsets.only(left: 20.sp, right: 20.sp, top: 20.h),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
@ -143,15 +169,14 @@ class _CatEyeCustomModePageState extends State<CatEyeCustomModePage> {
items: bottomItemList, items: bottomItemList,
chooseCallback: (value) { chooseCallback: (value) {
if (clickIndex == 0) { if (clickIndex == 0) {
// //
state.showsUpVideo.value = state.showsUpVideoList.value[value]; state.recordTime.value = state.showsUpVideoList.value[value];
} else if (clickIndex == 1) { } else if (clickIndex == 1) {
// //
state.detectionRange.value = state.detectionDistance.value =
state.detectionRangeList.value[value]; state.detectionRangeList.value[value];
} }
logic.updateCatEyeModeConfig();
setState(() {});
}, },
); );
}); });

View File

@ -1,17 +1,16 @@
import 'dart:ui';
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/app_settings/app_colors.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'; import 'package:star_lock/translations/trans_lib.dart';
class CatEyeCustomModeState { class CatEyeCustomModeState {
var isCheck = false.obs; var isCheck = false.obs;
var faceOn = false.obs; // var faceOn = false.obs; //
var autoBright = false.obs; // var autoBright = false.obs; //
var showsUpVideo = '10${TranslationLoader.lanKeys!.second!.tr}'.obs; // // var showsUpVideo = '10${TranslationLoader.lanKeys!.second!.tr}'.obs; //
var detectionRange = '约1.5米'.obs; // // var detectionRange = '约1.5米'.obs; //
var showsUpVideoList = [ var showsUpVideoList = [
'不录像', '不录像',
'立即录像', '立即录像',
@ -37,4 +36,23 @@ class CatEyeCustomModeState {
text: TranslationLoader.lanKeys!.addAndUseFaceWhenUnlockingTip!.tr, text: TranslationLoader.lanKeys!.addAndUseFaceWhenUnlockingTip!.tr,
style: subTipsStyle), 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'];
}
}
} }

View File

@ -48,7 +48,7 @@ class _CatEyeSetPageState extends State<CatEyeSetPage> {
Navigator.pushNamed(context, Routers.catEyeWorkModePage, Navigator.pushNamed(context, Routers.catEyeWorkModePage,
arguments: { arguments: {
'lockSetInfoData': state.lockSetInfoData.value, 'lockSetInfoData': state.lockSetInfoData.value,
'catEyeConfigata': state.lockSetInfoData.value 'catEyeConfigData': state.lockSetInfoData.value
.lockSettingInfo!.catEyeConfig!.isNotEmpty .lockSettingInfo!.catEyeConfig!.isNotEmpty
? state.lockSetInfoData.value.lockSettingInfo! ? state.lockSetInfoData.value.lockSettingInfo!
.catEyeConfig![0] .catEyeConfig![0]

View File

@ -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/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/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/baseGetXController.dart';
@ -27,4 +29,32 @@ class CatEyeWorkModeLogic extends BaseGetXController {
showToast('设置成功'); showToast('设置成功');
} }
} }
//
Future<LockSetInfoEntity> 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;
}
} }

View File

@ -19,6 +19,12 @@ class _CatEyeWorkModePageState extends State<CatEyeWorkModePage> {
final logic = Get.put(CatEyeWorkModeLogic()); final logic = Get.put(CatEyeWorkModeLogic());
final state = Get.find<CatEyeWorkModeLogic>().state; final state = Get.find<CatEyeWorkModeLogic>().state;
@override
initState() {
super.initState();
logic.getLockSettingInfoData();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@ -60,72 +66,75 @@ class _CatEyeWorkModePageState extends State<CatEyeWorkModePage> {
Widget _buildTipsView(String titleStr, String subTitle, int clickIndex) { Widget _buildTipsView(String titleStr, String subTitle, int clickIndex) {
return GestureDetector( return GestureDetector(
child: Container( child: Container(
width: ScreenUtil().screenWidth - 40.w, width: ScreenUtil().screenWidth - 40.w,
margin: EdgeInsets.only(left: 20.w, right: 20.w, bottom: 10.h), margin: EdgeInsets.only(left: 20.w, right: 20.w, bottom: 10.h),
decoration: BoxDecoration( decoration: BoxDecoration(
color: state.boolList.value[clickIndex] color: state.boolList.value[clickIndex]
? AppColors.blueViewBgColor ? AppColors.blueViewBgColor
: AppColors.greyBackgroundColor, : AppColors.greyBackgroundColor,
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(10.0),
), ),
child: Padding( child: Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
left: 20.w, top: 30.h, bottom: 30.h, right: 20.w), left: 20.w, top: 30.h, bottom: 30.h, right: 20.w),
child: Row( child: Row(
children: [ children: [
state.boolList.value[clickIndex] state.boolList.value[clickIndex]
? Image.asset( ? Image.asset(
'images/mine/icon_mine_blueSelect.png', 'images/mine/icon_mine_blueSelect.png',
width: 20.w, width: 20.w,
height: 14.w, height: 14.w,
) )
: SizedBox( : SizedBox(
width: 20.w, width: 20.w,
height: 14.w, height: 14.w,
), ),
SizedBox(width: 10.w), SizedBox(width: 10.w),
Expanded( Expanded(
child: _buildRichText( child: _buildRichText(
titleStr, subTitle, state.boolList.value[clickIndex]), 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),
),
),
), ),
onTap: () { SizedBox(
// width: 10.w,
if (clickIndex == 3) { ),
Get.toNamed(Routers.catEyeCustomModePage); GestureDetector(
} else { child: Container(
// width: 90.w,
showBottomSheet(context, clickIndex); height: 40.h,
} decoration: BoxDecoration(
}, color: Colors.transparent,
), borderRadius: BorderRadius.circular(15.0),
], border: Border.all(
)), color: AppColors.placeholderTextColor, width: 1.w),
), ),
onTap: () { child: Center(
setState(() { 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++) { for (int i = 0; i < state.boolList.value.length; i++) {
if (clickIndex == i) { if (clickIndex == i) {
state.boolList.value[clickIndex] = true; state.boolList.value[clickIndex] = true;
@ -153,8 +162,6 @@ class _CatEyeWorkModePageState extends State<CatEyeWorkModePage> {
} }
} }
}); });
},
);
} }
Widget _buildRichText(String titleStr, String subTitle, bool isClick) { Widget _buildRichText(String titleStr, String subTitle, bool isClick) {

View File

@ -18,8 +18,8 @@ class CatEyeWorkModeState {
CatEyeWorkModeState() { CatEyeWorkModeState() {
Map map = Get.arguments; Map map = Get.arguments;
lockSetInfoData.value = map["lockSetInfoData"]; lockSetInfoData.value = map["lockSetInfoData"];
if (map['catEyeConfigata'] != null) { if (map['catEyeConfigData'] != null) {
catEyeConfigData.value = map['catEyeConfigata']; catEyeConfigData.value = map['catEyeConfigData'];
selectCatEyeWorkMode.value = catEyeConfigData.value.catEyeMode!; selectCatEyeWorkMode.value = catEyeConfigData.value.catEyeMode!;
if (catEyeConfigData.value.catEyeMode == if (catEyeConfigData.value.catEyeMode ==

View File

@ -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/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'; import 'package:star_lock/tools/baseGetXController.dart';
class VideoSlotLogic extends BaseGetXController { class VideoSlotLogic extends BaseGetXController {
final VideoSlotState state = VideoSlotState(); final VideoSlotState state = VideoSlotState();
//
Future<LockSetInfoEntity> 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();
}
}
} }

View File

@ -27,6 +27,9 @@ class _VideoSlotPageState extends State<VideoSlotPage> {
appBar: TitleAppBar( appBar: TitleAppBar(
barTitle: '录像时段', barTitle: '录像时段',
haveBack: true, haveBack: true,
backAction: () {
Navigator.pop(context, true);
},
backgroundColor: AppColors.mainColor, backgroundColor: AppColors.mainColor,
actionsList: [ actionsList: [
TextButton( TextButton(
@ -35,7 +38,16 @@ class _VideoSlotPageState extends State<VideoSlotPage> {
style: TextStyle(color: Colors.white, fontSize: 24.sp), style: TextStyle(color: Colors.white, fontSize: 24.sp),
), ),
onPressed: () { 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<VideoSlotPage> {
SizedBox( SizedBox(
height: 30.h, height: 30.h,
), ),
_buildCustomTimeView('自定义时间', '', 1), _buildCustomTimeView('自定义时间', 1),
], ],
)); ));
} }
@ -92,13 +104,17 @@ class _VideoSlotPageState extends State<VideoSlotPage> {
)), )),
)), )),
onTap: () { 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( return GestureDetector(
child: Obx(() => Container( child: Obx(() => Container(
width: ScreenUtil().screenWidth - 40.w, width: ScreenUtil().screenWidth - 40.w,
@ -164,7 +180,11 @@ class _VideoSlotPageState extends State<VideoSlotPage> {
)), )),
)), )),
onTap: () { onTap: () {
state.isCustom.value = !state.isCustom.value; if (clickIndex == 1) {
state.isCustom.value = true;
} else {
state.isCustom.value = false;
}
}, },
); );
} }

View File

@ -1,6 +1,10 @@
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart';
class VideoSlotState { class VideoSlotState {
var lockSetInfoData = LockSetInfoData().obs;
var catEyeConfigData = CatEyeConfig().obs;
var isCustom = false.obs; // var isCustom = false.obs; //
DateTime dateTime = DateTime.now(); DateTime dateTime = DateTime.now();
final startDateTime = DateTime.now().obs; // final startDateTime = DateTime.now().obs; //
@ -9,4 +13,22 @@ class VideoSlotState {
var startDate = var startDate =
'${DateTime.now().hour}:${DateTime.now().minute}'.obs; // '${DateTime.now().hour}:${DateTime.now().minute}'.obs; //
var endDate = '${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'];
}
}
} }

View File

@ -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/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'; import 'package:star_lock/tools/baseGetXController.dart';
class LiveVideoLogic extends BaseGetXController { class LiveVideoLogic extends BaseGetXController {
final LiveVideoState state = LiveVideoState(); final LiveVideoState state = LiveVideoState();
//
Future<LockSetInfoEntity> 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();
}
}
} }

View File

@ -33,7 +33,11 @@ class _LiveVideoPageState extends State<LiveVideoPage> {
style: TextStyle(color: Colors.white, fontSize: 24.sp), style: TextStyle(color: Colors.white, fontSize: 24.sp),
), ),
onPressed: () { 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<LiveVideoPage> {
)), )),
), ),
onTap: () { onTap: () {
state.isLiveView.value = !state.isLiveView.value; if (clickIndex == 0) {
state.isLiveView.value = false;
} else {
state.isLiveView.value = true;
}
}, },
)); ));
} }

View File

@ -1,5 +1,19 @@
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart';
class LiveVideoState { class LiveVideoState {
var isLiveView = false.obs; // 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'];
}
}
} }

View File

@ -88,9 +88,10 @@ class UDPTalkClass {
} }
playLocalAudioTimer = Timer.periodic(const Duration(seconds: 1), (timer) { playLocalAudioTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
playLocalAudioSecond++; playLocalAudioSecond++;
print('还在工作么这个定时器$playLocalAudioSecond');
// 60 // 60
if (playLocalAudioSecond >= 60) { if (playLocalAudioSecond >= 60) {
playLocalAudioTimer.cancel(); // timer.cancel(); //
playLocalAudioSecond = 0; playLocalAudioSecond = 0;
// LockMonitoringLogic().initiateUdpHangUpAction(5); // LockMonitoringLogic().initiateUdpHangUpAction(5);
callNoAnswer(4); callNoAnswer(4);