diff --git a/assets/img/icon/arrow_left.svg b/assets/img/icon/arrow_left.svg
index 6767c9c..832b94a 100644
--- a/assets/img/icon/arrow_left.svg
+++ b/assets/img/icon/arrow_left.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/lib/controller/weather/weather_controller.dart b/lib/controller/weather/weather_controller.dart
index 53ea313..4f984c6 100644
--- a/lib/controller/weather/weather_controller.dart
+++ b/lib/controller/weather/weather_controller.dart
@@ -95,6 +95,8 @@ class WeatherModelController extends GetControllerEx {
// 调用获取天气方法
_getCurrentWeather();
} catch (e) {
+
+
print(e);
EasyDartModule.logger.error("获取位置失败: $e");
}
diff --git a/lib/pages/common/selectDialog.dart b/lib/pages/common/selectDialog.dart
index 3af076f..9146da1 100644
--- a/lib/pages/common/selectDialog.dart
+++ b/lib/pages/common/selectDialog.dart
@@ -271,6 +271,153 @@ Future showDateSelectionDialog(BuildContext context,
);
}
+Future showMonthSelectionDialog(
+ BuildContext context, {
+ required DateTime checkDate,
+ Function(DateTime)? checkChange,
+ String title = "选择月份",
+}) {
+ ThemeController themeController = Get.find();
+
+ final List years = List.generate(100, (i) => DateTime.now().year - i)
+ ..sort();
+ final List months = List.generate(12, (i) => i + 1);
+
+ final RxInt yearIndex = years.indexOf(checkDate.year).obs;
+ final RxInt monthIndex = months.indexOf(checkDate.month).obs;
+
+ return showDialog(
+ context: context,
+ barrierDismissible: true,
+ builder: (BuildContext context) {
+ return Stack(
+ children: [
+ Positioned(
+ bottom: 0,
+ left: 0,
+ right: 0,
+ child: Material(
+ color: Colors.transparent,
+ child: Dialog(
+ backgroundColor: const Color(0xFF003058),
+ insetPadding: EdgeInsets.zero,
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(0),
+ ),
+ child: Container(
+ width: double.infinity,
+ padding: EdgeInsets.fromLTRB(30.rpx, 10.rpx, 30.rpx, 90.rpx),
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ ClickableContainer(
+ backgroundColor: Colors.transparent,
+ highlightColor: Colors.transparent,
+ padding: EdgeInsets.zero,
+ onTap: () => Navigator.of(context).pop(),
+ child: Container(
+ width: 100.rpx,
+ height: 60.rpx,
+ alignment: Alignment.center,
+ child: Text("取消",
+ style: TextStyle(
+ fontSize: 30.rpx, color: Colors.white)),
+ ),
+ ),
+ Text(
+ title,
+ style: TextStyle(
+ fontFamily: 'Readex Pro',
+ color: themeController.currentColor.sc3,
+ fontSize: 30.rpx,
+ ),
+ ),
+ ClickableContainer(
+ backgroundColor: Colors.transparent,
+ highlightColor: Colors.transparent,
+ padding: EdgeInsets.zero,
+ onTap: () {
+ final selectedDate = DateTime(
+ years[yearIndex.value],
+ months[monthIndex.value],
+ );
+ Navigator.of(context).pop();
+ checkChange?.call(selectedDate);
+ },
+ child: Container(
+ width: 100.rpx,
+ height: 60.rpx,
+ alignment: Alignment.center,
+ child: Text("确定",
+ style: TextStyle(
+ fontSize: 30.rpx,
+ color: stringToColor("#84F5FF"))),
+ ),
+ ),
+ ],
+ ),
+ SizedBox(height: 20.rpx),
+ Stack(
+ children: [
+ Positioned.fill(
+ child: IgnorePointer(
+ child: Center(
+ child: Container(
+ height: 90.rpx,
+ margin:
+ EdgeInsets.symmetric(horizontal: 95.rpx),
+ decoration: BoxDecoration(
+ color: const Color(0xFF84F5FF),
+ borderRadius: BorderRadius.circular(16.rpx),
+ ),
+ ),
+ ),
+ ),
+ ),
+ SizedBox(
+ height: 240.rpx,
+ child: Padding(
+ padding: EdgeInsets.symmetric(horizontal: 95.rpx),
+ child: Row(
+ children: [
+ Expanded(
+ child: getOnePickers(
+ context,
+ years,
+ yearIndex,
+ unit: "年",
+ ),
+ ),
+ Expanded(
+ child: getOnePickers(
+ context,
+ months,
+ monthIndex,
+ unit: "月",
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ ),
+ ),
+ ),
+ ],
+ );
+ },
+ );
+}
+
Future showWeightPickerDialog(
BuildContext context, {
required String initialWeight, // 初始体重(单位:kg)
diff --git a/lib/pages/mh_page/component/easychart.dart b/lib/pages/mh_page/component/easychart.dart
index 013b368..f4173e7 100644
--- a/lib/pages/mh_page/component/easychart.dart
+++ b/lib/pages/mh_page/component/easychart.dart
@@ -46,11 +46,12 @@ class LineView extends StatelessWidget {
bottom: bottomPadding.rpx,
),
child: EasyChartView(
+ key: Key(DateTime.now().toString()),
size: Size(b.maxWidth, 220.rpx),
drawer: ChartDrawer(
xAxis: ChartAxis(
- intent: 44,
- entintent: 15,
+ intent: 28,
+ entintent: 9,
labels: xLabels,
count: xCount,
),
@@ -177,7 +178,7 @@ class LineView extends StatelessWidget {
remainHeight,
Paint()
..color =
- stringToColor(remainColor).withOpacity(0.8),
+ stringToColor(remainColor).withOpacity(0.5),
);
}
// 若已满,不绘制灰色段、也不显示文字(不做任何处理)
diff --git a/lib/pages/mh_page/homepage/controller/mht_home_controller.dart b/lib/pages/mh_page/homepage/controller/mht_home_controller.dart
index d7252f9..ae01ffc 100644
--- a/lib/pages/mh_page/homepage/controller/mht_home_controller.dart
+++ b/lib/pages/mh_page/homepage/controller/mht_home_controller.dart
@@ -66,9 +66,7 @@ class MHTHomeController extends GetControllerEx {
String queryUrl =
"${serviceAddress}${serviceName}${serviceApi}?bindNum=1";
String? language = "";
- if (languageController.selectLanguage != null) {
- language = languageController.selectLanguage.value!.language_code;
- }
+ language = languageController.selectLanguage.value!.language_code;
if (language != null && language.isNotEmpty) {
if (queryUrl.contains("?")) {
queryUrl += "&lang=$language";
@@ -77,19 +75,14 @@ class MHTHomeController extends GetControllerEx {
}
}
var response = await EasyDartModule.dio.get(queryUrl);
- if (response != null) {
- var responseData =
- response.data is String ? jsonDecode(response.data) : response.data;
- ApiResponse res =
- ApiResponse.fromJson(responseData, (object) => object);
- MyUtils.formatResponse(res, "设备.设备列表请求成功".tr, "设备.设备列表请求失败".tr);
- if (res.code == HttpStatusCodes.ok) {
- bindDeviceNum.value = res.total!;
- updateAll();
- return res;
- }
- } else {
- return ApiResponse(code: -1, msg: "服务器.失败".tr);
+ var responseData =
+ response.data is String ? jsonDecode(response.data) : response.data;
+ ApiResponse res = ApiResponse.fromJson(responseData, (object) => object);
+ MyUtils.formatResponse(res, "设备.设备列表请求成功".tr, "设备.设备列表请求失败".tr);
+ if (res.code == HttpStatusCodes.ok) {
+ bindDeviceNum.value = res.total!;
+ updateAll();
+ return res;
}
return apiResponse;
} catch (e) {
@@ -126,9 +119,7 @@ class MHTHomeController extends GetControllerEx {
}
String? language = "";
- if (languageController.selectLanguage != null) {
- language = languageController.selectLanguage.value!.language_code;
- }
+ language = languageController.selectLanguage.value!.language_code;
if (language != null && language.isNotEmpty) {
queryParams['lang'] = language;
}
@@ -139,19 +130,14 @@ class MHTHomeController extends GetControllerEx {
}
var response = await EasyDartModule.dio.get(queryUrl);
- if (response != null) {
- var responseData =
- response.data is String ? jsonDecode(response.data) : response.data;
- ApiResponse res =
- ApiResponse.fromJson(responseData, (object) => object);
- MyUtils.formatResponse(res, "设备.设备列表请求成功".tr, "设备.设备列表请求失败".tr);
- if (res.code == HttpStatusCodes.ok) {
- deviceList.value = res.data!;
- updateAll();
- return res;
- }
- } else {
- return ApiResponse(code: -1, msg: "服务器.失败".tr);
+ var responseData =
+ response.data is String ? jsonDecode(response.data) : response.data;
+ ApiResponse res = ApiResponse.fromJson(responseData, (object) => object);
+ MyUtils.formatResponse(res, "设备.设备列表请求成功".tr, "设备.设备列表请求失败".tr);
+ if (res.code == HttpStatusCodes.ok) {
+ deviceList.value = res.data!;
+ updateAll();
+ return res;
}
return apiResponse;
} catch (e) {
@@ -365,7 +351,7 @@ class MHTHomeController extends GetControllerEx {
String serviceAddress = ServiceConstant.service_address;
String serviceName = ServiceConstant.server_service;
String serviceApi = ServiceConstant.device_show;
- String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
+ String queryUrl = "$serviceAddress$serviceName$serviceApi";
String? language = "";
if (languageController.selectLanguage != null) {
language = languageController.selectLanguage.value!.language_code;
@@ -568,7 +554,7 @@ class MHTHomeController extends GetControllerEx {
String serviceName = ServiceConstant.server_service;
String serviceApi = ServiceConstant.user_setting;
String type = "control_${tmp['mac']}";
- String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
+ String queryUrl = "$serviceAddress$serviceName$serviceApi";
var data = {
"type": type,
"duration": tmp['duration'],
diff --git a/lib/pages/sleep_report/chart/DataShowWidget.dart b/lib/pages/sleep_report/chart/DataShowWidget.dart
index c022d07..aa2090d 100644
--- a/lib/pages/sleep_report/chart/DataShowWidget.dart
+++ b/lib/pages/sleep_report/chart/DataShowWidget.dart
@@ -53,11 +53,12 @@ class _DataShowWidgetState extends State {
width: MediaQuery.sizeOf(context).width * 0.35, // 固定宽度
decoration: BoxDecoration(),
child: Align(
- alignment: widget.alignment == MainAxisAlignment.start
- ? Alignment.centerLeft
- : widget.alignment == MainAxisAlignment.center
- ? Alignment.center
- : Alignment.centerRight, // 根据传入的 alignment 设置对齐
+ alignment: Alignment.centerLeft,
+ // widget.alignment == MainAxisAlignment.start
+ // ? Alignment.centerLeft
+ // : widget.alignment == MainAxisAlignment.center
+ // ? Alignment.center
+ // : Alignment.centerRight, // 根据传入的 alignment 设置对齐
child: widget.widget1, // 显示传入的 widget1
),
),
diff --git a/lib/pages/sleep_report/chart/SegmentedCirclePainter.dart b/lib/pages/sleep_report/chart/SegmentedCirclePainter.dart
index 9d5de36..6392b91 100644
--- a/lib/pages/sleep_report/chart/SegmentedCirclePainter.dart
+++ b/lib/pages/sleep_report/chart/SegmentedCirclePainter.dart
@@ -89,7 +89,7 @@ class SegmentedCircleWithCenterWidget extends StatelessWidget {
centerWidget, // 放置自定义的中心 Widget
Positioned(
bottom: 140.rpx,
- right: 60.rpx, // 放置在右侧
+ right: 50.rpx, // 放置在右侧
child: SvgPicture.asset(
_getTrendIcon(trend),
width: trend != 0 ? 14.rpx : 18.rpx,
diff --git a/lib/pages/sleep_report/component/SleepScoreWidget.dart b/lib/pages/sleep_report/component/SleepScoreWidget.dart
index 651144e..fa75e4a 100644
--- a/lib/pages/sleep_report/component/SleepScoreWidget.dart
+++ b/lib/pages/sleep_report/component/SleepScoreWidget.dart
@@ -123,7 +123,7 @@ class _SleepScoreWidgetState extends State {
// SegmentData(color: Colors.orange, value: 10),
// ],
segments: segments,
- strokeWidth: 6.rpx,
+ strokeWidth: 12.rpx,
gapAngle: 8,
centerWidget: Container(
child: Column(
diff --git a/lib/pages/sleep_report/component/WeekDataWidget.dart b/lib/pages/sleep_report/component/WeekDataWidget.dart
index 88b624e..c29a015 100644
--- a/lib/pages/sleep_report/component/WeekDataWidget.dart
+++ b/lib/pages/sleep_report/component/WeekDataWidget.dart
@@ -96,7 +96,7 @@ Widget WeekDataWidget(
buildWeekDatesAndPoints(sleepReport['scoreList'])['colors'],
tips: buildValueTexts(sleepReport['scoreList']['data'], '分', 1),
xUnit: sleepReport['scoreList']['yUnit'],
- barWidth: 0.1,
+ barWidth: 0.2,
),
showLabel: sleepReport['scoreList']['type'],
),
@@ -193,7 +193,7 @@ Widget WeekDataWidget(
offset,
textAlign: TextAlign.center,
style: TextStyle(
- color: Color(0xFFFFFFFF).withOpacity(0.06),
+ color: Color(0xFFFFFFFF).withOpacity(0.6),
fontSize: 18.rpx),
);
},
@@ -206,7 +206,7 @@ Widget WeekDataWidget(
displayMode: ChartDisplayMode.dualBar,
xUnit: sleepReport['csd']['yUnit'],
tips: buildSleepValueTexts(sleepReport['csd']['data'], '小时', 1),
- barWidth: 0.1,
+ barWidth: 0.2,
),
showLabel: sleepReport['csd']['type'],
),
diff --git a/lib/pages/sleep_report/component/WeekSleepScoreWidget.dart b/lib/pages/sleep_report/component/WeekSleepScoreWidget.dart
index 41060b4..163c5d9 100644
--- a/lib/pages/sleep_report/component/WeekSleepScoreWidget.dart
+++ b/lib/pages/sleep_report/component/WeekSleepScoreWidget.dart
@@ -103,7 +103,7 @@ class AvgSleepScoreWidget extends StatelessWidget {
height: 256.rpx,
child: SegmentedCircleWithCenterWidget(
segments: segments,
- strokeWidth: 6.rpx,
+ strokeWidth: 12.rpx,
gapAngle: 0,
centerWidget: Column(
mainAxisAlignment: MainAxisAlignment.center,
@@ -136,7 +136,7 @@ class AvgSleepScoreWidget extends StatelessWidget {
runSpacing: 20.rpx,
children: showLabel.map((item) {
return Container(
- padding: EdgeInsets.all(5),
+ padding: EdgeInsets.all(5.rpx),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
diff --git a/lib/pages/sleep_report/new_sleep_report_page.dart b/lib/pages/sleep_report/new_sleep_report_page.dart
index 22b1d65..b9ef331 100644
--- a/lib/pages/sleep_report/new_sleep_report_page.dart
+++ b/lib/pages/sleep_report/new_sleep_report_page.dart
@@ -1032,7 +1032,7 @@ class _NewSleepReportPageState extends State {
),
),
Padding(
- padding: EdgeInsets.symmetric(horizontal: 26.rpx),
+ padding: EdgeInsets.symmetric(horizontal: 20.rpx),
child: Text(
displayText,
style: TextStyle(
@@ -1079,46 +1079,91 @@ class _NewSleepReportPageState extends State {
padding: EdgeInsets.zero,
borderRadius: 8,
onTap: () {
- showSleepCalendarBottomSheet(
- type: sleepReportController.model.type,
- timestamp: selectedDate.millisecondsSinceEpoch,
- context: context,
- mac: widget.data['mac'],
- onDateSelected: (newDate) {
- sleepReportController.selectedDate.value = newDate;
- calendarController.selectedDate.value = newDate;
- String data = MyUtils.formatDate(
- calendarController.selectedDate.value!);
- requestWithLog(
- logTitle: "查询睡眠报告",
- method: MyHttpMethod.get,
- queryUrl:
- "https://sleepdata.he-info.com/api/analysis/sleep/analysis?mac=${widget.data['mac']}&time=${data}&type=${sleepReportController.model.type}",
- onSuccess: (res) {
- print(res);
- sleepReportController.sleepReport.value = res.data;
+ sleepReportController.model.type == 3
+ ? showMonthSelectionDialog(context, checkDate: selectedDate,
+ checkChange: (DateTime d) {
+ sleepReportController.selectedDate.value = d;
+ calendarController.selectedDate.value = d;
+
+ String data = MyUtils.formatDate(
+ calendarController.selectedDate.value!);
+ requestWithLog(
+ logTitle: "查询睡眠报告",
+ method: MyHttpMethod.get,
+ queryUrl:
+ "https://sleepdata.he-info.com/api/analysis/sleep/analysis?mac=${widget.data['mac']}&time=${data}&type=${sleepReportController.model.type}",
+ onSuccess: (res) {
+ print(res);
+ sleepReportController.sleepReport.value = res.data;
+ sleepReportController.updateAll();
+ },
+ onFailure: (res) {
+ 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);
+ });
+ sleepReportController.updateAll();
+ calendarController.updateAll();
+ })
+ : showSleepCalendarBottomSheet(
+ type: sleepReportController.model.type,
+ timestamp: selectedDate.millisecondsSinceEpoch,
+ context: context,
+ mac: widget.data['mac'],
+ onDateSelected: (newDate) {
+ sleepReportController.selectedDate.value = newDate;
+ calendarController.selectedDate.value = newDate;
+ String data = MyUtils.formatDate(
+ calendarController.selectedDate.value!);
+ requestWithLog(
+ logTitle: "查询睡眠报告",
+ method: MyHttpMethod.get,
+ queryUrl:
+ "https://sleepdata.he-info.com/api/analysis/sleep/analysis?mac=${widget.data['mac']}&time=${data}&type=${sleepReportController.model.type}",
+ onSuccess: (res) {
+ print(res);
+ sleepReportController.sleepReport.value =
+ res.data;
+ sleepReportController.updateAll();
+ },
+ onFailure: (res) {
+ 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);
+ });
sleepReportController.updateAll();
+ calendarController.updateAll();
},
- onFailure: (res) {
- 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);
- });
- sleepReportController.updateAll();
- calendarController.updateAll();
- },
- );
+ );
},
child: Padding(
padding: EdgeInsets.all(10.rpx),