diff --git a/lib/common/color/ServiceConstant.dart b/lib/common/color/ServiceConstant.dart index a73da94..946d3b8 100644 --- a/lib/common/color/ServiceConstant.dart +++ b/lib/common/color/ServiceConstant.dart @@ -1,6 +1,6 @@ class ServiceConstant { - static const String baseHost = "vsbs-test.he-info.cn";//服务地址 - // static const String baseHost = "vsbst-api.he-info.cn/";//服务地址 + // static const String baseHost = "vsbs-test.he-info.cn";//服务地址 + static const String baseHost = "vsbst-api.he-info.cn";//服务地址 static const String service_address = "http://$baseHost"; static String server_service = "/vsbs_app_server";//服务名称 diff --git a/lib/component/home_page/SleepDataModuleWidget.dart b/lib/component/home_page/SleepDataModuleWidget.dart index 750b2ea..870405d 100644 --- a/lib/component/home_page/SleepDataModuleWidget.dart +++ b/lib/component/home_page/SleepDataModuleWidget.dart @@ -250,6 +250,7 @@ class _SleepDataModuleWidgetState extends State { 'type': 1, 'name': 'sleep', //'sleep', 'heartRate' 或 'breathe' 'itemName': widget.data['id'], + 'person':widget.data['person'], }); } }, diff --git a/lib/controller/device/blueteeth_bind_controller.dart b/lib/controller/device/blueteeth_bind_controller.dart index 5689c1f..6729a4b 100644 --- a/lib/controller/device/blueteeth_bind_controller.dart +++ b/lib/controller/device/blueteeth_bind_controller.dart @@ -136,7 +136,128 @@ class BlueteethBindController extends GetControllerEx { _statusTimer = null; } - Future updateDeviceStatus() async { + // Future updateDeviceStatus() async { + // try { + // String serviceAddress = ServiceConstant.service_address; + // String serviceName = ServiceConstant.server_service; + // String serviceApi = ServiceConstant.get_bluetooth_device_status; + // String queryUrl = "$serviceAddress$serviceName$serviceApi"; + + // if (model.devicelist != null && model.devicelist!.isNotEmpty) { + // final macParams = model.devicelist! + // .map((device) => "mac=${Uri.encodeQueryComponent(device.mac!)}") + // .join("&"); + + // if (queryUrl.contains('?')) { + // queryUrl += '&$macParams'; + // } else { + // queryUrl += '?$macParams'; + // } + // String? language = ""; + // if (languageController.selectLanguage != null) { + // language = languageController.selectLanguage.value!.language_code; + // } + // if (language != null && language.isNotEmpty) { + // if (queryUrl.contains("?")) { + // queryUrl += "&lang=$language"; + // } else { + // queryUrl += "?lang=$language"; + // } + // } + + // var response = await EasyDartModule.dio.get(queryUrl); + // var responseData = + // response.data is String ? jsonDecode(response.data) : response.data; + // ApiResponse res = + // ApiResponse.fromJson(responseData, (object) => object); + // if (res.code != HttpStatusCodes.ok) return res; + + // if (response.data['data'] != null && response.data['data'] is List) { + // List responseList = response.data['data']; + + // // 构建 mac -> 设备的映射 + // Map deviceMap = { + // for (var d in model.devicelist!) + // if (d.mac != null) d.mac!.toLowerCase(): d, + // }; + + // // 用于记录已经设置过主从关系的 mac,避免重复 + // Set processedMacs = {}; + + // for (var item in responseList) { + // String mac = item['mac'].toLowerCase(); + // String? bindMac = item['bindMac']?.toLowerCase(); + // bool? bind = item['bind']; + + // if (!deviceMap.containsKey(mac)) continue; + + // BleDeviceData currentDevice = deviceMap[mac]!; + // currentDevice.bind = bind; + + // if (bindMac != null && deviceMap.containsKey(bindMac)) { + // final isMutualBind = responseList.any((e) => + // e['mac']?.toString().toLowerCase() == bindMac && + // e['bindMac']?.toString().toLowerCase() == mac); + + // if (isMutualBind) { + // if (processedMacs.contains(mac) || + // processedMacs.contains(bindMac)) { + // continue; + // } + + // final masterMac = (mac.compareTo(bindMac) < 0) ? mac : bindMac; + // final slaveMac = (mac.compareTo(bindMac) < 0) ? bindMac : mac; + + // if (deviceMap.containsKey(masterMac) && + // deviceMap.containsKey(slaveMac)) { + // deviceMap[masterMac]!.slave = deviceMap[slaveMac]; + // processedMacs.add(masterMac); + // processedMacs.add(slaveMac); + // } + // } else { + // if (!processedMacs.contains(mac)) { + // BleDeviceData masterDevice = deviceMap[bindMac]!; + // masterDevice.slave = currentDevice; + // processedMacs.add(mac); + // processedMacs.add(bindMac); + // } + // } + // } + // } + + // // 获取所有被作为 slave 的 mac,用于排除掉 + // final Set allSlaveMacs = { + // for (var d in deviceMap.values) + // if (d.slave?.mac != null) d.slave!.mac!.toLowerCase() + // }; + + // // 构造最终列表,只保留主设备和未被作为 slave 的独立设备 + // final List finalList = deviceMap.values.where((d) { + // final mac = d.mac?.toLowerCase(); + // if (mac == null) return false; + // if (d.slave != null) return true; // 主设备 + // return !allSlaveMacs.contains(mac); // 不是别人 slave 的独立设备 + // }).toList(); + + // model.betDevicelist = finalList; + // } else { + // model.betDevicelist = []; + // } + + // updateAll(); + // return res; + // } + // } catch (e) { + // print("获取设备状态异常: $e"); + // EasyDartModule.logger.info("获取设备状态异常: $e"); + // DailyLogUtils.writeLog("获取设备状态异常: $e"); + // return ApiResponse(code: -1, msg: "请求失败".tr); + // } + + // return ApiResponse(code: -1, msg: "未知错误".tr); + // } + + Future updateDeviceStatus() async { try { String serviceAddress = ServiceConstant.service_address; String serviceName = ServiceConstant.server_service; @@ -174,72 +295,32 @@ class BlueteethBindController extends GetControllerEx { if (response.data['data'] != null && response.data['data'] is List) { List responseList = response.data['data']; - - // 构建 mac -> 设备的映射 Map deviceMap = { for (var d in model.devicelist!) - if (d.mac != null) d.mac!.toLowerCase(): d, + if (d.mac != null) d.mac!: d }; - // 用于记录已经设置过主从关系的 mac,避免重复 - Set processedMacs = {}; + List slaveMacsToRemove = []; for (var item in responseList) { - String mac = item['mac'].toLowerCase(); - String? bindMac = item['bindMac']?.toLowerCase(); + String mac = item['mac']; + String? bindMac = item['bindMac']; bool? bind = item['bind']; - if (!deviceMap.containsKey(mac)) continue; - - BleDeviceData currentDevice = deviceMap[mac]!; - currentDevice.bind = bind; - - if (bindMac != null && deviceMap.containsKey(bindMac)) { - final isMutualBind = responseList.any((e) => - e['mac']?.toString().toLowerCase() == bindMac && - e['bindMac']?.toString().toLowerCase() == mac); - - if (isMutualBind) { - if (processedMacs.contains(mac) || - processedMacs.contains(bindMac)) { - continue; - } - - final masterMac = (mac.compareTo(bindMac) < 0) ? mac : bindMac; - final slaveMac = (mac.compareTo(bindMac) < 0) ? bindMac : mac; - - if (deviceMap.containsKey(masterMac) && - deviceMap.containsKey(slaveMac)) { - deviceMap[masterMac]!.slave = deviceMap[slaveMac]; - processedMacs.add(masterMac); - processedMacs.add(slaveMac); - } - } else { - if (!processedMacs.contains(mac)) { - BleDeviceData masterDevice = deviceMap[bindMac]!; - masterDevice.slave = currentDevice; - processedMacs.add(mac); - processedMacs.add(bindMac); - } + if (deviceMap.containsKey(mac)) { + BleDeviceData currentDevice = deviceMap[mac]!; + currentDevice.bind = bind; + if (bindMac != null && deviceMap.containsKey(bindMac)) { + BleDeviceData masterDevice = deviceMap[bindMac]!; + masterDevice.slave = currentDevice; + slaveMacsToRemove.add(mac); } } } - // 获取所有被作为 slave 的 mac,用于排除掉 - final Set allSlaveMacs = { - for (var d in deviceMap.values) - if (d.slave?.mac != null) d.slave!.mac!.toLowerCase() - }; - - // 构造最终列表,只保留主设备和未被作为 slave 的独立设备 - final List finalList = deviceMap.values.where((d) { - final mac = d.mac?.toLowerCase(); - if (mac == null) return false; - if (d.slave != null) return true; // 主设备 - return !allSlaveMacs.contains(mac); // 不是别人 slave 的独立设备 - }).toList(); - - model.betDevicelist = finalList; + model.devicelist! + .removeWhere((device) => slaveMacsToRemove.contains(device.mac)); + model.betDevicelist = model.devicelist!; } else { model.betDevicelist = []; } diff --git a/lib/controller/weather/weather_controller.dart b/lib/controller/weather/weather_controller.dart index bd8d70d..43c32f0 100644 --- a/lib/controller/weather/weather_controller.dart +++ b/lib/controller/weather/weather_controller.dart @@ -2,8 +2,8 @@ import 'dart:async'; import 'package:EasyDartModule/EasyDartModule.dart'; import 'package:ef/ef.dart'; -// import 'package:geocoding/geocoding.dart'; -// import 'package:geolocator/geolocator.dart'; +import 'package:geocoding/geocoding.dart'; +import 'package:geolocator/geolocator.dart'; import 'package:json_annotation/json_annotation.dart'; import 'package:vbvs_app/common/util/CommonVariables.dart'; import 'package:vbvs_app/controller/setting/language/language_controller.dart'; @@ -37,148 +37,148 @@ class WeatherModelController extends GetControllerEx { LanguageController languageController = Get.find(); WeatherModelController() { attr = GetModel(WeatherModel()).obs; - // weatherFactory = WeatherFactory(CommonVariables.weather_apiKey, - // language: Language.CHINESE_SIMPLIFIED); + weatherFactory = WeatherFactory(CommonVariables.weather_apiKey, + language: Language.CHINESE_SIMPLIFIED); } - // Timer? _weatherTimer; - // Timer? _locationTimer; + Timer? _weatherTimer; + Timer? _locationTimer; - // late WeatherFactory weatherFactory; + late WeatherFactory weatherFactory; - // @override - // Future onInit() async { - // super.onInit(); - // await _getCurrentLocation(); - // _weatherTimer = Timer.periodic(Duration(seconds: 5), (timer) { - // _getCurrentWeather(); // 每 5 秒更新一次天气 - // }); + @override + Future onInit() async { + super.onInit(); + await _getCurrentLocation(); + _weatherTimer = Timer.periodic(Duration(seconds: 5), (timer) { + _getCurrentWeather(); // 每 5 秒更新一次天气 + }); - // _locationTimer = Timer.periodic(Duration(minutes: 10), (timer) { - // _getCurrentLocation(); // 每 10 分钟更新一次位置 - // }); - // } + _locationTimer = Timer.periodic(Duration(minutes: 10), (timer) { + _getCurrentLocation(); // 每 10 分钟更新一次位置 + }); + } - // @override - // void onClose() { - // _weatherTimer?.cancel(); // 取消天气更新定时器 - // _locationTimer?.cancel(); // 取消位置更新定时器 - // super.onClose(); - // } + @override + void onClose() { + _weatherTimer?.cancel(); // 取消天气更新定时器 + _locationTimer?.cancel(); // 取消位置更新定时器 + super.onClose(); + } - // // 获取当前位置并存储到 model - // Future _getCurrentLocation() async { - // try { - // Position position = await _determinePosition(); - // if (position == null) { - // throw Exception("获取位置失败"); - // } + // 获取当前位置并存储到 model + Future _getCurrentLocation() async { + try { + Position position = await _determinePosition(); + if (position == null) { + throw Exception("获取位置失败"); + } - // String? language = "zh_CN"; - // if (languageController.selectLanguage != null) { - // language = languageController.selectLanguage.value!.language_code; - // } - // List placemarks = await placemarkFromCoordinates( - // position.latitude, position.longitude, - // localeIdentifier: language); + String? language = "zh_CN"; + if (languageController.selectLanguage != null) { + language = languageController.selectLanguage.value!.language_code; + } + List placemarks = await placemarkFromCoordinates( + position.latitude, position.longitude, + localeIdentifier: language); - // if (placemarks.isNotEmpty) { - // model.cityName = placemarks[0].locality ?? "未知数据".tr; - // model.latitude = position.latitude; - // model.longitude = position.longitude; - // } + if (placemarks.isNotEmpty) { + model.cityName = placemarks[0].locality ?? "未知数据".tr; + model.latitude = position.latitude; + model.longitude = position.longitude; + } - // // 调用获取天气方法 - // _getCurrentWeather(); - // } catch (e) { - // print(e); - // EasyDartModule.logger.error("获取位置失败: $e"); - // } - // } + // 调用获取天气方法 + _getCurrentWeather(); + } catch (e) { + print(e); + EasyDartModule.logger.error("获取位置失败: $e"); + } + } - // // 获取当前位置 - // Future _determinePosition() async { - // bool serviceEnabled; - // LocationPermission permission; + // 获取当前位置 + Future _determinePosition() async { + bool serviceEnabled; + LocationPermission permission; - // serviceEnabled = await Geolocator.isLocationServiceEnabled(); - // if (!serviceEnabled) { - // return Future.error('位置服务未启用'); - // } + serviceEnabled = await Geolocator.isLocationServiceEnabled(); + if (!serviceEnabled) { + return Future.error('位置服务未启用'); + } - // permission = await Geolocator.checkPermission(); - // if (permission == LocationPermission.denied) { - // permission = await Geolocator.requestPermission(); - // if (permission == LocationPermission.denied) { - // return Future.error('位置权限被拒绝'); - // } - // } + permission = await Geolocator.checkPermission(); + if (permission == LocationPermission.denied) { + permission = await Geolocator.requestPermission(); + if (permission == LocationPermission.denied) { + return Future.error('位置权限被拒绝'); + } + } - // if (permission == LocationPermission.deniedForever) { - // return Future.error('位置权限被永久拒绝'); - // } + if (permission == LocationPermission.deniedForever) { + return Future.error('位置权限被永久拒绝'); + } - // return await Geolocator.getCurrentPosition(); - // } + return await Geolocator.getCurrentPosition(); + } - // // 获取天气信息 - // Future _getCurrentWeather() async { - // if (model.latitude == null || model.longitude == null) { - // EasyDartModule.logger.error("获取天气失败:位置数据获取失败"); - // return; // 如果位置数据没有获取到,则不更新天气 - // } - // String? language = "zh_CN"; - // if (languageController.selectLanguage != null) { - // language = languageController.selectLanguage.value!.language_code; - // } - // List placemarks = await placemarkFromCoordinates( - // model.latitude!, model.longitude!, - // localeIdentifier: language); + // 获取天气信息 + Future _getCurrentWeather() async { + if (model.latitude == null || model.longitude == null) { + EasyDartModule.logger.error("获取天气失败:位置数据获取失败"); + return; // 如果位置数据没有获取到,则不更新天气 + } + String? language = "zh_CN"; + if (languageController.selectLanguage != null) { + language = languageController.selectLanguage.value!.language_code; + } + List placemarks = await placemarkFromCoordinates( + model.latitude!, model.longitude!, + localeIdentifier: language); - // if (placemarks.isNotEmpty) { - // model.cityName = placemarks[0].locality ?? "未知数据".tr; - // } + if (placemarks.isNotEmpty) { + model.cityName = placemarks[0].locality ?? "未知数据".tr; + } - // try { - // weatherFactory.language = Language.CHINESE_SIMPLIFIED; - // String? language = "zh_CN"; - // if (languageController.selectLanguage != null) { - // language = languageController.selectLanguage.value!.language_code; - // } - // if (language == "zh_CN") { - // weatherFactory.language = Language.CHINESE_SIMPLIFIED; - // } else { - // weatherFactory.language = Language.ENGLISH; - // } - // Weather weather = await weatherFactory.currentWeatherByLocation( - // model.latitude!, model.longitude!); + try { + weatherFactory.language = Language.CHINESE_SIMPLIFIED; + String? language = "zh_CN"; + if (languageController.selectLanguage != null) { + language = languageController.selectLanguage.value!.language_code; + } + if (language == "zh_CN") { + weatherFactory.language = Language.CHINESE_SIMPLIFIED; + } else { + weatherFactory.language = Language.ENGLISH; + } + Weather weather = await weatherFactory.currentWeatherByLocation( + model.latitude!, model.longitude!); - // model.weather_info = weather.weatherDescription; - // model.min_temperature = weather.tempMin?.celsius?.toInt(); - // model.max_temperature = weather.tempMax?.celsius?.toInt(); - // model.current_temperature = weather.temperature?.celsius?.toInt(); - // model.wind_speed = weather.windSpeed?.toInt(); - // model.weatherIcon = weather.weatherIcon; - // if (model.weatherIcon != null) { - // model.weatherIconurl = - // "https://openweathermap.org/img/w/${model.weatherIcon}.png"; - // } - // updateAll(); // 更新 UI - // } catch (e) { - // EasyDartModule.logger.error("获取天气失败: $e"); - // print('获取天气失败: $e'); - // } - // } + model.weather_info = weather.weatherDescription; + model.min_temperature = weather.tempMin?.celsius?.toInt(); + model.max_temperature = weather.tempMax?.celsius?.toInt(); + model.current_temperature = weather.temperature?.celsius?.toInt(); + model.wind_speed = weather.windSpeed?.toInt(); + model.weatherIcon = weather.weatherIcon; + if (model.weatherIcon != null) { + model.weatherIconurl = + "https://openweathermap.org/img/w/${model.weatherIcon}.png"; + } + updateAll(); // 更新 UI + } catch (e) { + EasyDartModule.logger.error("获取天气失败: $e"); + print('获取天气失败: $e'); + } + } - // // 获取 5 天天气预报 - // Future> getWeatherForecast( - // double latitude, double longitude) async { - // try { - // return await weatherFactory.fiveDayForecastByLocation( - // latitude, longitude); - // } catch (e) { - // print('获取天气预报失败: $e'); - // rethrow; - // } - // } + // 获取 5 天天气预报 + Future> getWeatherForecast( + double latitude, double longitude) async { + try { + return await weatherFactory.fiveDayForecastByLocation( + latitude, longitude); + } catch (e) { + print('获取天气预报失败: $e'); + rethrow; + } + } } diff --git a/lib/main.dart b/lib/main.dart index 1a975d7..632e992 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -16,8 +16,6 @@ import 'package:vbvs_app/common/color/ServiceConstant.dart'; import 'package:vbvs_app/common/util/CheckNetwork.dart'; import 'package:vbvs_app/common/util/CommonVariables.dart'; import 'package:vbvs_app/common/util/FitTool.dart'; -import 'package:vbvs_app/common/util/requestWithLog.dart'; -import 'package:vbvs_app/component/tool/TopSlideNotification.dart'; import 'package:vbvs_app/controller/date/CalendarController.dart'; import 'package:vbvs_app/controller/device/blueteeth_bind_controller.dart'; import 'package:vbvs_app/controller/device/body_device_controller.dart'; @@ -60,12 +58,9 @@ import 'package:vbvs_app/controller/time/countdown_controller.dart'; import 'package:vbvs_app/controller/weather/weather_controller.dart'; import 'package:vbvs_app/language/AppLanguage.dart'; import 'package:vbvs_app/model/CustomThemeColor.dart'; -import 'package:vbvs_app/model/api_response.dart'; import 'package:vbvs_app/model/user_data.dart'; -import 'package:vbvs_app/pages/mh_page/BackMovement.dart'; -import 'package:vbvs_app/pages/mh_page/MattressControl.dart'; -import 'package:vbvs_app/pages/mh_page/people_info.dart'; import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart'; +import 'package:vbvs_app/pages/mh_page/MattressControl.dart'; import 'package:vbvs_app/routers/mh_routers.dart'; import 'controller/mh_controller/apply_repair_controller.dart'; @@ -315,7 +310,7 @@ class MyApp extends StatelessWidget { ])); } - final selectapp = "mht"; + final selectapp = "th"; // This widget is the root of your application. @override Widget build(BuildContext context) { diff --git a/lib/pages/device_bind/bind_device_success.dart b/lib/pages/device_bind/bind_device_success.dart index 3f0b55d..f9d26d7 100644 --- a/lib/pages/device_bind/bind_device_success.dart +++ b/lib/pages/device_bind/bind_device_success.dart @@ -3,11 +3,13 @@ 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/color/app_uri_status.dart'; import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/component/tool/ClickableContainer.dart'; import 'package:vbvs_app/component/tool/CustomCard.dart'; import 'package:vbvs_app/controller/device/blueteeth_bind_controller.dart'; import 'package:vbvs_app/controller/device/body_device_controller.dart'; +import 'package:vbvs_app/controller/home/home_controller.dart'; import 'package:vbvs_app/controller/main_bottom/global_controller.dart'; import 'package:vbvs_app/controller/person/person_controller.dart'; import 'package:vbvs_app/controller/theme_controller/ThemeController.dart'; @@ -80,6 +82,25 @@ class _EPageState extends State { child: ClickableContainer( onTap: () { if (blueteethBindController.returnPage == 0) { + HomeController homeController = Get.find(); + BodyDeviceController deviceController = Get.find(); + if (userInfoController.model.login == 1) { + homeController.getSleepReport(); + deviceController + .getDeviceNum() + .then((apiResponse) { + if (apiResponse.code != HttpStatusCodes.ok) {} + }); + deviceController + .getDeviceList() + .then((apiResponse) { + if (apiResponse.code != HttpStatusCodes.ok) { + } else { + //请求睡眠报告 + deviceController.getSleepReport(); + } + }); + } Get.until((route) => Get.currentRoute == "/mianPageBottomChange"); } else { @@ -279,6 +300,25 @@ class _EPageState extends State { BlueteethBindController blueteethBindController = Get.find(); if (blueteethBindController.returnPage == 0) { + HomeController homeController = Get.find(); + BodyDeviceController deviceController = Get.find(); + if (userInfoController.model.login == 1) { + homeController.getSleepReport(); + deviceController + .getDeviceNum() + .then((apiResponse) { + if (apiResponse.code != HttpStatusCodes.ok) {} + }); + deviceController + .getDeviceList() + .then((apiResponse) { + if (apiResponse.code != HttpStatusCodes.ok) { + } else { + //请求睡眠报告 + deviceController.getSleepReport(); + } + }); + } Get.until((route) => Get.currentRoute == "/mianPageBottomChange"); } else { diff --git a/lib/pages/main_bottom/home_page.dart b/lib/pages/main_bottom/home_page.dart index 1a361ef..374ed37 100644 --- a/lib/pages/main_bottom/home_page.dart +++ b/lib/pages/main_bottom/home_page.dart @@ -1043,6 +1043,7 @@ class _HomePageState extends State { List stateModule = []; String currentTime = ""; String goalMac = targetDevice?['mac']; + var person = targetDevice?['person']; return DynamicReportDetailWidget( key: ValueKey( '${targetDevice!['mac']}_${homeController.model.type}'), // 添加唯一key @@ -1090,6 +1091,7 @@ class _HomePageState extends State { stateModule[j]['time'] = currentTime; stateModule[j]['mac'] = goalMac; + stateModule[j]['person'] = person; return SleepDataModuleWidget( data: stateModule[j], ); diff --git a/lib/pages/sleep_report/new_sleep_report_page.dart b/lib/pages/sleep_report/new_sleep_report_page.dart index ccb4ba3..c72259e 100644 --- a/lib/pages/sleep_report/new_sleep_report_page.dart +++ b/lib/pages/sleep_report/new_sleep_report_page.dart @@ -431,7 +431,15 @@ class _NewSleepReportPageState extends State { CrossAxisAlignment.start, children: [ Text( - '传感器1号', + (widget.data['person']?['name'] + ?.toString() + .trim() + .isNotEmpty ?? + false) + ? widget + .data['person']!['name'] + .toString() + : '未知数据'.tr, style: FlutterFlowTheme.of(context) .bodyMedium @@ -444,7 +452,7 @@ class _NewSleepReportPageState extends State { ), ), Text( - '69', + '${MyUtils.getAgeByDate(MyUtils.formatBirthdayTime(widget.data['person']?['birthday'])) ?? '未知数据'.tr}', style: FlutterFlowTheme.of(context) .bodyMedium @@ -511,7 +519,7 @@ class _NewSleepReportPageState extends State { CrossAxisAlignment.start, children: [ Text( - '1231212', + '${widget.data['code'] ?? '未知数据'.tr}', // "D11250300003", style: FlutterFlowTheme.of(context) @@ -523,9 +531,11 @@ class _NewSleepReportPageState extends State { color: themeController .currentColor.sc3, ), + maxLines: 1, + overflow: TextOverflow.ellipsis, ), Text( - '55kg', + '${widget.data['person']?['weight'] ?? '未知数据'.tr}kg', style: FlutterFlowTheme.of(context) .bodyMedium