猫眼设置自定义模式获取设置项接口对接
解决点击自定义模式设置项不能弹出相应选项问题 猫眼自定义模式--实时画面接口对接 猫眼自定义模式--有人出现时录像接口对接 猫眼自定义模式--人体侦测距离接口对接
This commit is contained in:
parent
c57426cbcc
commit
bc781eba98
@ -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('设置成功');
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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(() {});
|
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -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'];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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]
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
@ -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 ==
|
||||||
|
|||||||
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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'];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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'];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user