diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcherhs.png b/android/app/src/main/res/mipmap-hdpi/ic_launcherhs.png
new file mode 100644
index 0000000..2e93dee
Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcherhs.png differ
diff --git a/android/app/src/main/res/mipmap-ldpi/ic_launcherhs.png b/android/app/src/main/res/mipmap-ldpi/ic_launcherhs.png
new file mode 100644
index 0000000..2e93dee
Binary files /dev/null and b/android/app/src/main/res/mipmap-ldpi/ic_launcherhs.png differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcherhs.png b/android/app/src/main/res/mipmap-mdpi/ic_launcherhs.png
new file mode 100644
index 0000000..2e93dee
Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcherhs.png differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcherhs.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcherhs.png
new file mode 100644
index 0000000..2e93dee
Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcherhs.png differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcherhs.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcherhs.png
new file mode 100644
index 0000000..2e93dee
Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcherhs.png differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcherhs.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcherhs.png
new file mode 100644
index 0000000..2e93dee
Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcherhs.png differ
diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts
deleted file mode 100644
index a439442..0000000
--- a/android/settings.gradle.kts
+++ /dev/null
@@ -1,25 +0,0 @@
-pluginManagement {
- val flutterSdkPath = run {
- val properties = java.util.Properties()
- file("local.properties").inputStream().use { properties.load(it) }
- val flutterSdkPath = properties.getProperty("flutter.sdk")
- require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
- flutterSdkPath
- }
-
- includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
-
- repositories {
- google()
- mavenCentral()
- gradlePluginPortal()
- }
-}
-
-plugins {
- id("dev.flutter.flutter-plugin-loader") version "1.0.0"
- id("com.android.application") version "8.7.0" apply false
- id("org.jetbrains.kotlin.android") version "1.8.22" apply false
-}
-
-include(":app")
diff --git a/assets/img/icon/arrow_right.svg b/assets/img/icon/arrow_right.svg
index 2fa5397..db9e15e 100644
--- a/assets/img/icon/arrow_right.svg
+++ b/assets/img/icon/arrow_right.svg
@@ -1 +1,9 @@
-
\ No newline at end of file
+
diff --git a/assets/img/icon/arrow_right1.svg b/assets/img/icon/arrow_right1.svg
new file mode 100644
index 0000000..2fa5397
--- /dev/null
+++ b/assets/img/icon/arrow_right1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/img/icon/question.svg b/assets/img/icon/question.svg
new file mode 100644
index 0000000..5b6e120
--- /dev/null
+++ b/assets/img/icon/question.svg
@@ -0,0 +1,15 @@
+
diff --git a/lib/component/home_page/DynamicReportDetailWidget.dart b/lib/component/home_page/DynamicReportDetailWidget.dart
index bfd516a..bed3f1a 100644
--- a/lib/component/home_page/DynamicReportDetailWidget.dart
+++ b/lib/component/home_page/DynamicReportDetailWidget.dart
@@ -57,7 +57,7 @@ class _DynamicReportDetailWidgetState extends State {
@override
Widget build(BuildContext context) {
return Padding(
- padding: EdgeInsetsDirectional.fromSTEB(0, 25.rpx, 0, 25.rpx),
+ padding: EdgeInsetsDirectional.fromSTEB(0, 0.rpx, 0, 0.rpx),
child: Container(
width: double.infinity,
decoration: BoxDecoration(
@@ -119,9 +119,19 @@ class _DynamicReportDetailWidgetState extends State {
DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(
int.parse(selectedWidgets[0].time!));
String time = MyUtils.formatBindTime(dateTime);
- String sleepReportUrl =
- "${ServiceConstant.sleep_report_url}?mac=$mac&token=${ServiceConstant.sleep_token}&date=$time";
- Get.toNamed("/sleepReportPage", arguments: sleepReportUrl);
+ // String sleepReportUrl =
+ // "${ServiceConstant.sleep_report_url}?mac=$mac&token=${ServiceConstant.sleep_token}&date=$time";
+ // Get.toNamed("/sleepReportPage", arguments: sleepReportUrl);
+ Get.toNamed("/newSleepReportPage", arguments: {
+ 'date': dateTime != null
+ ? dateTime.millisecondsSinceEpoch
+ : DateTime.now().millisecondsSinceEpoch,
+ "mac": mac,
+ 'type': 1,
+ 'name': 'sleep', //'sleep', 'heartRate' 或 'breathe'
+ // 'itemName': widget.data['id'],
+ 'person': widget.targetDevice['person'],
+ });
} else {
TopSlideNotification.show(context,
text: "当前暂无数据".tr,
diff --git a/lib/component/home_page/SleepDateWidget.dart b/lib/component/home_page/SleepDateWidget.dart
index 95ff7b5..1cbbc67 100644
--- a/lib/component/home_page/SleepDateWidget.dart
+++ b/lib/component/home_page/SleepDateWidget.dart
@@ -117,7 +117,7 @@ class _SleepDateWidgetState extends State {
letterSpacing: 0.0,
color: widget.textColor ??
themeController.currentColor.sc4,
- fontWeight: FontWeight.bold, // 加粗
+ fontWeight: FontWeight.w500, // 加粗
),
),
if ((widget.score?.trim().isNotEmpty ?? false))
@@ -158,7 +158,7 @@ class _SleepDateWidgetState extends State {
iconPadding: EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0),
color: widget.textColor ?? themeController.currentColor.sc4,
textStyle: TextStyle(
- fontFamily: 'Inter Tight',
+ // fontFamily: 'Inter Tight',
color: themeController.currentColor.sc3,
letterSpacing: 0.0,
),
diff --git a/lib/controller/login/login_controller.dart b/lib/controller/login/login_controller.dart
index 0e8cdee..660c6a6 100644
--- a/lib/controller/login/login_controller.dart
+++ b/lib/controller/login/login_controller.dart
@@ -6,6 +6,7 @@ import 'package:fluwx/fluwx.dart';
import 'package:get_storage/get_storage.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:vbvs_app/common/color/ServiceConstant.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/CommonVariables.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
@@ -13,6 +14,8 @@ import 'package:vbvs_app/common/util/requestWithLog.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/time/countdown_controller.dart';
import 'package:vbvs_app/controller/user_info_controller.dart';
+import 'package:vbvs_app/enum/APPPackageType.dart';
+import 'package:vbvs_app/main.dart';
import 'package:vbvs_app/model/api_response.dart';
import 'package:vbvs_app/model/user_data.dart';
@@ -139,6 +142,7 @@ class LoginController extends GetControllerEx {
if (languageController.selectLanguage != null) {
language = languageController.selectLanguage.value!.language_code;
}
+
if (language != null && language.isNotEmpty) {
if (queryUrl.contains("?")) {
queryUrl += "&lang=$language";
@@ -149,6 +153,9 @@ class LoginController extends GetControllerEx {
var data = {
"userName": model.phone,
};
+ if (AppConstants().ent_type == APPPackageType.HUANSHUI.code) {
+ data['code'] = "hzhskj";
+ }
var response =
await EasyDartModule.dio.post(queryUrl, data: jsonEncode(data));
if (response != null) {
@@ -203,7 +210,7 @@ class LoginController extends GetControllerEx {
EasyDartModule.logger.error('msg:$data');
if (data) {
//登陆成功
- // await dealBindProcess();
+ await dealBindProcess();
}
});
} catch (e) {
diff --git a/lib/controller/weather/weather_controller.dart b/lib/controller/weather/weather_controller.dart
index 4f984c6..fca7523 100644
--- a/lib/controller/weather/weather_controller.dart
+++ b/lib/controller/weather/weather_controller.dart
@@ -49,14 +49,19 @@ class WeatherModelController extends GetControllerEx {
@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 分钟更新一次位置
- });
+ try {
+ await _getCurrentLocation();
+ _weatherTimer = Timer.periodic(Duration(seconds: 5), (timer) {
+ _getCurrentWeather(); // 每 5 秒更新一次天气
+ });
+
+ _locationTimer = Timer.periodic(Duration(minutes: 10), (timer) {
+ _getCurrentLocation(); // 每 10 分钟更新一次位置
+ });
+ } catch (e) {
+ ef.log("[天气和定位请求失败]");
+ }
}
@override
@@ -124,7 +129,13 @@ class WeatherModelController extends GetControllerEx {
return Future.error('位置权限被永久拒绝');
}
- return await Geolocator.getCurrentPosition();
+ return await Geolocator.getCurrentPosition(
+ locationSettings: const LocationSettings(
+ accuracy: LocationAccuracy.low, // 使用高精度定位,但不依赖 Google Play
+ distanceFilter: 1000, // 设置最小距离过滤
+ timeLimit: Duration(seconds: 10), // 设置获取位置的最大等待时间
+ ),
+ );
}
// 获取天气信息
@@ -188,3 +199,166 @@ class WeatherModelController extends GetControllerEx {
}
}
}
+
+// import 'dart:async';
+// import 'package:EasyDartModule/EasyDartModule.dart';
+// import 'package:ef/ef.dart';
+// import 'package:amap_flutter_location/amap_flutter_location.dart'; // 导入 amap_flutter_location 插件
+// import 'package:geocoding/geocoding.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';
+// import 'package:weather/weather.dart';
+
+// part 'weather_controller.g.dart';
+
+// @JsonSerializable()
+// class WeatherModel {
+// double? longitude; // 经度
+// double? latitude; // 纬度
+// String? weather_info = ''; // 天气
+// int? current_temperature; // 温度
+// int? min_temperature; // 最低温度
+// int? max_temperature; // 最高温度
+// String? wind_direction; // 风向
+// int? wind_speed; // 风速等级
+// String? cityName; // 城市名
+// String? weatherIcon; // 天气图标
+// String? weatherIconurl; // 天气图标url
+
+// WeatherModel();
+
+// static WeatherModel fromJson(Map json) =>
+// _$WeatherModelFromJson(json);
+
+// Map toJson() => _$WeatherModelToJson(this);
+// }
+
+// class WeatherModelController extends GetControllerEx {
+// LanguageController languageController = Get.find();
+// WeatherModelController() {
+// attr = GetModel(WeatherModel()).obs;
+// weatherFactory = WeatherFactory(CommonVariables.weather_apiKey,
+// language: Language.CHINESE_SIMPLIFIED);
+// }
+
+// Timer? _weatherTimer;
+// Timer? _locationTimer;
+
+// late WeatherFactory weatherFactory;
+// late AMapFlutterLocation location; // 声明 AMapFlutterLocation 实例
+
+// @override
+// Future onInit() async {
+// super.onInit();
+
+// location = AMapFlutterLocation(); // 初始化 AMapFlutterLocation
+
+// try {
+// await _getCurrentLocation();
+// _weatherTimer = Timer.periodic(Duration(seconds: 5), (timer) {
+// _getCurrentWeather(); // 每 5 秒更新一次天气
+// });
+
+// _locationTimer = Timer.periodic(Duration(minutes: 10), (timer) {
+// _getCurrentLocation(); // 每 10 分钟更新一次位置
+// });
+// } catch (e) {
+// ef.log("[天气和定位请求失败]");
+// }
+// }
+
+// @override
+// void onClose() {
+// _weatherTimer?.cancel(); // 取消天气更新定时器
+// _locationTimer?.cancel(); // 取消位置更新定时器
+// location.stopLocation(); // 停止高德定位
+// super.onClose();
+// }
+
+// // 获取当前位置并存储到 model
+// Future _getCurrentLocation() async {
+// try {
+// // 开始定位
+// location.startLocation();
+
+// // 监听定位回调
+
+// location.onLocationChanged().listen((Map result) {
+// ///result即为定位结果
+// ef.log("[位置]:${result}");
+// });
+
+// // location.onLocationChanged.listen((locationData) {
+// // if (locationData.latitude != null && locationData.longitude != null) {
+// // model.latitude = locationData.latitude;
+// // model.longitude = locationData.longitude;
+
+// // // 获取位置对应的城市名
+// // _getCityName(locationData.latitude!, locationData.longitude!);
+// // }
+// // });
+// } catch (e) {
+// print(e);
+// EasyDartModule.logger.error("获取位置失败: $e");
+// }
+// }
+
+// // 获取城市名
+// Future _getCityName(double latitude, double longitude) async {
+// try {
+// List placemarks =
+// await placemarkFromCoordinates(latitude, longitude);
+
+// if (placemarks.isNotEmpty) {
+// model.cityName = placemarks[0].locality ?? "未知数据".tr;
+// }
+// // 获取天气
+// _getCurrentWeather();
+// } catch (e) {
+// print(e);
+// EasyDartModule.logger.error("获取城市名失败: $e");
+// }
+// }
+
+// // 获取天气信息
+// Future _getCurrentWeather() async {
+// if (model.latitude == null || model.longitude == null) {
+// EasyDartModule.logger.error("获取天气失败:位置数据获取失败");
+// return; // 如果位置数据没有获取到,则不更新天气
+// }
+
+// try {
+// weatherFactory.language = Language.CHINESE_SIMPLIFIED;
+// 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');
+// }
+// }
+
+// // 获取 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 8f9ae53..f3a848c 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -69,7 +69,6 @@ import 'package:vbvs_app/pages/mh_page/MattressControl.dart';
import 'package:vbvs_app/pages/mh_page/device/component/mht_device_calibration_controller.dart';
import 'package:vbvs_app/pages/mh_page/device/controller/mht_bluetooth_controller.dart';
import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart';
-import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart';
import 'package:vbvs_app/pages/mh_page/user/controller/mht_login_controller.dart';
import 'package:vbvs_app/pages/mh_page/user/controller/mht_register_controller.dart';
import 'package:vbvs_app/pages/mh_page/user/controller/update_password_controller.dart';
@@ -81,6 +80,7 @@ import 'routers/routers.dart';
Future main() async {
WidgetsFlutterBinding.ensureInitialized();
+
final Locale? deviceLocale = Get.deviceLocale;
print('系统语言: ${deviceLocale?.languageCode}');
@@ -369,7 +369,6 @@ class MyApp extends StatelessWidget {
Get.lazyPut(() => CalendarController()),
Get.lazyPut(() => UserPdfController()),
Get.lazyPut(() => PrivacyPdfController()),
- Get.put(WebviewTestController()),
]));
}
@@ -399,6 +398,7 @@ class MyApp extends StatelessWidget {
// Get.lazyPut(() => UserInfoController()),
Get.put(GlobalController()),
Get.put(WeatherModelController()),
+ Get.lazyPut(() => ApplyRepairController()),
Get.lazyPut(() => MainPageController()),
Get.lazyPut(() => BlueteethBindController()),
Get.lazyPut(() => PersonController()),
diff --git a/lib/pages/device/component/DeviceDataComponentWidget.dart b/lib/pages/device/component/DeviceDataComponentWidget.dart
index 5f0b2bf..2f5aab7 100644
--- a/lib/pages/device/component/DeviceDataComponentWidget.dart
+++ b/lib/pages/device/component/DeviceDataComponentWidget.dart
@@ -1207,11 +1207,19 @@ class _DeviceDataComponentWidgetState extends State {
child: CustomCard(
borderRadius: AppConstants().button_container_radius,
onTap: () {
- String mac = widget.device['mac'];
- String sleepReportUrl =
- "${ServiceConstant.sleep_report_url}?mac=${mac}&token=${ServiceConstant.sleep_token}";
- Get.toNamed("/sleepReportPage",
- arguments: sleepReportUrl);
+ // String mac = widget.device['mac'];
+ // String sleepReportUrl =
+ // "${ServiceConstant.sleep_report_url}?mac=${mac}&token=${ServiceConstant.sleep_token}";
+ // Get.toNamed("/sleepReportPage",
+ // arguments: sleepReportUrl);
+ Get.toNamed("/newSleepReportPage", arguments: {
+ 'date':DateTime.now().millisecondsSinceEpoch,
+ "mac": widget.device['mac'],
+ 'type': 1,
+ 'name': 'sleep', //'sleep', 'heartRate' 或 'breathe'
+ // 'itemName': widget.data['id'],
+ 'person': widget.device['person'],
+ });
},
colors: [
themeController.currentColor.sc1,
diff --git a/lib/pages/device/instant_body_page.dart b/lib/pages/device/instant_body_page.dart
index d45480f..de7657e 100644
--- a/lib/pages/device/instant_body_page.dart
+++ b/lib/pages/device/instant_body_page.dart
@@ -125,9 +125,10 @@ class _InstantBodyPageState extends State
// 心率 呼吸 体动 呼吸暂停
if ("离床" == inBed) {
breathState = "否";
- data["breathRate"] = 0;
- data["heartRate"] = 0;
- data["bodyMotion"] = 0;
+ bodyMotion = 0;
+ breathrate = 0;
+ heartrate = 0;
+ snores = "否";
} else {
breathState = data["breathState"];
bodyMotion = data['bodyMotion'];
@@ -829,10 +830,12 @@ class _InstantBodyPageState extends State
title: "体动".tr,
iconAsset:
"assets/img/icon/bodymotion.svg",
- value: (bodyMotion == null ||
- bodyMotion == -1)
- ? "未知数据".tr
- : "$bodyMotion",
+ value: inBed == "离床"
+ ? ("-")
+ : (bodyMotion == null ||
+ bodyMotion == -1)
+ ? "未知数据".tr
+ : "$bodyMotion",
),
],
),
@@ -844,16 +847,20 @@ class _InstantBodyPageState extends State
title: "心率".tr,
iconAsset:
"assets/img/icon/heart.svg",
- value: (heartrate == null ||
- heartrate == -1)
- ? "未知数据".tr
- : "$heartrate",
+ value: inBed == "离床"
+ ? "-"
+ : ((heartrate == null ||
+ heartrate == -1)
+ ? "未知数据".tr
+ : "$heartrate"),
),
DeviceStatusInfoWidget(
title: "打鼾".tr,
iconAsset:
"assets/img/icon/snore.svg",
- value: '${snores}'.tr,
+ value: inBed == "离床"
+ ? "-"
+ : ('${snores}'.tr),
),
],
),
@@ -865,16 +872,20 @@ class _InstantBodyPageState extends State
title: "呼吸".tr,
iconAsset:
"assets/img/icon/breathe.svg",
- value: (breathrate == null ||
- breathrate == -1)
- ? "未知数据".tr
- : "$breathrate",
+ value: inBed == "离床"
+ ? ("-")
+ : ((breathrate == null ||
+ breathrate == -1)
+ ? "未知数据".tr
+ : "$breathrate"),
),
DeviceStatusInfoWidget(
title: "呼吸暂停".tr,
iconAsset:
"assets/img/icon/breathe_pause.svg",
- value: '${breathState}',
+ value: inBed == "离床"
+ ? "-"
+ : ('${breathState}'),
),
],
),
diff --git a/lib/pages/device_bind/blueteeth_device_page.dart b/lib/pages/device_bind/blueteeth_device_page.dart
index 12a04df..0dd834f 100644
--- a/lib/pages/device_bind/blueteeth_device_page.dart
+++ b/lib/pages/device_bind/blueteeth_device_page.dart
@@ -360,7 +360,8 @@ class _BlueteethDevicePageState extends State {
'最小信号强度'.tr,
style: TextStyle(
fontFamily: 'Inter',
- color: stringToColor("#003058"),
+ // color: stringToColor("#003058"),
+ color: Colors.white,
fontSize: 26.rpx,
letterSpacing: 0.0,
),
diff --git a/lib/pages/login/other_login.dart b/lib/pages/login/other_login.dart
index 34629ac..5dfa408 100644
--- a/lib/pages/login/other_login.dart
+++ b/lib/pages/login/other_login.dart
@@ -1,7 +1,6 @@
import 'package:EasyDartModule/EasyDartModule.dart' as edm;
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:fluwx/fluwx.dart';
import 'package:vbvs_app/common/color/appConstants.dart';
@@ -19,7 +18,6 @@ import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
import 'package:vbvs_app/controller/time/countdown_controller.dart';
import 'package:vbvs_app/controller/user_info_controller.dart';
-import 'package:vbvs_app/main.dart';
import 'package:vbvs_app/model/api_response.dart';
class OtherLoginPage extends StatefulWidget {
@@ -68,7 +66,10 @@ class _OtherLoginPageState extends State {
//首次未注册的用户引导去手机号填写页面
//已注册的用户直接跳转首页
if (CommonVariables.isNetWorkOn == false) {
- showToast("网络未连接,请开启设备网络后重试");
+ TopSlideNotification.show(context,
+ text: "网络未连接,请开启设备网络后重试".tr,
+ textColor: themeController.currentColor.sc9);
+ // showToast("网络未连接,请开启设备网络后重试");
return;
}
ApiResponse msg = await loginController.loginByWechatCode(code);
@@ -82,9 +83,13 @@ class _OtherLoginPageState extends State {
// TODO 操作全部跳转页面前成功以后移除监听,防止重复监听,其他方式登录成功也需要移出监听
// fluwxCancelable?.cancel();
} else if (errCode == -4) {
- showToast("用户拒绝授权");
+ TopSlideNotification.show(context,
+ text: "用户拒绝授权".tr, textColor: themeController.currentColor.sc9);
+ // showToast("用户拒绝授权");
} else if (errCode == -2) {
- showToast("用户取消授权");
+ TopSlideNotification.show(context,
+ text: "用户取消授权".tr, textColor: themeController.currentColor.sc9);
+ // showToast("用户取消授权");
}
}
});
@@ -127,13 +132,14 @@ class _OtherLoginPageState extends State {
},
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
- 16.rpx, 10.rpx, 16.rpx, 10.rpx),
- child: SvgPicture.asset(
- 'assets/img/icon/arrow_left.svg',
- width: 25.rpx,
- height: 25.rpx, // 如果 SVG 中没有固定颜色,使用 color 设置
- color: themeController.currentColor.sc3,
- ),
+ 0.rpx, 10.rpx, 16.rpx, 10.rpx),
+ // child: SvgPicture.asset(
+ // 'assets/img/icon/arrow_left.svg',
+ // width: 25.rpx,
+ // height: 25.rpx, // 如果 SVG 中没有固定颜色,使用 color 设置
+ // color: themeController.currentColor.sc3,
+ // ),
+ child: returnIconButtomNew,
),
),
Expanded(
@@ -152,7 +158,9 @@ class _OtherLoginPageState extends State {
child: Align(
alignment: AlignmentDirectional(0, 0),
child: Text(
- AppConstants().ent_type == 1?'登录页.欢迎使用太和e护'.tr:"欢迎使用欢睡科技",
+ AppConstants().ent_type == 1
+ ? '登录页.欢迎使用太和e护'.tr
+ : "欢迎使用欢睡科技",
style: TextStyle(
fontFamily: 'Inter',
fontSize: 48.rpx,
@@ -281,8 +289,7 @@ class _OtherLoginPageState extends State {
focusedErrorBorder:
OutlineInputBorder(
borderSide: BorderSide(
- color:
- Colors.red,
+ color: Colors.red,
width: 1.rpx,
),
borderRadius:
@@ -314,7 +321,6 @@ class _OtherLoginPageState extends State {
),
),
),
-
Align(
alignment: AlignmentDirectional(-1, 0),
child: Padding(
@@ -408,8 +414,7 @@ class _OtherLoginPageState extends State {
focusedErrorBorder:
OutlineInputBorder(
borderSide: BorderSide(
- color:
- Colors.red,
+ color: Colors.red,
width: 1.rpx,
),
borderRadius:
@@ -698,8 +703,7 @@ class _OtherLoginPageState extends State {
),
activeColor:
stringToColor("#FF9F66"), //固定
- checkColor:
- Colors.white,
+ checkColor: Colors.white,
),
)),
Expanded(
@@ -804,7 +808,9 @@ class _OtherLoginPageState extends State {
padding: EdgeInsetsDirectional.fromSTEB(
0, 0, 0, 36.rpx),
child: Text(
- '登录页.其他登录方式'.tr,
+ AppConstants().ent_type == 1
+ ? '登录页.欢迎使用太和e护'.tr
+ : "欢迎使用欢睡科技",
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
diff --git a/lib/pages/main_bottom/component/main_page_b_bottom_change.dart b/lib/pages/main_bottom/component/main_page_b_bottom_change.dart
index 398ebc1..31a9169 100644
--- a/lib/pages/main_bottom/component/main_page_b_bottom_change.dart
+++ b/lib/pages/main_bottom/component/main_page_b_bottom_change.dart
@@ -1,12 +1,17 @@
+import 'dart:convert';
+
import 'package:ef/ef.dart';
import 'package:flutter/material.dart';
+import 'package:vbvs_app/common/util/CommonVariables.dart';
import 'package:vbvs_app/component/NullDataComponentWidget.dart';
+import 'package:vbvs_app/model/WebSocketMessage.dart';
import 'package:vbvs_app/pages/common/bezier_bottom_navigation_bar.dart';
import 'package:vbvs_app/pages/mh_page/MattressControl.dart';
import 'package:vbvs_app/pages/mh_page/homepage/mht_sleep_report_page.dart';
import 'package:vbvs_app/pages/mh_page/homepage/new_Home_page.dart';
import 'package:vbvs_app/pages/mh_page/new_mine_page.dart';
import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart';
+import 'package:EasyDartModule/EasyDartModule.dart' as edm;
class MainPageBBottomChange extends StatefulWidget {
// 全局 key,用于静态访问 _HomePageState
@@ -138,11 +143,24 @@ class _HomePageState extends State
}
Future dealWebSource(int index) async {
- WebviewTestController webviewTestController = Get.find();
- if (index == 2) {
- await webviewTestController.web.jsbridge?.dart.pageActive(true);
- } else {
- await webviewTestController.web.jsbridge?.dart.pageInActive();
+ try {
+ WebviewTestController webviewTestController = Get.find();
+ if (index == 2) {
+ await webviewTestController.web.jsbridge?.dart.pageActive(true);
+ //激活websocket
+ CommonVariables.callMap["/smartbed/connect"] = (data) {
+ //订阅连接消息
+ ef.log("[设备申请连接]:$data");
+ };
+ edm.EasyDartModule.websocket.sendData(jsonEncode(WebSocketMessage(
+ path: "/smartbed/connect",
+ type: 5,
+ data: {"mac": webviewTestController.selectDevice['mac']})));
+ } else {
+ await webviewTestController.web.jsbridge?.dart.pageInActive();
+ }
+ } catch (e) {
+ ef.log("[激活控制页面报错]:$e");
}
}
}
diff --git a/lib/pages/main_bottom/home_page.dart b/lib/pages/main_bottom/home_page.dart
index cae727c..ba03f20 100644
--- a/lib/pages/main_bottom/home_page.dart
+++ b/lib/pages/main_bottom/home_page.dart
@@ -994,12 +994,89 @@ class _HomePageState extends State {
);
}
+ // return Expanded(
+ // child: SingleChildScrollView(
+ // child: Column(
+ // children: List.generate(
+ // deviceList.length,
+ // (i) {
+ // String mac = macList[i];
+ // List dailyDataList =
+ // reportData[mac]!;
+ // Map? targetDevice =
+ // deviceList.firstWhereOrNull(
+ // (device) => device['mac'] == mac,
+ // );
+ // List stateModule = [];
+ // String currentTime = "";
+ // String goalMac = targetDevice?['mac'];
+ // var person = targetDevice?['person'];
+ // return DynamicReportDetailWidget(
+ // key: ValueKey(
+ // '${targetDevice!['mac']}_${homeController.model.type}'), // 添加唯一key
+ // targetDevice: targetDevice!,
+ // sleepDateWidgets: List.generate(
+ // dailyDataList.length,
+ // (j) {
+ // var dayData = dailyDataList[j];
+ // DateTime date =
+ // DateTime.fromMillisecondsSinceEpoch(
+ // dayData['time'] is String
+ // ? int.parse(dayData['time'])
+ // : dayData['time'],
+ // );
+ // if (dayData['selected'] != null &&
+ // dayData['selected'] == true &&
+ // dayData['state'] != null) {
+ // stateModule = dayData['state'];
+ // currentTime = dayData['time'];
+ // }
+ // return SleepDateWidget(
+ // mac: mac,
+ // time: dayData['time'],
+ // date: date,
+ // score: dayData['score']?['socre']
+ // ?.toString() ??
+ // '',
+ // comment: dayData['score']?['name'],
+ // textColor: dayData['score']
+ // ?['color'] ==
+ // null
+ // ? null
+ // : stringToColor(
+ // dayData['score']?['color']),
+ // isSelected: dayData['selected'],
+ // );
+ // },
+ // ),
+ // sleepDataModuleWidgets: stateModule
+ // .isNotEmpty
+ // ? List.generate(
+ // stateModule.length,
+ // (j) {
+ // stateModule[j]['onto'] = true;
+ // stateModule[j]['time'] =
+ // currentTime;
+ // stateModule[j]['mac'] = goalMac;
+ // stateModule[j]['person'] = person;
+ // return SleepDataModuleWidget(
+ // data: stateModule[j],
+ // );
+ // },
+ // )
+ // : [],
+ // );
+ // },
+ // ),
+ // ),
+ // ),
+ // );
return Expanded(
child: SingleChildScrollView(
child: Column(
- children: List.generate(
- deviceList.length,
- (i) {
+ children: [
+ SizedBox(height: 26.rpx), // 第一个上方间距
+ ...List.generate(deviceList.length, (i) {
String mac = macList[i];
List dailyDataList =
reportData[mac]!;
@@ -1011,63 +1088,66 @@ class _HomePageState extends State {
String currentTime = "";
String goalMac = targetDevice?['mac'];
var person = targetDevice?['person'];
- return DynamicReportDetailWidget(
- key: ValueKey(
- '${targetDevice!['mac']}_${homeController.model.type}'), // 添加唯一key
- targetDevice: targetDevice!,
- sleepDateWidgets: List.generate(
- dailyDataList.length,
- (j) {
- var dayData = dailyDataList[j];
- DateTime date =
- DateTime.fromMillisecondsSinceEpoch(
- dayData['time'] is String
- ? int.parse(dayData['time'])
- : dayData['time'],
- );
- if (dayData['selected'] != null &&
- dayData['selected'] == true &&
- dayData['state'] != null) {
- stateModule = dayData['state'];
- currentTime = dayData['time'];
- }
- return SleepDateWidget(
- mac: mac,
- time: dayData['time'],
- date: date,
- score: dayData['score']?['socre']
- ?.toString() ??
- '',
- comment: dayData['score']?['name'],
- textColor: dayData['score']
- ?['color'] ==
- null
- ? null
- : stringToColor(
- dayData['score']?['color']),
- isSelected: dayData['selected'],
- );
- },
- ),
- sleepDataModuleWidgets: stateModule
- .isNotEmpty
- ? List.generate(
- stateModule.length,
- (j) {
- stateModule[j]['onto'] = true;
- stateModule[j]['time'] =
- currentTime;
- stateModule[j]['mac'] = goalMac;
- stateModule[j]['person'] = person;
- return SleepDataModuleWidget(
- data: stateModule[j],
- );
- },
- )
- : [],
+
+ return Column(
+ children: [
+ DynamicReportDetailWidget(
+ key: ValueKey(
+ '${targetDevice!['mac']}_${homeController.model.type}'),
+ targetDevice: targetDevice!,
+ sleepDateWidgets: List.generate(
+ dailyDataList.length, (j) {
+ var dayData = dailyDataList[j];
+ DateTime date = DateTime
+ .fromMillisecondsSinceEpoch(
+ dayData['time'] is String
+ ? int.parse(dayData['time'])
+ : dayData['time'],
+ );
+ if (dayData['selected'] == true &&
+ dayData['state'] != null) {
+ stateModule = dayData['state'];
+ currentTime = dayData['time'];
+ }
+ return SleepDateWidget(
+ mac: mac,
+ time: dayData['time'],
+ date: date,
+ score: dayData['score']?['socre']
+ ?.toString() ??
+ '',
+ comment: dayData['score']?['name'],
+ textColor: dayData['score']
+ ?['color'] ==
+ null
+ ? null
+ : stringToColor(
+ dayData['score']?['color']),
+ isSelected: dayData['selected'],
+ );
+ }),
+ sleepDataModuleWidgets: stateModule
+ .isNotEmpty
+ ? List.generate(stateModule.length,
+ (j) {
+ stateModule[j]['onto'] = true;
+ stateModule[j]['time'] =
+ currentTime;
+ stateModule[j]['mac'] = goalMac;
+ stateModule[j]['person'] =
+ person;
+ return SleepDataModuleWidget(
+ data: stateModule[j]);
+ })
+ : [],
+ ),
+ SizedBox(
+ height:
+ 26.rpx), // 每个 widget 下方间距(包括最后一个)
+ ],
);
- },
- ),
+ }),
+ ],
),
),
);
diff --git a/lib/pages/main_bottom/mine_page.dart b/lib/pages/main_bottom/mine_page.dart
index 903bd7a..d23da87 100644
--- a/lib/pages/main_bottom/mine_page.dart
+++ b/lib/pages/main_bottom/mine_page.dart
@@ -629,13 +629,13 @@ class _MinePageState extends State {
// textColor:
// themeController.currentColor.sc2,
// );
- Get.toNamed("/newSleepReportPage",
- arguments: {
- 'date': DateTime.now()
- .millisecondsSinceEpoch,
- "mac": 'aaaaaaeeeeeq',
- 'type': 1
- });
+ // Get.toNamed("/newSleepReportPage",
+ // arguments: {
+ // 'date': DateTime.now()
+ // .millisecondsSinceEpoch,
+ // "mac": 'aaaaaaeeeeeq',
+ // 'type': 1
+ // });
}
},
child: Container(
diff --git a/lib/pages/mh_page/device/mht_blueteeth_device_page.dart b/lib/pages/mh_page/device/mht_blueteeth_device_page.dart
index 1155c68..75ffa9f 100644
--- a/lib/pages/mh_page/device/mht_blueteeth_device_page.dart
+++ b/lib/pages/mh_page/device/mht_blueteeth_device_page.dart
@@ -17,6 +17,7 @@ import 'package:vbvs_app/pages/mh_page/component/mht_bind_dialog.dart';
import 'package:vbvs_app/pages/mh_page/device/component/DeviceComponentWidget.dart';
import 'package:vbvs_app/pages/mh_page/device/controller/mht_bluetooth_controller.dart';
import 'package:vbvs_app/pages/mh_page/device/model/BlueToothDataModel.dart';
+import 'package:vbvs_app/pages/mh_page/searchWidget.dart';
class MHTBlueteethDevicePage extends StatefulWidget {
var deviceType;
@@ -146,7 +147,8 @@ class _MHTBlueteethDevicePageState extends State {
final filteredResults = results.where((r) {
final localName = r.advertisementData.localName;
final isTarget = r.rssi > signalThreshold &&
- isTargetDevice(localName, widget.deviceType['reg'].cast());
+ isTargetDevice(
+ localName, widget.deviceType['reg'].cast());
if (!isTarget) return false;
final name = r.advertisementData.advName.toLowerCase();
String macAddress = r.device.remoteId.str;
@@ -336,8 +338,8 @@ class _MHTBlueteethDevicePageState extends State {
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [
- stringToColor("FCFCFC"),
- stringToColor("CEECE3")
+ stringToColor("#003058").withOpacity(0.8),
+ stringToColor("#003058").withOpacity(0.8),
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
@@ -360,7 +362,7 @@ class _MHTBlueteethDevicePageState extends State {
: '扫描中'.tr,
style: TextStyle(
fontFamily: 'Inter',
- color: stringToColor("#003058"),
+ color: stringToColor("#FFFFFF"),
fontSize: 26.rpx,
letterSpacing: 0.0,
),
@@ -375,8 +377,10 @@ class _MHTBlueteethDevicePageState extends State {
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [
- stringToColor("FCFCFC"),
- stringToColor("CEECE3")
+ // stringToColor("FCFCFC"),
+ // stringToColor("CEECE3")
+ Colors.transparent,
+ Colors.transparent,
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
@@ -393,7 +397,7 @@ class _MHTBlueteethDevicePageState extends State {
'最小信号强度'.tr,
style: TextStyle(
fontFamily: 'Inter',
- color: stringToColor("#003058"),
+ color: stringToColor("#FFFFFF"),
fontSize: 26.rpx,
letterSpacing: 0.0,
),
@@ -423,7 +427,7 @@ class _MHTBlueteethDevicePageState extends State {
'${mhtBlueToothController.model.singal!.toInt()}',
style: TextStyle(
fontFamily: 'Inter',
- color: stringToColor("#003058"),
+ color: stringToColor("#FFFFFF"),
fontSize: 26.rpx,
letterSpacing: 0.0,
),
@@ -433,164 +437,194 @@ class _MHTBlueteethDevicePageState extends State {
),
),
),
- Container(
- width: double.infinity,
- decoration: BoxDecoration(
- color: themeController.currentColor.sc3,
- borderRadius: BorderRadius.circular(20.rpx),
- ),
- child: Padding(
- padding: EdgeInsetsDirectional.fromSTEB(
- 35.rpx, 0, 35.rpx, 0),
- child: Row(
- mainAxisSize: MainAxisSize.max,
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Expanded(
- child: Row(
- mainAxisSize: MainAxisSize.max,
- children: [
- Padding(
- padding: EdgeInsetsDirectional.fromSTEB(
- 0, 0.rpx, 0, 0),
- child: Container(
- width: 25.rpx,
- height: 25.rpx,
- decoration: BoxDecoration(),
- child: SvgPicture.asset(
- 'assets/img/icon/query.svg',
- fit: BoxFit.cover,
- color: stringToColor("#333333"),
- ),
- ),
- ),
- Expanded(
- child: Container(
- width: 100.rpx,
- height: 90.rpx,
- decoration: BoxDecoration(
- color: Colors.white,
- ),
- child: Align(
- alignment:
- AlignmentDirectional(-1, 0),
- child: TextFormField(
- initialValue:
- mhtBlueToothController
- .search.value,
- onChanged: (Value) {
- mhtBlueToothController
- .search.value = Value;
- },
- autofocus: false,
- obscureText: false,
- decoration: InputDecoration(
- isDense: true,
- labelStyle: TextStyle(
- fontFamily: 'Inter',
- fontSize: 26.rpx,
- letterSpacing: 0.0,
- ),
- hintText: '检索设备'.tr,
- hintStyle: TextStyle(
- fontFamily: 'Inter',
- fontSize: 26.rpx,
- letterSpacing: 0.0,
- ),
- enabledBorder:
- OutlineInputBorder(
- borderSide: BorderSide(
- color: Color(0x00000000),
- width: 1.rpx,
- ),
- borderRadius:
- BorderRadius.circular(
- 8.rpx),
- ),
- focusedBorder:
- OutlineInputBorder(
- borderSide: BorderSide(
- color: Color(0x00000000),
- width: 1.rpx,
- ),
- borderRadius:
- BorderRadius.circular(
- 8.rpx),
- ),
- errorBorder: OutlineInputBorder(
- borderSide: BorderSide(
- color: Colors.red,
- width: 1.rpx,
- ),
- borderRadius:
- BorderRadius.circular(
- 8.rpx),
- ),
- focusedErrorBorder:
- OutlineInputBorder(
- borderSide: BorderSide(
- color: Colors.red,
- width: 1.rpx,
- ),
- borderRadius:
- BorderRadius.circular(
- 8.rpx),
- ),
- filled: false,
- fillColor: themeController
- .currentColor.sc22,
- ),
- style: TextStyle(
- fontFamily: 'Inter',
- fontSize: 26.rpx,
- letterSpacing: 0.0,
- ),
- cursorColor:
- stringToColor("#003058"),
- ),
- ),
- ),
- ),
- ].divide(SizedBox(width: 6.rpx)),
- ),
- ),
- Padding(
- padding: EdgeInsetsDirectional.fromSTEB(
- 26.rpx, 0, 0, 0),
- child: Row(
- mainAxisSize: MainAxisSize.max,
- children: [
- SizedBox(
- height: 50.rpx,
- child: VerticalDivider(
- thickness: 2.rpx,
- color: stringToColor("#333333"),
- ),
- ),
- ClickableContainer(
- backgroundColor: Colors.transparent,
- highlightColor:
- themeController.currentColor.sc4,
- borderRadius: 6.rpx,
- padding: EdgeInsets.zero,
- onTap: () async {
- _startScanning();
- },
- child: Text(
- '搜索'.tr,
- style: TextStyle(
- fontFamily: 'Inter',
- fontSize: 30.rpx,
- letterSpacing: 0.0,
- color: stringToColor("#333333"),
- ),
- ),
- ),
- ].divide(SizedBox(width: 26.rpx)),
- ),
- ),
- ],
- ),
+ // Container(
+ // width: double.infinity,
+ // decoration: BoxDecoration(
+ // color: themeController.currentColor.sc3,
+ // borderRadius: BorderRadius.circular(20.rpx),
+ // ),
+ // // child: Padding(
+ // // padding: EdgeInsetsDirectional.fromSTEB(
+ // // 35.rpx, 0, 35.rpx, 0),
+ // // child: Row(
+ // // mainAxisSize: MainAxisSize.max,
+ // // mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ // // children: [
+ // // Expanded(
+ // // child: Row(
+ // // mainAxisSize: MainAxisSize.max,
+ // // children: [
+ // // Padding(
+ // // padding: EdgeInsetsDirectional.fromSTEB(
+ // // 0, 0.rpx, 0, 0),
+ // // child: Container(
+ // // width: 25.rpx,
+ // // height: 25.rpx,
+ // // decoration: BoxDecoration(),
+ // // child: SvgPicture.asset(
+ // // 'assets/img/icon/query.svg',
+ // // fit: BoxFit.cover,
+ // // color: stringToColor("#333333"),
+ // // ),
+ // // ),
+ // // ),
+ // // Expanded(
+ // // child: Container(
+ // // width: 100.rpx,
+ // // height: 90.rpx,
+ // // decoration: BoxDecoration(
+ // // color: Colors.white,
+ // // ),
+ // // child: Align(
+ // // alignment:
+ // // AlignmentDirectional(-1, 0),
+ // // child: TextFormField(
+ // // initialValue:
+ // // mhtBlueToothController
+ // // .search.value,
+ // // onChanged: (Value) {
+ // // mhtBlueToothController
+ // // .search.value = Value;
+ // // },
+ // // autofocus: false,
+ // // obscureText: false,
+ // // decoration: InputDecoration(
+ // // isDense: true,
+ // // labelStyle: TextStyle(
+ // // fontFamily: 'Inter',
+ // // fontSize: 26.rpx,
+ // // letterSpacing: 0.0,
+ // // ),
+ // // hintText: '检索设备'.tr,
+ // // hintStyle: TextStyle(
+ // // fontFamily: 'Inter',
+ // // fontSize: 26.rpx,
+ // // letterSpacing: 0.0,
+ // // ),
+ // // enabledBorder:
+ // // OutlineInputBorder(
+ // // borderSide: BorderSide(
+ // // color: Color(0x00000000),
+ // // width: 1.rpx,
+ // // ),
+ // // borderRadius:
+ // // BorderRadius.circular(
+ // // 8.rpx),
+ // // ),
+ // // focusedBorder:
+ // // OutlineInputBorder(
+ // // borderSide: BorderSide(
+ // // color: Color(0x00000000),
+ // // width: 1.rpx,
+ // // ),
+ // // borderRadius:
+ // // BorderRadius.circular(
+ // // 8.rpx),
+ // // ),
+ // // errorBorder: OutlineInputBorder(
+ // // borderSide: BorderSide(
+ // // color: Colors.red,
+ // // width: 1.rpx,
+ // // ),
+ // // borderRadius:
+ // // BorderRadius.circular(
+ // // 8.rpx),
+ // // ),
+ // // focusedErrorBorder:
+ // // OutlineInputBorder(
+ // // borderSide: BorderSide(
+ // // color: Colors.red,
+ // // width: 1.rpx,
+ // // ),
+ // // borderRadius:
+ // // BorderRadius.circular(
+ // // 8.rpx),
+ // // ),
+ // // filled: false,
+ // // fillColor: themeController
+ // // .currentColor.sc22,
+ // // ),
+ // // style: TextStyle(
+ // // fontFamily: 'Inter',
+ // // fontSize: 26.rpx,
+ // // letterSpacing: 0.0,
+ // // ),
+ // // cursorColor:
+ // // stringToColor("#003058"),
+ // // ),
+ // // ),
+ // // ),
+ // // ),
+ // // ].divide(SizedBox(width: 6.rpx)),
+ // // ),
+ // // ),
+ // // Padding(
+ // // padding: EdgeInsetsDirectional.fromSTEB(
+ // // 26.rpx, 0, 0, 0),
+ // // child: Row(
+ // // mainAxisSize: MainAxisSize.max,
+ // // children: [
+ // // SizedBox(
+ // // height: 50.rpx,
+ // // child: VerticalDivider(
+ // // thickness: 2.rpx,
+ // // color: stringToColor("#333333"),
+ // // ),
+ // // ),
+ // // ClickableContainer(
+ // // backgroundColor: Colors.transparent,
+ // // highlightColor:
+ // // themeController.currentColor.sc4,
+ // // borderRadius: 6.rpx,
+ // // padding: EdgeInsets.zero,
+ // // onTap: () async {
+ // // _startScanning();
+ // // },
+ // // child: Text(
+ // // '搜索'.tr,
+ // // style: TextStyle(
+ // // fontFamily: 'Inter',
+ // // fontSize: 30.rpx,
+ // // letterSpacing: 0.0,
+ // // color: stringToColor("#333333"),
+ // // ),
+ // // ),
+ // // ),
+ // // ].divide(SizedBox(width: 26.rpx)),
+ // // ),
+ // // ),
+ // // ],
+ // // ),
+ // // ),
+ // child: Padding(
+ // padding:
+ // EdgeInsetsDirectional.fromSTEB(0, 10, 0, 23),
+ // child: SearchWidget(
+ // keyword: mhtBlueToothController.search.value,
+ // color: Colors.red,
+ // hint: "检索设备",
+ // onChange: (d) {
+ // mhtBlueToothController.search.value = d;
+ // },
+ // findCallback: () {
+ // // controller.getDeviceList();
+ // },
+ // ),
+ // ),
+ // ),
+ Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0),
+ child: SearchWidget(
+ padding: EdgeInsets.all(0),
+ keyword: mhtBlueToothController.search.value,
+ color: Colors.red,
+ hint: "检索设备",
+ onChange: (d) {
+ mhtBlueToothController.search.value = d;
+ },
+ findCallback: () {
+ _startScanning();
+ },
),
),
Padding(
diff --git a/lib/pages/mh_page/homepage/new_Home_page.dart b/lib/pages/mh_page/homepage/new_Home_page.dart
index c04c77f..1541314 100644
--- a/lib/pages/mh_page/homepage/new_Home_page.dart
+++ b/lib/pages/mh_page/homepage/new_Home_page.dart
@@ -574,6 +574,8 @@ class _NewHomePageState extends State {
'date': DateTime
.now()
.millisecondsSinceEpoch,
+ 'person_show':
+ false,
},
);
}
@@ -665,6 +667,8 @@ class _NewHomePageState extends State {
'date':
timeMillis,
// 'backgroundColor':stringToColor("#003058"),
+ 'person_show':
+ false,
},
);
},
diff --git a/lib/pages/mh_page/searchWidget.dart b/lib/pages/mh_page/searchWidget.dart
index ad7e729..c71ab6a 100644
--- a/lib/pages/mh_page/searchWidget.dart
+++ b/lib/pages/mh_page/searchWidget.dart
@@ -11,18 +11,21 @@ class SearchWidget extends GetView {
String? hint;
Function? onChange;
Function? findCallback;
+ final EdgeInsetsGeometry? padding; // 新增 padding 参数
- SearchWidget(
- {required this.keyword,
- required this.color,
- this.hint = "请输入关键字",
- this.findCallback,
- this.onChange});
+ SearchWidget({
+ required this.keyword,
+ required this.color,
+ this.hint = "请输入关键字",
+ this.findCallback,
+ this.onChange,
+ this.padding, // 传入 padding 参数
+ });
@override
Widget build(BuildContext context) {
return Padding(
- padding: EdgeInsetsDirectional.fromSTEB(30.rpx, 0, 30.rpx, 0),
+ padding: padding ?? EdgeInsetsDirectional.fromSTEB(30.rpx, 0, 30.rpx, 0), // 使用传入的 padding 或默认值
child: Container(
width: double.infinity,
decoration: BoxDecoration(
@@ -42,7 +45,6 @@ class SearchWidget extends GetView {
Container(
width: 25.rpx,
height: 25.rpx,
- // width: double.infinity,
decoration: BoxDecoration(),
child: SvgPicture.asset(
'assets/img/icon/query.svg',
@@ -112,11 +114,6 @@ class SearchWidget extends GetView {
color: Colors.black,
letterSpacing: 0.0,
),
- // cursorColor:
- // FlutterFlowTheme.of(context).primaryText,
- // validator: _model
- // .textControllerValidator
- // .asValidator(context),
onChanged: (d) {
onChange?.call(d);
},
diff --git a/lib/pages/mh_page/test/WebviewTestModel.dart b/lib/pages/mh_page/test/WebviewTestModel.dart
index aaa1737..1de75b0 100644
--- a/lib/pages/mh_page/test/WebviewTestModel.dart
+++ b/lib/pages/mh_page/test/WebviewTestModel.dart
@@ -278,13 +278,18 @@ class WebviewTestController extends GetControllerEx {
class WebviewTestView extends GetComponent {
WebviewTestView({super.key, super.oncreate});
- // @override
- // WebviewTestController newinstance() {
- // if (ef.kvRoot.WebviewTestController == null) {
- // ef.kvRoot.WebviewTestController = WebviewTestController();
- // }
- // return ef.kvRoot.WebviewTestController;
- // }
+ @override
+ WebviewTestController newinstance() {
+ if (ef.kvRoot.WebviewTestController == null) {
+ ef.kvRoot.WebviewTestController = WebviewTestController();
+ if (Get.isRegistered() == false) {
+ Get.put(ef.kvRoot.WebviewTestController);
+ WebviewTestController webviewTestController = Get.find();
+ return webviewTestController;
+ }
+ }
+ return ef.kvRoot.WebviewTestController;
+ }
@override
Widget build(BuildContext context) {
diff --git a/lib/pages/person/person_page.dart b/lib/pages/person/person_page.dart
index 73e7a7f..fdacbfd 100644
--- a/lib/pages/person/person_page.dart
+++ b/lib/pages/person/person_page.dart
@@ -742,6 +742,9 @@ class _EPageState extends State {
),
),
),
+ SizedBox(
+ height: 20.rpx,
+ ),
],
),
),
diff --git a/lib/pages/repair/apply_repair_page.dart b/lib/pages/repair/apply_repair_page.dart
index 26d5318..bc582df 100644
--- a/lib/pages/repair/apply_repair_page.dart
+++ b/lib/pages/repair/apply_repair_page.dart
@@ -160,64 +160,65 @@ class _ApplyRepairPageState extends State {
mainAxisSize: MainAxisSize.max,
children: [
Obx(() {
- return Row(
- mainAxisSize: MainAxisSize.max,
- children: deviceTypeController.deviceTypeList.value
- .map(
- (deviceType) => CustomCard(
- borderRadius:
- AppConstants().button_container_radius,
- onTap: () async {
- repairController.device_type.value =
- deviceType['type'];
- repairController.repairList
- .clear(); // 清空旧数据
- repairController.repairList
- .add({}); // 添加新数据
- await bodyDeviceController
- .getDeviceList(); // 等待数据加载
- _updateRepairItemKeys(); // 清空后更新 keys
- repairController
- .updateAll(); // 手动触发更新(如果未自动更新)
- },
- colors: deviceType['type'] ==
- repairController.device_type.value
- ? [
- themeController.currentColor.sc1,
- themeController.currentColor.sc2,
- ]
- : [themeController.currentColor.sc5],
- child: Container(
- width: (MediaQuery.sizeOf(context).width *
- 0.284)
- .rpx,
- constraints: BoxConstraints(
- minWidth: 213.rpx,
- minHeight: 91.rpx,
- ),
- decoration: BoxDecoration(
- borderRadius:
- BorderRadius.circular(20.rpx),
- ),
- child: Align(
- alignment: AlignmentDirectional(0, 0),
- child: Text(
- deviceType[
- 'name'], // 假设 deviceType 有 name 字段
- style: TextStyle(
- letterSpacing: 0.0,
- color:
- themeController.currentColor.sc3,
- fontSize: AppConstants()
- .normal_text_fontSize,
+ return SingleChildScrollView(
+ scrollDirection: Axis.horizontal, // 横向滚动
+ child: Row(
+ mainAxisSize: MainAxisSize.min, // 设置为 min,避免撑满父组件宽度
+ children: deviceTypeController.deviceTypeList.value
+ .map(
+ (deviceType) => CustomCard(
+ borderRadius:
+ AppConstants().button_container_radius,
+ onTap: () async {
+ repairController.device_type.value =
+ deviceType['type'];
+ repairController.repairList
+ .clear(); // 清空旧数据
+ repairController.repairList
+ .add({}); // 添加新数据
+ await bodyDeviceController
+ .getDeviceList(); // 等待数据加载
+ _updateRepairItemKeys(); // 清空后更新 keys
+ repairController.updateAll(); // 手动触发更新
+ },
+ colors: deviceType['type'] ==
+ repairController.device_type.value
+ ? [
+ themeController.currentColor.sc1,
+ themeController.currentColor.sc2,
+ ]
+ : [themeController.currentColor.sc5],
+ child: Container(
+ width: (MediaQuery.sizeOf(context).width *
+ 0.284)
+ .rpx,
+ constraints: BoxConstraints(
+ minWidth: 213.rpx,
+ minHeight: 91.rpx,
+ ),
+ decoration: BoxDecoration(
+ borderRadius:
+ BorderRadius.circular(20.rpx),
+ ),
+ child: Align(
+ alignment: AlignmentDirectional(0, 0),
+ child: Text(
+ deviceType['name'],
+ style: TextStyle(
+ letterSpacing: 0.0,
+ color: themeController
+ .currentColor.sc3,
+ fontSize: AppConstants()
+ .normal_text_fontSize,
+ ),
),
),
),
),
- ),
- )
- .toList()
- .divide(SizedBox(width: 25.rpx)),
+ )
+ .toList()
+ .divide(SizedBox(width: 25.rpx)),
+ ),
);
}),
Obx(() {
diff --git a/lib/pages/repair/repair_list_page.dart b/lib/pages/repair/repair_list_page.dart
index 1674d93..469c9a9 100644
--- a/lib/pages/repair/repair_list_page.dart
+++ b/lib/pages/repair/repair_list_page.dart
@@ -102,7 +102,7 @@ class _RepairListPageState extends State {
child: Obx(() {
final isEmpty = repairController.repairHistory.value.isEmpty;
if (isEmpty) {
- return Expanded(child: NullDataWidget());
+ return NullDataWidget();
}
return SingleChildScrollView(
child: Column(
diff --git a/lib/pages/sleep_report/chart/DataShowWidget.dart b/lib/pages/sleep_report/chart/DataShowWidget.dart
index aa2090d..cf5c155 100644
--- a/lib/pages/sleep_report/chart/DataShowWidget.dart
+++ b/lib/pages/sleep_report/chart/DataShowWidget.dart
@@ -77,7 +77,7 @@ class _DataShowWidgetState extends State {
),
// 放入传入的 widget3
Container(
- width: MediaQuery.sizeOf(context).width * 0.2, // 固定宽度
+ width: MediaQuery.sizeOf(context).width * 0.25, // 固定宽度
decoration: BoxDecoration(),
child: Align(
alignment: widget.alignment == MainAxisAlignment.start
@@ -90,7 +90,7 @@ class _DataShowWidgetState extends State {
),
// 放入传入的 widget4
Container(
- width: MediaQuery.sizeOf(context).width * 0.15, // 固定宽度
+ width: MediaQuery.sizeOf(context).width * 0.1, // 固定宽度
decoration: BoxDecoration(),
child: Align(
alignment: widget.alignment == MainAxisAlignment.start
diff --git a/lib/pages/sleep_report/component/HeartChangeWidget.dart b/lib/pages/sleep_report/component/HeartChangeWidget.dart
index 13aa542..d36c9a6 100644
--- a/lib/pages/sleep_report/component/HeartChangeWidget.dart
+++ b/lib/pages/sleep_report/component/HeartChangeWidget.dart
@@ -148,7 +148,7 @@ class _HeartChangeWidgetState extends State {
alignment: MainAxisAlignment.center,
widget1: Row(
children: [
- Expanded(
+ Flexible(
child: Text(
'${data['name']}',
maxLines: 1,
@@ -186,7 +186,7 @@ class _HeartChangeWidgetState extends State {
width: 17.rpx,
height: 17.rpx,
child: SvgPicture.asset(
- 'assets/img/icon/explain.svg',
+ 'assets/img/icon/question.svg',
fit: BoxFit.cover,
color: Colors.white,
),
diff --git a/lib/pages/xiaoe/xiaoe_page.dart b/lib/pages/xiaoe/xiaoe_page.dart
index bc94604..4574c0c 100644
--- a/lib/pages/xiaoe/xiaoe_page.dart
+++ b/lib/pages/xiaoe/xiaoe_page.dart
@@ -65,7 +65,7 @@ class _XiaoEPageState extends State {
children: [
/// 居中标题
Text(
- '健康报告'.tr,
+ '小e'.tr,
style: TextStyle(
fontFamily: 'Readex Pro',
color: themeController.currentColor.sc3,