更新设备列表请求睡眠报告混乱
This commit is contained in:
@@ -127,14 +127,18 @@ class MessageController extends GetControllerEx<MessageModel> {
|
|||||||
(e) => e['type'] == 'app_vsm',
|
(e) => e['type'] == 'app_vsm',
|
||||||
orElse: () => null,
|
orElse: () => null,
|
||||||
);
|
);
|
||||||
model.body_message_read = vsmItem?['count'] ?? 0;
|
model.body_message_read =
|
||||||
|
(vsmItem?['count'] == null || vsmItem?['count'] == 0) ? 0 : 1;
|
||||||
|
|
||||||
// 查找 type 为 app_system 的项
|
// 查找 type 为 app_system 的项
|
||||||
var systemItem = dataList.firstWhere(
|
var systemItem = dataList.firstWhere(
|
||||||
(e) => e['type'] == 'app_system',
|
(e) => e['type'] == 'app_system',
|
||||||
orElse: () => null,
|
orElse: () => null,
|
||||||
);
|
);
|
||||||
model.system_message_read = systemItem?['count'] ?? 0;
|
model.system_message_read =
|
||||||
|
(systemItem?['count'] == null || systemItem?['count'] == 0)
|
||||||
|
? 0
|
||||||
|
: 1;
|
||||||
|
|
||||||
updateAll();
|
updateAll();
|
||||||
return res;
|
return res;
|
||||||
|
|||||||
@@ -72,79 +72,6 @@ class _MhtSleepReportReturnPageState extends State<MhtSleepReportReturnPage> {
|
|||||||
),
|
),
|
||||||
child: ValueListenableBuilder(
|
child: ValueListenableBuilder(
|
||||||
valueListenable: formFieldController,
|
valueListenable: formFieldController,
|
||||||
// builder: (context, val, _) {
|
|
||||||
// return ClipRRect(
|
|
||||||
// borderRadius: BorderRadius.circular(36.rpx),
|
|
||||||
// child: Theme(
|
|
||||||
// data: Theme.of(context).copyWith(
|
|
||||||
// splashColor: Colors.transparent,
|
|
||||||
// highlightColor: Colors.transparent,
|
|
||||||
// hoverColor: Colors.transparent,
|
|
||||||
// ),
|
|
||||||
// child: FlutterFlowDropDown<String>(
|
|
||||||
// controller: formFieldController,
|
|
||||||
// options: deviceController.personnelList.value
|
|
||||||
// .map<String>((d) => "${d["mac"]}")
|
|
||||||
// .toList(),
|
|
||||||
// optionLabels: deviceController
|
|
||||||
// .personnelList.value
|
|
||||||
// .map<String>((d) => d["name"] ?? d["mac"])
|
|
||||||
// .toList(),
|
|
||||||
// onChanged: (val) {
|
|
||||||
// WidgetsBinding.instance
|
|
||||||
// .addPostFrameCallback((_) {
|
|
||||||
// final list =
|
|
||||||
// deviceController.personnelList.value;
|
|
||||||
// final selectedPerson = list.firstWhere(
|
|
||||||
// (element) => element['mac'] == val,
|
|
||||||
// orElse: () => null,
|
|
||||||
// );
|
|
||||||
// homeController.selectPerson.value =
|
|
||||||
// selectedPerson;
|
|
||||||
// personInfo.value = selectedPerson;
|
|
||||||
|
|
||||||
// homeController.selectedDayIndex =
|
|
||||||
// 6.obs; // 默认选第7天
|
|
||||||
|
|
||||||
// if (val == null) {
|
|
||||||
// homeController.sleepDays.value = [];
|
|
||||||
// } else {
|
|
||||||
// homeController.selectDevcie.value = val;
|
|
||||||
// deviceController.getSleeps(val);
|
|
||||||
// homeController.updateAll();
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// },
|
|
||||||
// width: 300.rpx,
|
|
||||||
// height: 81.rpx,
|
|
||||||
// maxHeight: 300.rpx,
|
|
||||||
// textStyle: TextStyle(
|
|
||||||
// fontSize: 28.rpx,
|
|
||||||
// overflow: TextOverflow.ellipsis,
|
|
||||||
// color: Colors.white,
|
|
||||||
// ),
|
|
||||||
// hintText: '',
|
|
||||||
// icon: Icon(
|
|
||||||
// Icons.keyboard_arrow_down_rounded,
|
|
||||||
// color: stringToColor("#FFFFFF"),
|
|
||||||
// size: 30.rpx,
|
|
||||||
// ),
|
|
||||||
// fillColor: stringToColor("#011D33"),
|
|
||||||
// elevation: 2,
|
|
||||||
// borderColor: Colors.transparent,
|
|
||||||
// borderWidth: 2,
|
|
||||||
// borderRadius: 0.rpx,
|
|
||||||
// margin: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
// 32.rpx, 8.rpx, 32.rpx, 8.rpx),
|
|
||||||
// hidesUnderline: true,
|
|
||||||
// isOverButton: false,
|
|
||||||
// isSearchable: false,
|
|
||||||
// isMultiSelect: false,
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// );
|
|
||||||
// },
|
|
||||||
|
|
||||||
builder: (context, val, _) {
|
builder: (context, val, _) {
|
||||||
// 只保留符合 bind_mac_a/b 的人员
|
// 只保留符合 bind_mac_a/b 的人员
|
||||||
final macA = widget.data['bind_mac_a'];
|
final macA = widget.data['bind_mac_a'];
|
||||||
@@ -271,9 +198,38 @@ class _MhtSleepReportReturnPageState extends State<MhtSleepReportReturnPage> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
// body: SafeArea(
|
||||||
|
// child: Obx(() {
|
||||||
|
// final device = homeController.selectDevcie.value;
|
||||||
|
// if (device != null && device.isNotEmpty) {
|
||||||
|
// return Column(
|
||||||
|
// children: [
|
||||||
|
// Expanded(
|
||||||
|
// child: NewSleepReportPage(
|
||||||
|
// data: {
|
||||||
|
// "tag": "444",
|
||||||
|
// 'date': DateTime.now().millisecondsSinceEpoch,
|
||||||
|
// 'mac': device,
|
||||||
|
// 'person': homeController.selectPerson.value,
|
||||||
|
// 'backgroundImg': 'assets/images/new_background.png',
|
||||||
|
// 'arrow': false,
|
||||||
|
// 'noBackImg': true,
|
||||||
|
// 'person_show': false,
|
||||||
|
// },
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// return Center(
|
||||||
|
// child: Text('暂无数据', style: TextStyle(color: Colors.white)));
|
||||||
|
// }),
|
||||||
|
// ),
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
child: Obx(() {
|
child: Builder(
|
||||||
final device = homeController.selectDevcie.value;
|
builder: (context) {
|
||||||
|
// final device = homeController.selectDevcie.value; // 直接获取值
|
||||||
|
final device = widget.data; // 直接获取值
|
||||||
if (device != null && device.isNotEmpty) {
|
if (device != null && device.isNotEmpty) {
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
@@ -282,7 +238,7 @@ class _MhtSleepReportReturnPageState extends State<MhtSleepReportReturnPage> {
|
|||||||
data: {
|
data: {
|
||||||
"tag": "444",
|
"tag": "444",
|
||||||
'date': DateTime.now().millisecondsSinceEpoch,
|
'date': DateTime.now().millisecondsSinceEpoch,
|
||||||
'mac': device,
|
'mac': device['bind_mac_a'],
|
||||||
'person': homeController.selectPerson.value,
|
'person': homeController.selectPerson.value,
|
||||||
'backgroundImg': 'assets/images/new_background.png',
|
'backgroundImg': 'assets/images/new_background.png',
|
||||||
'arrow': false,
|
'arrow': false,
|
||||||
@@ -295,8 +251,10 @@ class _MhtSleepReportReturnPageState extends State<MhtSleepReportReturnPage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
return Center(
|
return Center(
|
||||||
child: Text('暂无数据', style: TextStyle(color: Colors.white)));
|
child: Text('暂无数据', style: TextStyle(color: Colors.white)),
|
||||||
}),
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,897 +0,0 @@
|
|||||||
import 'package:ef/ef.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_svg/svg.dart';
|
|
||||||
import 'package:flutterflow_ui/flutterflow_ui.dart';
|
|
||||||
import 'package:vbvs_app/common/color/appConstants.dart';
|
|
||||||
import 'package:vbvs_app/common/util/FitTool.dart';
|
|
||||||
import 'package:vbvs_app/common/util/MyUtils.dart';
|
|
||||||
import 'package:vbvs_app/common/util/requestWithLog.dart';
|
|
||||||
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
|
|
||||||
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
|
|
||||||
import 'package:vbvs_app/controller/date/CalendarController.dart';
|
|
||||||
import 'package:vbvs_app/controller/sleep/sleep_report_controller.dart';
|
|
||||||
import 'package:vbvs_app/language/AppLanguage.dart';
|
|
||||||
import 'package:vbvs_app/pages/common/selectDialog.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/BreathePauseNewWidget.dart';
|
|
||||||
import 'package:vbvs_app/pages/sleep_report/component/BreatheStandardWidget.dart';
|
|
||||||
import 'package:vbvs_app/pages/sleep_report/component/CompareSleepWidget.dart';
|
|
||||||
import 'package:vbvs_app/pages/sleep_report/component/DiseasePercentsWidget.dart';
|
|
||||||
import 'package:vbvs_app/pages/sleep_report/component/HeartChangeWidget.dart';
|
|
||||||
import 'package:vbvs_app/pages/sleep_report/component/HeartHealthWidget.dart';
|
|
||||||
import 'package:vbvs_app/pages/sleep_report/component/HeartPointWidget.dart';
|
|
||||||
import 'package:vbvs_app/pages/sleep_report/component/HeartRateCard.dart';
|
|
||||||
import 'package:vbvs_app/pages/sleep_report/component/HeartRateStandardWidget.dart';
|
|
||||||
import 'package:vbvs_app/pages/sleep_report/component/SkinPercentWidget.dart';
|
|
||||||
import 'package:vbvs_app/pages/sleep_report/component/SleepCard.dart';
|
|
||||||
import 'package:vbvs_app/pages/sleep_report/component/SleepScoreWidget.dart';
|
|
||||||
import 'package:vbvs_app/pages/sleep_report/component/SleepView.dart';
|
|
||||||
import 'package:vbvs_app/pages/sleep_report/component/SnoreViewWidget.dart';
|
|
||||||
import 'package:vbvs_app/pages/sleep_report/component/ZiZhuShenJingPercentWidget.dart';
|
|
||||||
|
|
||||||
class NewSleepReportPage extends StatefulWidget {
|
|
||||||
var data;
|
|
||||||
NewSleepReportPage({super.key, required this.data});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<NewSleepReportPage> createState() => _NewSleepReportPageState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _NewSleepReportPageState extends State<NewSleepReportPage> {
|
|
||||||
SleepReportController sleepReportController = Get.find();
|
|
||||||
CalendarController calendarController = Get.find();
|
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
if (widget.data['date'] == null) {
|
|
||||||
widget.data['date'] = DateTime.now();
|
|
||||||
}
|
|
||||||
calendarController.selectedDate.value =
|
|
||||||
DateTime.fromMillisecondsSinceEpoch(widget.data['date']);
|
|
||||||
sleepReportController.selectedDate.value =
|
|
||||||
DateTime.fromMillisecondsSinceEpoch(widget.data['date']);
|
|
||||||
if (widget.data['type'] != null) {
|
|
||||||
sleepReportController.model.type = widget.data['type'];
|
|
||||||
} else {
|
|
||||||
sleepReportController.model.type = 1;
|
|
||||||
}
|
|
||||||
String date = MyUtils.formatToDate(widget.data['date']);
|
|
||||||
// String date = '2025-5-27';
|
|
||||||
requestWithLog(
|
|
||||||
logTitle: "查询睡眠报告",
|
|
||||||
method: MyHttpMethod.get,
|
|
||||||
queryUrl:
|
|
||||||
"https://sleepdata.he-info.com/api/analysis/sleep/analysis?mac=${widget.data['mac']}&time=${date}&type=${sleepReportController.model.type}",
|
|
||||||
onSuccess: (res) {
|
|
||||||
print(res);
|
|
||||||
sleepReportController.sleepReport.value = res.data;
|
|
||||||
sleepReportController.updateAll();
|
|
||||||
},
|
|
||||||
onFailure: (res) {
|
|
||||||
TopSlideNotification.show(context,
|
|
||||||
text: res.msg!, textColor: themeController.currentColor.sc9);
|
|
||||||
sleepReportController.sleepReport.value = {};
|
|
||||||
sleepReportController.updateAll();
|
|
||||||
print(res);
|
|
||||||
});
|
|
||||||
super.initState();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void dispose() {
|
|
||||||
super.dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
double lineWidth = 115.rpx;
|
|
||||||
return LayoutBuilder(
|
|
||||||
builder: (context, bodySize) => GestureDetector(
|
|
||||||
// onTap: () => FocusScope.of(context).unfocus(),,
|
|
||||||
child: Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage('assets/img/bgNoImg.png'), // 本地图片
|
|
||||||
fit: BoxFit.fill, // 填满整个 Container
|
|
||||||
),
|
|
||||||
),
|
|
||||||
child: Scaffold(
|
|
||||||
backgroundColor: Colors.transparent, // 背景透明
|
|
||||||
appBar: AppBar(
|
|
||||||
backgroundColor: themeController.currentColor.sc17,
|
|
||||||
automaticallyImplyLeading: false,
|
|
||||||
iconTheme: IconThemeData(color: themeController.currentColor.sc3),
|
|
||||||
titleSpacing: 0,
|
|
||||||
title: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
height: 180.rpx,
|
|
||||||
child: Stack(
|
|
||||||
alignment: Alignment.center,
|
|
||||||
children: [
|
|
||||||
/// 居中标题
|
|
||||||
Text(
|
|
||||||
'健康报告'.tr,
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: 'Readex Pro',
|
|
||||||
color: themeController.currentColor.sc3,
|
|
||||||
letterSpacing: 0,
|
|
||||||
fontSize: 30.rpx,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
|
|
||||||
/// 左边返回按钮
|
|
||||||
Positioned(
|
|
||||||
left: 0,
|
|
||||||
child: returnIconButtomNew(),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
body: SafeArea(
|
|
||||||
top: true,
|
|
||||||
child: SingleChildScrollView(
|
|
||||||
child: Obx(() {
|
|
||||||
var sleepReport = sleepReportController.sleepReport;
|
|
||||||
print(sleepReport);
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsetsDirectional.fromSTEB(0, 30.rpx, 0, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
constraints: BoxConstraints(
|
|
||||||
minHeight: 90.rpx,
|
|
||||||
),
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: themeController.currentColor.sc5),
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 15.rpx, 30.rpx, 15.rpx),
|
|
||||||
child: Row(
|
|
||||||
mainAxisSize: MainAxisSize.max,
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
Stack(
|
|
||||||
alignment: Alignment.bottomLeft,
|
|
||||||
children: [
|
|
||||||
Row(
|
|
||||||
mainAxisSize: MainAxisSize.max,
|
|
||||||
children: [
|
|
||||||
ClickableContainer(
|
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
highlightColor:
|
|
||||||
themeController.currentColor.sc3,
|
|
||||||
borderRadius: 8.rpx,
|
|
||||||
padding: EdgeInsets.all(0),
|
|
||||||
onTap: () async {
|
|
||||||
sleepReportController.model.type =
|
|
||||||
1;
|
|
||||||
sleepReportController.updateAll();
|
|
||||||
},
|
|
||||||
child: Column(
|
|
||||||
mainAxisSize: MainAxisSize.max,
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
width: 115.rpx, // 固定宽度为 160.rpx
|
|
||||||
alignment:
|
|
||||||
Alignment.center, // 文字居中
|
|
||||||
child: Text(
|
|
||||||
'日报'.tr,
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: 'Inter',
|
|
||||||
fontSize: AppConstants()
|
|
||||||
.title_text_fontSize,
|
|
||||||
letterSpacing: 0.0,
|
|
||||||
color: sleepReportController
|
|
||||||
.model.type ==
|
|
||||||
1
|
|
||||||
? themeController
|
|
||||||
.currentColor.sc2
|
|
||||||
: themeController
|
|
||||||
.currentColor.sc3,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
SizedBox(height: 10.rpx),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Obx(() {
|
|
||||||
return ClickableContainer(
|
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
highlightColor: themeController
|
|
||||||
.currentColor.sc3,
|
|
||||||
borderRadius: 8.rpx,
|
|
||||||
padding: EdgeInsets.all(0),
|
|
||||||
onTap: () async {
|
|
||||||
sleepReportController.model.type =
|
|
||||||
2;
|
|
||||||
sleepReportController.updateAll();
|
|
||||||
},
|
|
||||||
child: Column(
|
|
||||||
mainAxisSize: MainAxisSize.max,
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
width:
|
|
||||||
115.rpx, // 固定宽度为 160.rpx
|
|
||||||
alignment:
|
|
||||||
Alignment.center, // 文字居中
|
|
||||||
child: Text('周报'.tr,
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: 'Inter',
|
|
||||||
fontSize: AppConstants()
|
|
||||||
.title_text_fontSize,
|
|
||||||
letterSpacing: 0.0,
|
|
||||||
color:
|
|
||||||
sleepReportController
|
|
||||||
.model
|
|
||||||
.type ==
|
|
||||||
2
|
|
||||||
? themeController
|
|
||||||
.currentColor
|
|
||||||
.sc2
|
|
||||||
: themeController
|
|
||||||
.currentColor
|
|
||||||
.sc3,
|
|
||||||
)),
|
|
||||||
),
|
|
||||||
SizedBox(height: 10.rpx),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
Obx(() {
|
|
||||||
return ClickableContainer(
|
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
highlightColor: themeController
|
|
||||||
.currentColor.sc3,
|
|
||||||
borderRadius: 8.rpx,
|
|
||||||
padding: EdgeInsets.all(0),
|
|
||||||
onTap: () async {
|
|
||||||
sleepReportController.model.type =
|
|
||||||
3;
|
|
||||||
sleepReportController.updateAll();
|
|
||||||
},
|
|
||||||
child: Column(
|
|
||||||
mainAxisSize: MainAxisSize.max,
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
width:
|
|
||||||
115.rpx, // 固定宽度为 160.rpx
|
|
||||||
alignment:
|
|
||||||
Alignment.center, // 文字居中
|
|
||||||
child: Text('月报'.tr,
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: 'Inter',
|
|
||||||
fontSize: AppConstants()
|
|
||||||
.title_text_fontSize,
|
|
||||||
letterSpacing: 0.0,
|
|
||||||
color:
|
|
||||||
sleepReportController
|
|
||||||
.model
|
|
||||||
.type ==
|
|
||||||
3
|
|
||||||
? themeController
|
|
||||||
.currentColor
|
|
||||||
.sc2
|
|
||||||
: themeController
|
|
||||||
.currentColor
|
|
||||||
.sc3,
|
|
||||||
)),
|
|
||||||
),
|
|
||||||
SizedBox(height: 10.rpx),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
AnimatedPositioned(
|
|
||||||
duration: Duration(milliseconds: 300),
|
|
||||||
curve: Curves.easeInOut,
|
|
||||||
bottom: 0,
|
|
||||||
left: sleepReportController.model.type ==
|
|
||||||
1
|
|
||||||
? 0
|
|
||||||
: sleepReportController.model.type ==
|
|
||||||
2
|
|
||||||
? 115.rpx
|
|
||||||
: 230.rpx,
|
|
||||||
child: Container(
|
|
||||||
width: lineWidth,
|
|
||||||
height: 4.rpx,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color:
|
|
||||||
themeController.currentColor.sc2,
|
|
||||||
borderRadius:
|
|
||||||
BorderRadius.circular(2.rpx),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
// Padding(
|
|
||||||
// padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
// 0, 0.rpx, 0.rpx, 0),
|
|
||||||
// child: Container(
|
|
||||||
// width: 28.rpx,
|
|
||||||
// height: 28.rpx,
|
|
||||||
// // width: double.infinity,
|
|
||||||
// decoration: BoxDecoration(),
|
|
||||||
// child: SvgPicture.asset(
|
|
||||||
// 'assets/img/icon/share.svg',
|
|
||||||
// fit: BoxFit.cover,
|
|
||||||
// color: themeController.currentColor.sc3,
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 32.rpx, 30.rpx, 32.rpx),
|
|
||||||
child: getTimeWidget(),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 58.rpx),
|
|
||||||
child: ClickableContainer(
|
|
||||||
backgroundColor: themeController.currentColor.sc5,
|
|
||||||
highlightColor:
|
|
||||||
themeController.currentColor.sc5, // 或你希望的点击水波纹颜色
|
|
||||||
borderRadius: AppConstants()
|
|
||||||
.normal_container_radius, // 如果你想加圆角可以设置 eg. 12.rpx
|
|
||||||
padding: EdgeInsets.zero,
|
|
||||||
onTap: () {},
|
|
||||||
child: Row(
|
|
||||||
mainAxisSize: MainAxisSize.max,
|
|
||||||
children: [
|
|
||||||
Expanded(
|
|
||||||
flex: 1,
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment:
|
|
||||||
CrossAxisAlignment.end,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'姓名'.tr,
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: 'Inter',
|
|
||||||
fontSize: 26.rpx,
|
|
||||||
letterSpacing: 0.0,
|
|
||||||
color: themeController
|
|
||||||
.currentColor.sc4,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'年龄'.tr,
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: 'Inter',
|
|
||||||
fontSize: 26.rpx,
|
|
||||||
letterSpacing: 0.0,
|
|
||||||
color: themeController
|
|
||||||
.currentColor.sc4,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
].divide(SizedBox(height: 34.rpx)),
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment:
|
|
||||||
CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'传感器1号',
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: 'Inter',
|
|
||||||
fontSize: 26.rpx,
|
|
||||||
letterSpacing: 0.0,
|
|
||||||
color: themeController
|
|
||||||
.currentColor.sc3,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'69',
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: 'Inter',
|
|
||||||
fontSize: 26.rpx,
|
|
||||||
letterSpacing: 0.0,
|
|
||||||
color: themeController
|
|
||||||
.currentColor.sc3,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
].divide(SizedBox(height: 34.rpx)),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
.divide(SizedBox(width: 33.rpx))
|
|
||||||
.addToStart(SizedBox(width: 37.rpx)),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
.addToStart(SizedBox(height: 36.rpx))
|
|
||||||
.addToEnd(SizedBox(height: 36.rpx)),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
flex: 1,
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment:
|
|
||||||
CrossAxisAlignment.end,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'设备ID'.tr,
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: 'Inter',
|
|
||||||
fontSize: 26.rpx,
|
|
||||||
letterSpacing: 0.0,
|
|
||||||
color: themeController
|
|
||||||
.currentColor.sc4,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'体重'.tr,
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: 'Inter',
|
|
||||||
fontSize: 26.rpx,
|
|
||||||
letterSpacing: 0.0,
|
|
||||||
color: themeController
|
|
||||||
.currentColor.sc4,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
].divide(SizedBox(height: 34.rpx)),
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment:
|
|
||||||
CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'1231212',
|
|
||||||
// "D11250300003",
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: 'Inter',
|
|
||||||
fontSize: 26.rpx,
|
|
||||||
letterSpacing: 0.0,
|
|
||||||
color: themeController
|
|
||||||
.currentColor.sc3,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'55kg',
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: 'Inter',
|
|
||||||
fontSize: 26.rpx,
|
|
||||||
letterSpacing: 0.0,
|
|
||||||
color: themeController
|
|
||||||
.currentColor.sc3,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
].divide(SizedBox(height: 34.rpx)),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
.divide(SizedBox(width: 33.rpx))
|
|
||||||
.addToStart(SizedBox(width: 37.rpx)),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
.addToStart(SizedBox(height: 36.rpx))
|
|
||||||
.addToEnd(SizedBox(height: 36.rpx)),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child:
|
|
||||||
SleepScoreWidget(sleepReport: sleepReport.value),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child: SleepViewWidget(
|
|
||||||
sleepReport: sleepReport,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child: SleepCard(
|
|
||||||
sleepReport: sleepReport,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child: CompareSleepWidget(sleepReport: sleepReport),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child: HeartPointWidget(
|
|
||||||
sleepReport: sleepReport,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child: AIAdviceWidget(sleepReport: sleepReport),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child:
|
|
||||||
HeartRateStandardWidget(sleepReport: sleepReport),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child: HeartRateCard(sleepReport: sleepReport),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child: HeartChangeWidget(sleepReport: sleepReport),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child:
|
|
||||||
BreatheStandardWidget(sleepReport: sleepReport),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child: BreatheCard(sleepReport: sleepReport),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child:
|
|
||||||
SnoreViewWidgetWidget(sleepReport: sleepReport),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child:
|
|
||||||
BreathePauseNewWidget(sleepReport: sleepReport),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child: HeartHealthWidget(sleepReport: sleepReport),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child:
|
|
||||||
DiseasePercentsWidget(sleepReport: sleepReport),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child: SkinPercentWidget(sleepReport: sleepReport),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
|
||||||
30.rpx, 0.rpx, 30.rpx, 0),
|
|
||||||
child: Container(
|
|
||||||
width: double.infinity,
|
|
||||||
child: ZiZhuShenJingPercentWidget(
|
|
||||||
sleepReport: sleepReport),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
].divide(SizedBox(
|
|
||||||
height: 25.rpx,
|
|
||||||
)),
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget getTimeWidget() {
|
|
||||||
final selectedDate = sleepReportController.selectedDate.value!;
|
|
||||||
final type = sleepReportController.model.type;
|
|
||||||
bool isChinese = AppLanguage().isChinese();
|
|
||||||
String displayText = '';
|
|
||||||
if (isChinese) {
|
|
||||||
if (type == 1) {
|
|
||||||
// 日报
|
|
||||||
displayText =
|
|
||||||
MyUtils.getFormatChineseTime(selectedDate.millisecondsSinceEpoch);
|
|
||||||
} else if (type == 2) {
|
|
||||||
// 周报
|
|
||||||
final startOfWeek =
|
|
||||||
selectedDate.subtract(Duration(days: selectedDate.weekday - 1));
|
|
||||||
final endOfWeek = startOfWeek.add(const Duration(days: 6));
|
|
||||||
displayText =
|
|
||||||
'${MyUtils.getFormatChineseTime(startOfWeek.millisecondsSinceEpoch, showWeekday: false)}-${MyUtils.getFormatChineseTime(endOfWeek.millisecondsSinceEpoch, showWeekday: false)}';
|
|
||||||
} else if (type == 3) {
|
|
||||||
// 月报
|
|
||||||
displayText =
|
|
||||||
'${selectedDate.year}年${selectedDate.month.toString().padLeft(2, '0')}月';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (type == 1) {
|
|
||||||
// Daily Report
|
|
||||||
displayText =
|
|
||||||
MyUtils.getFormatEnglishDate(selectedDate.millisecondsSinceEpoch);
|
|
||||||
} else if (type == 2) {
|
|
||||||
// Weekly Report
|
|
||||||
final startOfWeek =
|
|
||||||
selectedDate.subtract(Duration(days: selectedDate.weekday - 1));
|
|
||||||
final endOfWeek = startOfWeek.add(const Duration(days: 6));
|
|
||||||
displayText =
|
|
||||||
'${MyUtils.getFormatEnglishDate(startOfWeek.millisecondsSinceEpoch)} - ${MyUtils.getFormatEnglishDate(endOfWeek.millisecondsSinceEpoch)}';
|
|
||||||
} else if (type == 3) {
|
|
||||||
// Monthly Report
|
|
||||||
displayText =
|
|
||||||
'${_getEnglishMonthName(selectedDate.month)} ${selectedDate.year}';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void onLeftArrowTap() {
|
|
||||||
if (type == 1) {
|
|
||||||
sleepReportController.selectedDate.value =
|
|
||||||
selectedDate.subtract(const Duration(days: 1));
|
|
||||||
} else if (type == 2) {
|
|
||||||
sleepReportController.selectedDate.value =
|
|
||||||
selectedDate.subtract(const Duration(days: 7));
|
|
||||||
} else if (type == 3) {
|
|
||||||
sleepReportController.selectedDate.value = DateTime(
|
|
||||||
selectedDate.year,
|
|
||||||
selectedDate.month - 1,
|
|
||||||
selectedDate.day,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
calendarController.selectedDate.value =
|
|
||||||
sleepReportController.selectedDate.value;
|
|
||||||
// String date = MyUtils.formatToDate(widget.data['date']);
|
|
||||||
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) {
|
|
||||||
TopSlideNotification.show(context,
|
|
||||||
text: res.msg!, textColor: themeController.currentColor.sc9);
|
|
||||||
sleepReportController.sleepReport.value = {};
|
|
||||||
sleepReportController.updateAll();
|
|
||||||
print(res);
|
|
||||||
});
|
|
||||||
|
|
||||||
sleepReportController.updateAll();
|
|
||||||
calendarController.updateAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
void onRightArrowTap() {
|
|
||||||
if (type == 1) {
|
|
||||||
sleepReportController.selectedDate.value =
|
|
||||||
selectedDate.add(const Duration(days: 1));
|
|
||||||
} else if (type == 2) {
|
|
||||||
sleepReportController.selectedDate.value =
|
|
||||||
selectedDate.add(const Duration(days: 7));
|
|
||||||
} else if (type == 3) {
|
|
||||||
sleepReportController.selectedDate.value = DateTime(
|
|
||||||
selectedDate.year,
|
|
||||||
selectedDate.month + 1,
|
|
||||||
selectedDate.day,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
calendarController.selectedDate.value =
|
|
||||||
sleepReportController.selectedDate.value;
|
|
||||||
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) {
|
|
||||||
TopSlideNotification.show(context,
|
|
||||||
text: res.msg!, textColor: themeController.currentColor.sc9);
|
|
||||||
sleepReportController.sleepReport.value = {};
|
|
||||||
sleepReportController.updateAll();
|
|
||||||
print(res);
|
|
||||||
});
|
|
||||||
sleepReportController.updateAll();
|
|
||||||
calendarController.updateAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
return Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
SizedBox(width: 28.rpx, height: 28.rpx), // 占位
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
ClickableContainer(
|
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
highlightColor: themeController.currentColor.sc3,
|
|
||||||
padding: EdgeInsets.all(10.rpx),
|
|
||||||
borderRadius: 8.rpx,
|
|
||||||
onTap: onLeftArrowTap,
|
|
||||||
child: SizedBox(
|
|
||||||
width: 9.rpx,
|
|
||||||
height: 14.rpx,
|
|
||||||
child: SvgPicture.asset(
|
|
||||||
'assets/img/icon/arrow_left.svg',
|
|
||||||
color: themeController.currentColor.sc3,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 26.rpx),
|
|
||||||
child: Text(
|
|
||||||
displayText,
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: AppConstants().normal_text_fontSize,
|
|
||||||
color: themeController.currentColor.sc3,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
ClickableContainer(
|
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
highlightColor: themeController.currentColor.sc3,
|
|
||||||
padding: EdgeInsets.all(10.rpx),
|
|
||||||
borderRadius: 8.rpx,
|
|
||||||
onTap: onRightArrowTap,
|
|
||||||
child: SizedBox(
|
|
||||||
width: 9.rpx,
|
|
||||||
height: 14.rpx,
|
|
||||||
child: SvgPicture.asset(
|
|
||||||
'assets/img/icon/arrow_right.svg',
|
|
||||||
color: themeController.currentColor.sc3,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
ClickableContainer(
|
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
highlightColor: themeController.currentColor.sc3,
|
|
||||||
padding: EdgeInsets.zero,
|
|
||||||
borderRadius: 8,
|
|
||||||
onTap: () {
|
|
||||||
showSleepCalendarBottomSheet(
|
|
||||||
type: sleepReportController.model.type,
|
|
||||||
timestamp: selectedDate.millisecondsSinceEpoch,
|
|
||||||
context: context,
|
|
||||||
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) {
|
|
||||||
TopSlideNotification.show(context,
|
|
||||||
text: res.msg!,
|
|
||||||
textColor: themeController.currentColor.sc9);
|
|
||||||
sleepReportController.sleepReport.value = {};
|
|
||||||
sleepReportController.updateAll();
|
|
||||||
print(res);
|
|
||||||
});
|
|
||||||
sleepReportController.updateAll();
|
|
||||||
calendarController.updateAll();
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
child: SizedBox(
|
|
||||||
width: 28.rpx,
|
|
||||||
height: 28.rpx,
|
|
||||||
child: SvgPicture.asset(
|
|
||||||
'assets/img/icon/calendar.svg',
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
color: themeController.currentColor.sc3,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
static String _getEnglishMonthName(int month) {
|
|
||||||
const monthNames = [
|
|
||||||
'January',
|
|
||||||
'February',
|
|
||||||
'March',
|
|
||||||
'April',
|
|
||||||
'May',
|
|
||||||
'June',
|
|
||||||
'July',
|
|
||||||
'August',
|
|
||||||
'September',
|
|
||||||
'October',
|
|
||||||
'November',
|
|
||||||
'December'
|
|
||||||
];
|
|
||||||
return monthNames[month - 1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user