This commit is contained in:
wyf
2025-11-14 12:01:07 +08:00
parent 776275aa3d
commit 7e44998240
24 changed files with 409 additions and 187 deletions

View File

@@ -9,7 +9,9 @@ import 'package:vbvs_app/component/home_page/SleepDataModuleWidget.dart';
import 'package:vbvs_app/component/home_page/SleepDateWidget.dart';
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/device/body_device_controller.dart';
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
import 'package:vbvs_app/enum/DataStatus.dart';
class DynamicReportDetailWidget extends StatefulWidget {
final List<SleepDateWidget> sleepDateWidgets;
@@ -32,6 +34,7 @@ class _DynamicReportDetailWidgetState extends State<DynamicReportDetailWidget> {
final ThemeController themeController = Get.find();
final ScrollController _scrollController = ScrollController();
bool _hasScrolled = false;
BodyDeviceController bodyDeviceController = Get.find();
@override
void initState() {
@@ -74,8 +77,7 @@ class _DynamicReportDetailWidgetState extends State<DynamicReportDetailWidget> {
SizedBox(height: 33.rpx),
_buildSleepDateWidgets(),
SizedBox(height: 20.rpx),
if (!AppConstants.is_test_account)
_buildSleepDataModuleWidgets(),
if (!AppConstants.is_test_account) _buildSleepDataModuleWidgets(),
],
),
),
@@ -95,13 +97,20 @@ class _DynamicReportDetailWidgetState extends State<DynamicReportDetailWidget> {
onTap: () async {
await Get.toNamed("/bodyDevice", arguments: targetDevice);
},
child: Text(
'${targetDevice['person']?['name'] == null ? '未命名'.tr : targetDevice['person']['name']}',
style: TextStyle(
fontFamily: 'Inter',
fontSize: 30.rpx,
letterSpacing: 0.0,
color: themeController.currentColor.sc3,
child: Container(
constraints: BoxConstraints(
maxWidth: MediaQuery.sizeOf(context).width * 0.6,
),
child: Text(
'${targetDevice['person']?['name'] == null ? '未命名'.tr : targetDevice['person']['name']}',
style: TextStyle(
fontFamily: 'Inter',
fontSize: 30.rpx,
letterSpacing: 0.0,
color: themeController.currentColor.sc3,
),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
),
),
@@ -183,6 +192,18 @@ class _DynamicReportDetailWidgetState extends State<DynamicReportDetailWidget> {
}
Widget _buildSleepDataModuleWidgets() {
// homePageSleepFlag
//widget.targetDevice['mac']
if (bodyDeviceController.homePageSleepFlag[widget.targetDevice['mac']] ==
DataStatus.Loading.code) {
return Container(
height: 200.rpx,
alignment: Alignment.center,
child: CircularProgressIndicator(
color: themeController.currentColor.sc1,
),
);
}
if (widget.sleepDataModuleWidgets.isEmpty) {
return Container(
height: 200.rpx,
@@ -207,16 +228,34 @@ class _DynamicReportDetailWidgetState extends State<DynamicReportDetailWidget> {
// );
// }
// return Container(
// width: double.infinity,
// height: 200.rpx,
// child: SingleChildScrollView(
// scrollDirection: Axis.horizontal,
// child: Row(
// children: widget.sleepDataModuleWidgets
// .map((widget) => widget)
// .toList()
// .divide(SizedBox(width: 14.rpx)),
// ),
// ),
// );
var aa = widget.sleepDataModuleWidgets
// 过滤:当 data 中存在 'show' 且其为 false 时排除该元素
.where((item) => item.data?['show'] != false)
// 保持元素本身SleepDataModuleWidget
.map((item) => item)
.toList();
return Container(
width: double.infinity,
height: 200.rpx,
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: widget.sleepDataModuleWidgets
.map((widget) => widget)
.toList()
.divide(SizedBox(width: 14.rpx)),
children:
// 保留你原来的 divide 间隔处理
aa.divide(SizedBox(width: 14.rpx)),
),
),
);