更新同步遥控器

This commit is contained in:
wyf
2025-06-30 21:56:15 +08:00
parent 0e0f475536
commit adaaf561ee
8 changed files with 148 additions and 29 deletions

View File

@@ -22,6 +22,11 @@ class MainPageBBottomChange extends StatefulWidget {
} }
} }
static int? getCurrentIndex() {
final state = globalKey.currentState;
return state?.selectedIndex;
}
@override @override
_HomePageState createState() => _HomePageState(); _HomePageState createState() => _HomePageState();
} }
@@ -133,11 +138,9 @@ class _HomePageState extends State<MainPageBBottomChange>
Future<void> dealWebSource(int index) async { Future<void> dealWebSource(int index) async {
WebviewTestController webviewTestController = Get.find(); WebviewTestController webviewTestController = Get.find();
if (index == 2) { if (index == 2) {
await webviewTestController.web.jsbridge?.dart await webviewTestController.web.jsbridge?.dart.pageActive();
.pageActive(); } else {
}else{ await webviewTestController.web.jsbridge?.dart.pageInActive();
await webviewTestController.web.jsbridge?.dart }
.pageInActive();
}
} }
} }

View File

@@ -3,8 +3,6 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:flutter_switch/flutter_switch.dart'; import 'package:flutter_switch/flutter_switch.dart';
import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart'; import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart';
class MattressControlPage extends StatefulWidget { class MattressControlPage extends StatefulWidget {

View File

@@ -507,7 +507,7 @@ class _DeviceComponentWidgetState extends State<DeviceComponentWidget> {
blueteethBindController.blueConnectFlag.value = 2; blueteethBindController.blueConnectFlag.value = 2;
blueteethBindController.currentDevice = bledevice; blueteethBindController.currentDevice = bledevice;
await Future.delayed(Duration(seconds: 1)); await Future.delayed(Duration(seconds: 2));
var read = bledevice.getresource('fff0/fff1'); var read = bledevice.getresource('fff0/fff1');
await read!.characteristic.setNotifyValue(true); await read!.characteristic.setNotifyValue(true);
var write = bledevice.getresource('fff0/fff2'); var write = bledevice.getresource('fff0/fff2');

View File

@@ -560,4 +560,79 @@ class MHTHomeController extends GetControllerEx<MHTHomeModel> {
}, },
); );
} }
//开启定时器
void startTimer(args) {
var tmp = args[0];
String serviceAddress = ServiceConstant.service_address;
String serviceName = ServiceConstant.server_service;
String serviceApi = ServiceConstant.user_setting;
String type = "control_${tmp['mac']}";
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
var data = {
"type": type,
"duration": tmp['duration'],
"mac": tmp['mac'],
"time": tmp['startTime'],
};
requestWithLog(
logTitle: "更新控制倒计时",
method: MyHttpMethod.put,
queryUrl: queryUrl,
data: data,
onSuccess: (res) {});
}
//关闭定时器
void cancelTimer(args) {
var tmp = args[0];
String serviceAddress = ServiceConstant.service_address;
String serviceName = ServiceConstant.server_service;
String serviceApi = ServiceConstant.user_setting;
String type = "control_${tmp['mac']}";
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
var data = {
"type": type,
"duration": 0,
"mac": tmp['mac'],
"time": tmp['startTime'],
};
requestWithLog(
logTitle: "查询控制倒计时",
method: MyHttpMethod.put,
queryUrl: queryUrl,
data: data,
onSuccess: (res) {});
}
//恢复
restoreTimer(args) async {
var data = {};
try {
var tmp = args[0];
String serviceAddress = ServiceConstant.service_address;
String serviceName = ServiceConstant.server_service;
String serviceApi = ServiceConstant.user_setting;
String type = "control_${tmp}";
String queryUrl =
"${serviceAddress}${serviceName}${serviceApi}?type=$type";
await requestWithLog(
logTitle: "查询控制倒计时",
method: MyHttpMethod.get,
queryUrl: queryUrl,
onSuccess: (res) {
if (res.data != null) {
data = res.data;
}
},
onFailure: (res) {
data = {};
},
);
} catch (e) {
ef.log("$e");
}
return data;
}
} }

View File

@@ -271,6 +271,7 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
'backgroundImg': 'backgroundImg':
'assets/images/new_background.png', 'assets/images/new_background.png',
'arrow': false, 'arrow': false,
'noBackImg':true,
}, },
), ),
); );

View File

@@ -372,7 +372,7 @@ class _NewHomePageState extends State<NewHomePage> {
MediaQuery.sizeOf(context).height * MediaQuery.sizeOf(context).height *
0.184, 0.184,
constraints: BoxConstraints( constraints: BoxConstraints(
minHeight: 350.rpx, minHeight: 354.rpx,
), ),
decoration: BoxDecoration( decoration: BoxDecoration(
color: stringToColor("#003058"), color: stringToColor("#003058"),
@@ -385,8 +385,8 @@ class _NewHomePageState extends State<NewHomePage> {
Padding( Padding(
padding: padding:
EdgeInsetsDirectional.fromSTEB( EdgeInsetsDirectional.fromSTEB(
30.rpx, 20.rpx,
16.rpx, 20.rpx,
16.rpx, 16.rpx,
25.rpx), 25.rpx),
child: Container( child: Container(
@@ -522,7 +522,6 @@ class _NewHomePageState extends State<NewHomePage> {
isMultiSelect: false, isMultiSelect: false,
), ),
), ),
), ),
InkWell( InkWell(
onTap: () { onTap: () {
@@ -827,10 +826,15 @@ class _NewHomePageState extends State<NewHomePage> {
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Icon( // Icon(
Icons.add, // Icons.add,
size: 60.rpx, // size: 60.rpx,
color: stringToColor("#85F5FF"), // color: stringToColor("#85F5FF"),
// ),
SvgPicture.asset(
'assets/images/icon/add.svg',
width: 42.rpx,
height: 42.rpx,
), ),
SizedBox(width: 20.rpx), SizedBox(width: 20.rpx),
Text( Text(

View File

@@ -118,7 +118,24 @@ class WebviewTestController extends GetControllerEx<WebviewTestModel> {
// bluetooth = args[0]; // bluetooth = args[0];
return instantData; return instantData;
}); });
bridge.sdk.startTimer((args) async {
ef.log('queryInstantData: $args');
MHTHomeController homeController = Get.find();
homeController.startTimer(args);
return true;
});
bridge.sdk.cancelTimer((args) async {
ef.log('queryInstantData: $args');
MHTHomeController homeController = Get.find();
homeController.cancelTimer(args);
return true;
});
bridge.sdk.restoreTimer((args) async {
ef.log('queryInstantData: $args');
MHTHomeController homeController = Get.find();
var data = await homeController.restoreTimer(args);
return data;
});
}); });
web web
//.file( //.file(
@@ -180,7 +197,6 @@ class WebviewTestController extends GetControllerEx<WebviewTestModel> {
} else { } else {
print("未知数据格式"); print("未知数据格式");
} }
print("aaa");
if (tmp['data'] != null && tmp['data'] is Map) { if (tmp['data'] != null && tmp['data'] is Map) {
var newData = tmp['data']; var newData = tmp['data'];
var mac = newData['mac']; var mac = newData['mac'];

View File

@@ -13,6 +13,7 @@ import 'package:vbvs_app/controller/home/home_controller.dart';
import 'package:vbvs_app/controller/sleep/sleep_report_controller.dart'; import 'package:vbvs_app/controller/sleep/sleep_report_controller.dart';
import 'package:vbvs_app/language/AppLanguage.dart'; import 'package:vbvs_app/language/AppLanguage.dart';
import 'package:vbvs_app/pages/common/selectDialog.dart'; import 'package:vbvs_app/pages/common/selectDialog.dart';
import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart';
import 'package:vbvs_app/pages/sleep_report/component/AIAdviceWidget.dart'; import 'package:vbvs_app/pages/sleep_report/component/AIAdviceWidget.dart';
import 'package:vbvs_app/pages/sleep_report/component/BreatheCard.dart'; import 'package:vbvs_app/pages/sleep_report/component/BreatheCard.dart';
import 'package:vbvs_app/pages/sleep_report/component/BreathePauseNewWidget.dart'; import 'package:vbvs_app/pages/sleep_report/component/BreathePauseNewWidget.dart';
@@ -91,8 +92,16 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
_scrollToTargetComponent(sleepReportController.sleepReport); _scrollToTargetComponent(sleepReportController.sleepReport);
}, },
onFailure: (res) { onFailure: (res) {
TopSlideNotification.show(context, if (MainPageBBottomChange.getCurrentIndex() != null) {
text: res.msg!, textColor: themeController.currentColor.sc9); if (MainPageBBottomChange.getCurrentIndex() == 1) {
TopSlideNotification.show(context,
text: res.msg!, textColor: themeController.currentColor.sc9);
}
} else {
TopSlideNotification.show(context,
text: res.msg!, textColor: themeController.currentColor.sc9);
}
sleepReportController.sleepReport.value = {}; sleepReportController.sleepReport.value = {};
sleepReportController.updateAll(); sleepReportController.updateAll();
print(res); print(res);
@@ -149,15 +158,28 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
builder: (context, bodySize) => GestureDetector( builder: (context, bodySize) => GestureDetector(
onTap: () => FocusScope.of(context).unfocus(), onTap: () => FocusScope.of(context).unfocus(),
child: Container( child: Container(
// decoration: BoxDecoration(
// image: DecorationImage(
// image: (widget.data['backgroundImg'] != null &&
// widget.data['backgroundImg'].toString().isNotEmpty)
// ? AssetImage(widget.data['backgroundImg'])
// : AssetImage('assets/img/bgNoImg.png') as ImageProvider,
// fit: BoxFit.fill,
// ),
// ),
decoration: BoxDecoration( decoration: BoxDecoration(
image: DecorationImage( image: (widget.data['noBackImg'] != null &&
image: (widget.data['backgroundImg'] != null && widget.data['noBackImg'] == true)
widget.data['backgroundImg'].toString().isNotEmpty) ? null // ✅ 不要背景图
? AssetImage(widget.data['backgroundImg']) : DecorationImage(
: AssetImage('assets/img/bgNoImg.png') as ImageProvider, image: (widget.data['backgroundImg'] != null &&
fit: BoxFit.fill, widget.data['backgroundImg'].toString().isNotEmpty)
), ? AssetImage(widget.data['backgroundImg'])
: AssetImage('assets/img/bgNoImg.png') as ImageProvider,
fit: BoxFit.fill,
),
), ),
child: Scaffold( child: Scaffold(
backgroundColor: Colors.transparent, // 背景透明 backgroundColor: Colors.transparent, // 背景透明
appBar: AppBar( appBar: AppBar(