主页睡眠信息点击跳转页面修改

This commit is contained in:
czz
2025-09-12 09:37:53 +08:00
parent 0bb50226c2
commit b828079c42
3 changed files with 195 additions and 103 deletions

View File

@@ -1,5 +1,11 @@
import 'package:ef/ef.dart';
import 'package:flutter/material.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:vbvs_app/common/color/ServiceConstant.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/common/util/requestWithLog.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart';
part 'sleep_report_controller.g.dart'; // 由json_serializable自动生成的部分
@@ -28,10 +34,58 @@ class SleepReportController extends GetControllerEx<SleepReportModel> {
Rx<DateTime?> selectedDate = Rx<DateTime?>(null);
RxMap<String, dynamic> sleepReport = <String, dynamic>{}.obs;
RxBool isLoading = false.obs;
// 下拉框的设备 mac
RxString mac = "".obs;
// 日历选择的日期
RxInt date = 0.obs;
// 初始化方法(外部跳转时调用)
void initParams({String? macValue, int? dateValue}) {
if (macValue != null) mac.value = macValue;
if (dateValue != null) {
date.value = dateValue;
}
}
// 每种类型对应一份数据
SleepReportController() {
attr = GetModel(SleepReportModel()).obs;
}
void loadSleepReport(String data, String mac, BuildContext context) async {
isLoading.value = true;
String serviceAddress = ServiceConstant.service_address;
String serviceName = ServiceConstant.server_service;
String serviceApi = ServiceConstant.sleep_report;
String queryUrl =
"$serviceAddress$serviceName$serviceApi?mac=${mac}&time=${data}&type=1&sleepType=2";
await requestWithLog(
logTitle: "查询睡眠报告",
method: MyHttpMethod.get,
queryUrl: queryUrl,
onSuccess: (res) {
isLoading.value = false;
print(res);
sleepReport.value = res.data;
updateAll();
},
onFailure: (res) {
isLoading.value = false;
if (MainPageBBottomChange.getCurrentIndex() != null) {
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);
}
sleepReport.value = {};
updateAll();
print(res);
});
}
}

View File

@@ -41,7 +41,6 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
final RxBool isRightLimit = false.obs;
var formFieldController = FormFieldController<String>(null);
var personInfo = {}.obs;
Rx<bool> isLoading = false.obs;
@override
void initState() {
@@ -50,11 +49,9 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
//查询人员信息列表
deviceController.getPersonList();
}
WidgetsBinding.instance.addPostFrameCallback((_) {
final selected = DateTime.fromMillisecondsSinceEpoch(
var selected = DateTime.fromMillisecondsSinceEpoch(
DateTime.now().millisecondsSinceEpoch);
calendarController.selectedDate.value = selected;
sleepReportController.selectedDate.value = selected;
sleepReportController.model.type = 1;
@@ -239,18 +236,30 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
if (userInfoController.model.login! != null &&
userInfoController.model.login! == 1 &&
deviceController.personnelList.value.isNotEmpty) {
final list = deviceController.personnelList.value;
if (list.isNotEmpty) {
if (sleepReportController.mac.value != "") {
WidgetsBinding.instance.addPostFrameCallback((_) {
formFieldController.value = list[0]["mac"];
personInfo.value = list[0];
homeController.selectPerson.value = list[0];
formFieldController.value =
sleepReportController.mac.value;
homeController.selectDevcie.value =
list[0]["mac"];
sleepReportController.mac.value;
deviceController
.getSleeps(formFieldController.value);
homeController.updateAll();
});
} else {
final list = deviceController.personnelList.value;
if (list.isNotEmpty) {
WidgetsBinding.instance.addPostFrameCallback((_) {
formFieldController.value = list[0]["mac"];
personInfo.value = list[0];
homeController.selectPerson.value = list[0];
homeController.selectDevcie.value =
list[0]["mac"];
deviceController
.getSleeps(formFieldController.value);
homeController.updateAll();
});
}
}
return Padding(
padding: EdgeInsetsDirectional.fromSTEB(
@@ -365,7 +374,13 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
calendarController
.selectedDate
.value!);
loadSleepReport(data);
sleepReportController
.loadSleepReport(
data,
homeController
.selectDevcie
.value,
context);
homeController
.updateAll();
}
@@ -445,7 +460,12 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
calendarController
.selectedDate
.value!);
loadSleepReport(data);
sleepReportController
.loadSleepReport(
data,
homeController
.selectDevcie.value,
context);
sleepReportController
.updateAll();
calendarController.updateAll();
@@ -497,7 +517,7 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
height: 30.rpx,
),
getTimeWidget(), // 始终显示
isLoading.value
sleepReportController.isLoading.value
? Padding(
padding: EdgeInsets.fromLTRB(
0, 30.rpx, 0, 0),
@@ -531,7 +551,13 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
calendarController
.selectedDate
.value!);
loadSleepReport(data);
sleepReportController
.loadSleepReport(
data,
homeController
.selectDevcie
.value,
context);
},
),
SizedBox(height: 25.rpx),
@@ -546,7 +572,13 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
calendarController
.selectedDate
.value!);
loadSleepReport(data);
sleepReportController
.loadSleepReport(
data,
homeController
.selectDevcie
.value,
context);
},
),
],
@@ -569,7 +601,13 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
}
Widget getTimeWidget() {
selectedDate = sleepReportController.selectedDate.value!;
if (sleepReportController.date.value > 0) {
selectedDate =
DateTime.fromMillisecondsSinceEpoch(sleepReportController.date.value);
} else {
selectedDate = sleepReportController.selectedDate.value!;
}
final type = sleepReportController.model.type;
bool isChinese = AppLanguage().isChinese();
String displayText = '';
@@ -591,7 +629,8 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
sleepReportController.selectedDate.value;
// String date = MyUtils.formatToDate(widget.data['date']);
String data = MyUtils.formatDate(calendarController.selectedDate.value!);
loadSleepReport(data);
sleepReportController.loadSleepReport(
data, homeController.selectDevcie.value, context);
sleepReportController.updateAll();
calendarController.updateAll();
}
@@ -612,7 +651,8 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
calendarController.selectedDate.value = targetDate;
String data = MyUtils.formatDate(targetDate);
loadSleepReport(data);
sleepReportController.loadSleepReport(
data, homeController.selectDevcie.value, context);
sleepReportController.updateAll();
calendarController.updateAll();
@@ -626,7 +666,8 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
sleepReportController.selectedDate.value;
// String date = MyUtils.formatToDate(widget.data['date']);
String data = MyUtils.formatDate(calendarController.selectedDate.value!);
loadSleepReport(data);
sleepReportController.loadSleepReport(
data, homeController.selectDevcie.value, context);
sleepReportController.updateAll();
calendarController.updateAll();
@@ -683,42 +724,6 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
);
}
void loadSleepReport(String data) {
isLoading.value = true;
String serviceAddress = ServiceConstant.service_address;
String serviceName = ServiceConstant.server_service;
String serviceApi = ServiceConstant.sleep_report;
String queryUrl =
"$serviceAddress$serviceName$serviceApi?mac=${homeController.selectDevcie.value}&time=${data}&type=1&sleepType=2";
requestWithLog(
logTitle: "查询睡眠报告",
method: MyHttpMethod.get,
// queryUrl:
// "https://sleepdata.he-info.com/api/analysis/sleep/analysis?mac=${homeController.selectDevcie.value}&time=${data}&type=1",
queryUrl: queryUrl,
onSuccess: (res) {
isLoading.value = false;
print(res);
sleepReportController.sleepReport.value = res.data;
sleepReportController.updateAll();
},
onFailure: (res) {
isLoading.value = false;
if (MainPageBBottomChange.getCurrentIndex() != null) {
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.updateAll();
print(res);
});
}
static String _getEnglishMonthName(int month) {
const monthNames = [
'January',

View File

@@ -11,9 +11,11 @@ import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/JPushUtil.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
import 'package:vbvs_app/controller/sleep/sleep_report_controller.dart';
import 'package:vbvs_app/controller/user_info_controller.dart';
import 'package:vbvs_app/controller/weather/weather_controller.dart';
import 'package:vbvs_app/enum/APPPackageType.dart';
import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart';
import 'package:vbvs_app/pages/mh_page/component/mht_bind_dialog.dart';
import 'package:vbvs_app/pages/mh_page/homepage/component/HomeDeviceWidget.dart';
import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart';
@@ -25,6 +27,7 @@ class NewHomePage extends StatefulWidget {
}
class _NewHomePageState extends State<NewHomePage> {
SleepReportController sleepReportController = Get.find();
UserInfoController userInfoController = Get.find();
MHTHomeController deviceController = Get.find();
MHTHomeController homeController = Get.find();
@@ -558,35 +561,43 @@ class _NewHomePageState extends State<NewHomePage> {
if (formFieldController
.value !=
null) {
Get.toNamed(
"/newSleepReportPage",
arguments: {
'mac':
// Get.toNamed(
// "/newSleepReportPage",
// arguments: {
// 'mac':
// formFieldController
// .value!,
// 'type': 1,
// "person":
// personInfo.value,
// 'backgroundImg':
// 'assets/images/new_background.png',
// 'date': DateTime.now()
// .millisecondsSinceEpoch,
// 'person_show': false,
// 'reportPadding': false,
// },
// );
sleepReportController
.initParams(
macValue:
formFieldController
.value!,
dateValue: DateTime.now()
.millisecondsSinceEpoch,
);
sleepReportController
.sleepReport.value = {};
sleepReportController
.loadSleepReport(
MyUtils.formatDate(
DateTime.now()),
formFieldController
.value!,
'type': 1,
"person":
personInfo.value,
'backgroundImg':
'assets/images/new_background.png',
'date': DateTime.now()
.millisecondsSinceEpoch,
'person_show': false,
'reportPadding': false,
},
);
// 保存当前选中的mac到全局状态
// homeController.selectDevcie
// .value =
// formFieldController
// .value!;
// homeController.selectPerson
// .value =
// personInfo.value;
// // 使用底部tab跳转到第二个页面
// MainPageBBottomChange
// .jumpTo(1);
context);
// 切换导航栏到报告页
MainPageBBottomChange
.jumpTo(1);
}
},
child: Row(
@@ -670,27 +681,49 @@ class _NewHomePageState extends State<NewHomePage> {
int? timeMillis =
parseToInt(
day['time']);
Get.toNamed(
"/newSleepReportPage",
arguments: {
'date':
timeMillis,
'mac':
formFieldController
.value!,
'type': 1,
"person":
personInfo
.value,
'backgroundImg':
'assets/images/new_background.png',
// 'backgroundColor':stringToColor("#003058"),
'person_show':
false,
'reportPadding':
false,
},
// Get.toNamed(
// "/newSleepReportPage",
// arguments: {
// 'date':
// timeMillis,
// 'mac':
// formFieldController
// .value!,
// 'type': 1,
// "person":
// personInfo
// .value,
// 'backgroundImg':
// 'assets/images/new_background.png',
// // 'backgroundColor':stringToColor("#003058"),
// 'person_show':
// false,
// 'reportPadding':
// false,
// }
// //主页跳详情睡眠报告
// );
sleepReportController
.initParams(
macValue:
formFieldController
.value!,
dateValue:
timeMillis,
);
sleepReportController
.sleepReport
.value = {};
sleepReportController.loadSleepReport(
MyUtils.formatDate(
DateTime.fromMillisecondsSinceEpoch(
timeMillis!)),
formFieldController
.value!,
context);
// 切换导航栏到报告页
MainPageBBottomChange
.jumpTo(1);
},
child: Container(
padding: