From 8a69c905723e54b3e0cb7c43a47d7528f68cc53d Mon Sep 17 00:00:00 2001
From: czz <862977248@qq.com>
Date: Mon, 30 Jun 2025 20:35:02 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=88=86=E4=BA=AB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/taihe/mianhuatang/MainActivity.kt | 2 +-
assets/img/icon/expand_down.svg | 1 +
assets/mhlangs/zh_CN.json | 3 +-
.../device/device_share_controller.dart | 56 +--
.../mhdevice_share_controller.dart | 53 ++-
lib/main.dart | 1 +
lib/pages/mh_page/MhMessageList.dart | 113 +++----
.../mh_page/ShareDeviceDetailWidget.dart | 319 ++++++++++++++++++
lib/pages/mh_page/ShareUserWidget.dart | 6 +-
lib/pages/mh_page/about_us.dart | 2 +-
.../applyRepair/apply_repair_success.dart | 60 ++--
lib/pages/mh_page/device/device.dart | 202 ++++++-----
lib/pages/mh_page/device_share_page.dart | 2 +-
lib/pages/mh_page/edit_bed.dart | 13 +-
lib/pages/mh_page/message/messageDetail.dart | 262 ++++++++++++++
lib/pages/mh_page/message_page.dart | 1 +
lib/pages/mh_page/room_picker.dart | 14 +-
lib/routers/mh_routers.dart | 5 +
18 files changed, 908 insertions(+), 207 deletions(-)
create mode 100644 assets/img/icon/expand_down.svg
create mode 100644 lib/pages/mh_page/ShareDeviceDetailWidget.dart
create mode 100644 lib/pages/mh_page/message/messageDetail.dart
diff --git a/android/app/src/main/kotlin/com/taihe/mianhuatang/MainActivity.kt b/android/app/src/main/kotlin/com/taihe/mianhuatang/MainActivity.kt
index 8537ae0..38032ef 100644
--- a/android/app/src/main/kotlin/com/taihe/mianhuatang/MainActivity.kt
+++ b/android/app/src/main/kotlin/com/taihe/mianhuatang/MainActivity.kt
@@ -1,4 +1,4 @@
-package com.taihe.vbvs_app
+package com.taihe.mh_app
import io.flutter.embedding.android.FlutterActivity
diff --git a/assets/img/icon/expand_down.svg b/assets/img/icon/expand_down.svg
new file mode 100644
index 0000000..62df4b9
--- /dev/null
+++ b/assets/img/icon/expand_down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/mhlangs/zh_CN.json b/assets/mhlangs/zh_CN.json
index 844a75a..e809a21 100644
--- a/assets/mhlangs/zh_CN.json
+++ b/assets/mhlangs/zh_CN.json
@@ -204,6 +204,7 @@
"请选择体重": "请输入体重",
"请选择身高": "请输入身高",
"人员资料": "人员资料",
- "请输入姓名": "请输入姓名"
+ "请输入姓名": "请输入姓名",
+ "解除分享":"解除分享"
}
\ No newline at end of file
diff --git a/lib/controller/device/device_share_controller.dart b/lib/controller/device/device_share_controller.dart
index 7e09f47..08854a9 100644
--- a/lib/controller/device/device_share_controller.dart
+++ b/lib/controller/device/device_share_controller.dart
@@ -52,16 +52,16 @@ class DeviceShareController extends GetControllerEx {
String serviceApi = ServiceConstant.device_type;
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
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";
- }
- }
+ 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);
if (response != null) {
var responseData =
@@ -100,16 +100,16 @@ class DeviceShareController extends GetControllerEx {
String serviceApi = ServiceConstant.device_share;
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
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";
- }
+ 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 data = {"type": 1, "userName": account.value, "mac": mac};
var response =
await EasyDartModule.dio.post(queryUrl, data: jsonEncode(data));
@@ -158,16 +158,16 @@ class DeviceShareController extends GetControllerEx {
String serviceApi = ServiceConstant.device_share;
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
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";
- }
+ 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";
}
+ }
final data = {
"code": shareCode,
};
diff --git a/lib/controller/mh_controller/mhdevice_share_controller.dart b/lib/controller/mh_controller/mhdevice_share_controller.dart
index 40f1e9d..b3d24b8 100644
--- a/lib/controller/mh_controller/mhdevice_share_controller.dart
+++ b/lib/controller/mh_controller/mhdevice_share_controller.dart
@@ -67,7 +67,7 @@ class MHDeviceShareController extends GetControllerEx {
}
if (!MyUtils.isValidPhoneNumber(model.account!) &&
!MyUtils.isValidEmail(model.account!)) {
- apiResponse.msg = '请输入正确的手机号'.tr;
+ apiResponse.msg = '请输入正确的手机号/邮箱号'.tr;
return apiResponse;
}
String serviceAddress = ServiceConstant.service_address;
@@ -133,4 +133,55 @@ class MHDeviceShareController extends GetControllerEx {
},
);
}
+
+ Future confirmShare(String shareCode) async {
+ EasyDartModule.logger.info("确认消息分享");
+ DailyLogUtils.writeLog("确认消息分享");
+ try {
+ ApiResponse apiResponse = ApiResponse(code: -1, msg: "请求失败".tr);
+ if (shareCode == null || shareCode.isEmpty) {
+ apiResponse.msg = "请求失败".tr;
+ return apiResponse;
+ }
+ String serviceAddress = ServiceConstant.service_address;
+ String serviceName = ServiceConstant.server_service;
+ String serviceApi = ServiceConstant.device_share;
+ String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
+ 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";
+ }
+ }
+ final data = {
+ "code": shareCode,
+ };
+ var response =
+ await EasyDartModule.dio.put(queryUrl, data: jsonEncode(data));
+ if (response != null) {
+ if (response.data['code'] != HttpStatusCodes.ok) {
+ apiResponse.msg = response.data['msg'];
+ apiResponse.code = response.data['code'];
+ return apiResponse;
+ }
+ var responseData =
+ response.data is String ? jsonDecode(response.data) : response.data;
+ ApiResponse res =
+ ApiResponse.fromJson(responseData, (object) => object);
+ MyUtils.formatResponse(res, "操作成功".tr, "操作失败".tr);
+ return res;
+ } else {
+ return ApiResponse(code: -1, msg: "服务器.失败".tr);
+ }
+ } catch (e) {
+ EasyDartModule.logger.info("确认消息分享失败->$e");
+ DailyLogUtils.writeLog("确认消息分享失败->$e");
+ return ApiResponse(code: -1, msg: "服务器.失败".tr);
+ }
+ }
}
diff --git a/lib/main.dart b/lib/main.dart
index 912d67f..2e538fd 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -357,6 +357,7 @@ class MyApp extends StatelessWidget {
Get.lazyPut(() => SleepReportController()),
Get.lazyPut(() => CalendarController()),
Get.lazyPut(() => UserPdfController()),
+ Get.lazyPut(() => PrivacyPdfController()),
Get.put(WebviewTestController()),
]));
}
diff --git a/lib/pages/mh_page/MhMessageList.dart b/lib/pages/mh_page/MhMessageList.dart
index d78605d..6afc202 100644
--- a/lib/pages/mh_page/MhMessageList.dart
+++ b/lib/pages/mh_page/MhMessageList.dart
@@ -39,7 +39,7 @@ class _MhMessageListWidgetState extends State {
highlightColor: Color(0xFF055466),
borderRadius: 20.rpx,
padding:
- EdgeInsetsDirectional.fromSTEB(31.rpx, 33.rpx, 0.rpx, 33.rpx),
+ EdgeInsetsDirectional.fromSTEB(31.rpx, 33.rpx, 26.rpx, 26.rpx),
onTap: () {},
child: Column(
mainAxisSize: MainAxisSize.max,
@@ -95,66 +95,65 @@ class _MhMessageListWidgetState extends State {
),
].divide(SizedBox(width: 30.rpx)),
),
- ],
- ),
- ),
- if (messageInfo['type'] == 'app_system')
- Positioned(
- bottom: 46.rpx,
- right: 20.rpx,
- child: Container(
- width: 123.rpx,
- height: 47.rpx,
- child: CustomCard(
- borderRadius: AppConstants().button_container_radius, // 直角
- colors: messageInfo['status'] == 1
- ? [
- themeController.currentColor.sc1,
- themeController.currentColor.sc2
- ]
- : [themeController.currentColor.sc4], // 单色背景
- enableAnimation: true, // 有点击缩放动画
- enableGradient: false, // 不用渐变
- onTap: () {
- if (messageInfo['status'] == 1) {
- showConfirmDialog(context, Container(), "是否确认接受该设备".tr,
- onConfirm: () async {
- ApiResponse apiResponse = await deviceShareController
- .confirmShare(messageInfo['data']['shareCode']);
- if (apiResponse.code == HttpStatusCodes.ok) {
- TopSlideNotification.show(
- context,
- text: apiResponse.msg!,
- textColor: themeController.currentColor.sc2,
- );
- messageController.getMessageList();
- messageController.updateAll();
- } else {
- TopSlideNotification.show(
- context,
- text: apiResponse.msg!,
- textColor: themeController.currentColor.sc9,
- );
- messageController.getMessageList();
- messageController.updateAll();
- }
- }, onCancel: () {});
- }
- },
- child: Center(
- child: Text(
- getMessageStatus(messageInfo['status']),
- style: TextStyle(
- fontFamily: 'Inter',
- fontSize: 26.rpx,
- letterSpacing: 0.0,
- color: Colors.white,
+ if (messageInfo['type'] == 'app_system')
+
+ // // right: 26.rpx,
+ // left: 26.rpx,
+ Container(
+ // width: 123.rpx,
+ height: 61.rpx,
+ child: CustomCard(
+ borderRadius: 16.rpx, // 直角
+ gradientDirection: GradientDirection.vertical,
+ colors: [Color(0xFF84F5FF)],
+ enableAnimation: true, // 有点击缩放动画
+ enableGradient: false, // 不用渐变
+ onTap: () {
+ // if (messageInfo['status'] == 1) {
+ // showConfirmDialog(
+ // context, Container(), "是否确认接受该设备".tr,
+ // onConfirm: () async {
+ // ApiResponse apiResponse =
+ // await deviceShareController.confirmShare(
+ // messageInfo['data']['shareCode']);
+ // if (apiResponse.code == HttpStatusCodes.ok) {
+ // TopSlideNotification.show(
+ // context,
+ // text: apiResponse.msg!,
+ // textColor: themeController.currentColor.sc2,
+ // );
+ // messageController.getMessageList();
+ // messageController.updateAll();
+ // } else {
+ // TopSlideNotification.show(
+ // context,
+ // text: apiResponse.msg!,
+ // textColor: themeController.currentColor.sc9,
+ // );
+ // messageController.getMessageList();
+ // messageController.updateAll();
+ // }
+ // }, onCancel: () {});
+ // }
+ Get.toNamed('/messageDetail', arguments: messageInfo);
+ },
+ child: Center(
+ child: Text(
+ // getMessageStatus(messageInfo['status']),
+ "查看详情",
+ style: TextStyle(
+ fontFamily: 'Inter',
+ fontSize: 26.rpx,
+ letterSpacing: 0.0,
+ color: Color(0xFF011D33),
+ ),
+ ),
),
),
),
- ),
- ),
+ ],
),
+ ),
],
);
}
diff --git a/lib/pages/mh_page/ShareDeviceDetailWidget.dart b/lib/pages/mh_page/ShareDeviceDetailWidget.dart
new file mode 100644
index 0000000..750d55b
--- /dev/null
+++ b/lib/pages/mh_page/ShareDeviceDetailWidget.dart
@@ -0,0 +1,319 @@
+import 'package:ef/base/widget/flutterflow/FlutterFlowTheme.dart';
+import 'package:ef/ef.dart';
+import 'package:flutter/material.dart';
+import 'package:flutterflow_ui/flutterflow_ui.dart';
+import 'package:vbvs_app/common/color/appColors.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/component/tool/CustomCard.dart';
+import 'package:vbvs_app/controller/mh_controller/mhdevice_share_controller.dart';
+import 'package:vbvs_app/pages/common/selectDialog.dart';
+
+import '../../common/color/appFontsize.dart';
+
+class ShareDeviceDetailWidget extends GetView {
+ final scaffoldKey = GlobalKey();
+
+ @override
+ Widget build(BuildContext context) {
+ MHDeviceShareController deviceShareController = Get.find();
+ var shareInfo = deviceShareController.model.mainShare;
+ RxInt type = 1.obs;
+ type.value = shareInfo['op_type'];
+
+ return GestureDetector(
+ onTap: () => FocusScope.of(context).unfocus(),
+ child: Scaffold(
+ key: scaffoldKey,
+ backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
+ appBar: AppBar(
+ backgroundColor: Colors.transparent,
+ automaticallyImplyLeading: false,
+ iconTheme: IconThemeData(color: Colors.white),
+ titleSpacing: 0,
+ // leading: returnIconButtomAddCallback(() {
+ // controller.saveDataApi();
+ // updateParm(isShowToast: false);
+ // }),
+ // leading: returnIconButtomNew,
+ title: Container(
+ width: double.infinity,
+ height: 180.rpx,
+ child: Stack(
+ alignment: Alignment.center,
+ children: [
+ // 中间居中的标题
+ Text(
+ '详情',
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: 30.rpx,
+ ),
+ ),
+ // 左侧图标
+ Positioned(
+ left: 20.rpx,
+ child: returnIconButtomNew,
+ ),
+ ],
+ ),
+ ),
+
+ actions: [],
+ centerTitle: false,
+ ),
+ body: Container(
+ width: MediaQuery.sizeOf(context).width,
+ height: MediaQuery.sizeOf(context).height * 1,
+ decoration: BoxDecoration(
+ color: Color(0xFFF6F6F6),
+ ),
+ child: Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(15, 0, 15, 0),
+ child: Column(
+ mainAxisSize: MainAxisSize.max,
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(0, 13, 0, 0),
+ child: Container(
+ width: MediaQuery.sizeOf(context).width,
+ decoration: BoxDecoration(
+ color: FlutterFlowTheme.of(context).secondaryBackground,
+ borderRadius: BorderRadius.circular(8),
+ ),
+ child: Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(16, 13, 16, 15),
+ child: Column(
+ mainAxisSize: MainAxisSize.max,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Column(
+ mainAxisSize: MainAxisSize.max,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text(
+ '${shareInfo['userName']}',
+ style: FlutterFlowTheme.of(context)
+ .bodyMedium
+ .override(
+ fontFamily: 'Readex Pro',
+ color: Color(0xFF333333),
+ fontSize: 15,
+ letterSpacing: 0.0,
+ fontWeight: FontWeight.bold,
+ ),
+ ),
+ Text(
+ '分享时间:${MyUtils.timestampToDateString(int.parse(shareInfo['startTime'].toString()))}',
+ style: FlutterFlowTheme.of(context)
+ .bodyMedium
+ .override(
+ fontFamily: 'Readex Pro',
+ color: Color(0xFF9EA4B7),
+ fontSize: 11,
+ letterSpacing: 0.0,
+ ),
+ ),
+ ].divide(SizedBox(height: 5)),
+ ),
+ Obx(
+ () => GestureDetector(
+ onTap: () {
+ // 当点击时,将 type 设置为 0(允许控制)
+ type.value = 1;
+ controller.updateAll();
+ },
+ child: Container(
+ width: MediaQuery.sizeOf(context).width,
+ constraints: BoxConstraints(
+ minHeight: 46,
+ ),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(0),
+ ),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ mainAxisAlignment:
+ MainAxisAlignment.spaceBetween,
+ children: [
+ Text(
+ '允许对方控制该设备'.tr,
+ style: FlutterFlowTheme.of(context)
+ .bodyMedium
+ .override(
+ fontFamily: 'Readex Pro',
+ color: Color(0xFF333333),
+ fontSize: 13,
+ letterSpacing: 0.0,
+ ),
+ ),
+ Align(
+ alignment: AlignmentDirectional(0, -1),
+ child: Icon(
+ type.value == 1
+ ? Icons.check_circle // 选中时为实心圆
+ : Icons
+ .radio_button_unchecked, // 未选中时为空心圆
+ color: type.value == 1
+ ? Color(0xFFD3B684) // 选中时的颜色
+ : Colors.grey, // 未选中时的颜色
+ size: 18,
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ),
+ Obx(
+ () => GestureDetector(
+ onTap: () {
+ // 当点击时,将 type 设置为 1(仅允许查看)
+ type.value = 2;
+ controller.updateAll();
+ },
+ child: Container(
+ width: MediaQuery.sizeOf(context).width,
+ constraints: BoxConstraints(
+ minHeight: 46,
+ ),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(0),
+ ),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ mainAxisAlignment:
+ MainAxisAlignment.spaceBetween,
+ children: [
+ Text(
+ '仅允许对方查看该设备'.tr,
+ style: FlutterFlowTheme.of(context)
+ .bodyMedium
+ .override(
+ fontFamily: 'Readex Pro',
+ color: Color(0xFF333333),
+ fontSize: 13,
+ letterSpacing: 0.0,
+ ),
+ ),
+ Align(
+ alignment: AlignmentDirectional(0, -1),
+ child: Icon(
+ type.value == 2
+ ? Icons.check_circle // 选中时为实心圆
+ : Icons
+ .radio_button_unchecked, // 未选中时为空心圆
+ color: type.value == 2
+ ? Color(0xFFD3B684) // 选中时的颜色
+ : Colors.grey, // 未选中时的颜色
+ size: 18,
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ),
+ ].divide(SizedBox(height: 13)),
+ ),
+ ),
+ ),
+ ),
+ Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(
+ 15, 0, 15, AppConstants.page_button_bottom_padding),
+ child: Container(
+ width: MediaQuery.sizeOf(context).width,
+ height: MediaQuery.sizeOf(context).height * 0.056,
+ constraints: BoxConstraints(
+ minHeight: 46,
+ ),
+ decoration: BoxDecoration(
+ color: FlutterFlowTheme.of(context).secondaryBackground,
+ ),
+ child: Container(
+ width: MediaQuery.sizeOf(context).width,
+ height: MediaQuery.sizeOf(context).height * 0.056,
+ decoration: BoxDecoration(
+ color:
+ FlutterFlowTheme.of(context).secondaryBackground,
+ borderRadius: BorderRadius.circular(12),
+ ),
+ child: CustomCard(
+ borderRadius: 16.rpx,
+ gradientDirection: GradientDirection.vertical,
+ onTap: () async {},
+ colors: const [
+ Color(0xFFFCFCFC),
+ Color(0xFFF8FAF9),
+ Color(0XFFECF6F3),
+ Color(0XFFD9F0E9),
+ Color(0xFFCEECE3)
+ ],
+ child: Container(
+ width: double.infinity,
+ height: 90.rpx,
+ alignment: Alignment.center,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(6),
+ ),
+ child: Text("解除分享".tr,
+ style: TextStyle(
+ color: const Color(0xFF003058),
+ fontSize: 30.rpx,
+ )),
+ ),
+ )
+
+ // FFButtonWidget(
+ // onPressed: () {
+ // showCustomConfirmDialog(context, "是否确定删除?").then((v) {
+ // if ('confirm' == v) {
+ // // deviceShareController
+ // // .deleteShare(shareInfo)
+ // // .then((d) {
+ // // deviceShareController.initData();
+ // // deviceShareController.updateAll();
+ // // Get.back();
+ // // });
+ // // print("showCustomConfirmDialog $v");
+ // }
+ // });
+ // },
+ // text: '删除',
+ // options: FFButtonOptions(
+ // height: 40,
+ // padding: EdgeInsetsDirectional.fromSTEB(24, 0, 24, 0),
+ // iconPadding:
+ // EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0),
+ // color: Color(0xFFE55E92),
+ // textStyle:
+ // FlutterFlowTheme.of(context).titleSmall.override(
+ // fontFamily: 'Readex Pro',
+ // color: Colors.white,
+ // fontSize: 13,
+ // letterSpacing: 0.0,
+ // ),
+ // elevation: 3,
+ // borderSide: BorderSide(
+ // color: Colors.transparent,
+ // width: 1,
+ // ),
+ // borderRadius: BorderRadius.circular(8),
+ // ),
+ // ),
+
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+}
diff --git a/lib/pages/mh_page/ShareUserWidget.dart b/lib/pages/mh_page/ShareUserWidget.dart
index c47fde7..744208a 100644
--- a/lib/pages/mh_page/ShareUserWidget.dart
+++ b/lib/pages/mh_page/ShareUserWidget.dart
@@ -20,7 +20,7 @@ class ShareUserWidget extends GetView {
onTap: () {
repairListController.model.mainShare =
repairListController.model.shareUser![index];
- Get.toNamed('/share_device_user_detail');
+ Get.toNamed('/shareDeviceDetail');
},
child: Container(
width: MediaQuery.sizeOf(context).width,
@@ -77,9 +77,9 @@ class ShareUserWidget extends GetView {
child: Align(
alignment: const AlignmentDirectional(-1, 0),
child: Text(
- info['opType'] == 1
+ info['op_type'] == 1
? '允许对方控制该设备'.tr
- : info['opType'] == 2
+ : info['op_type'] == 2
? '仅允许对方查看该设备'.tr
: '',
style: TextStyle(
diff --git a/lib/pages/mh_page/about_us.dart b/lib/pages/mh_page/about_us.dart
index c4e2d96..643b37a 100644
--- a/lib/pages/mh_page/about_us.dart
+++ b/lib/pages/mh_page/about_us.dart
@@ -21,7 +21,7 @@ class _MhAboutUsPageState extends State {
widget.webView = MyWebView(
url: AppConstants().ent_type == 1
- ? "https://mp.weixin.qq.com/s/IAr4RNBy0hGJXGKyMxe7eQ"
+ ? "https://mp.weixin.qq.com/s/BrD3fTT2J2R-DxZrUuM4rw"
: "https://mp.weixin.qq.com/s/7BvvprVDqX1eOzM3Lms8dg",
onLoad: () {
print('网页载入完毕');
diff --git a/lib/pages/mh_page/applyRepair/apply_repair_success.dart b/lib/pages/mh_page/applyRepair/apply_repair_success.dart
index 01afb14..3eab052 100644
--- a/lib/pages/mh_page/applyRepair/apply_repair_success.dart
+++ b/lib/pages/mh_page/applyRepair/apply_repair_success.dart
@@ -38,7 +38,7 @@ class _ApplyRepairSuccessState extends State {
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/images/new_background.png'), // 本地图片
- fit: BoxFit.fill, // 填满整个 Container
+ fit: BoxFit.contain, // 填满整个 Container
),
),
child: Scaffold(
@@ -61,11 +61,11 @@ class _ApplyRepairSuccessState extends State {
Text(
'报修成功标题'.tr,
style: TextStyle(
- fontFamily: 'Readex Pro',
- color: themeController.currentColor.sc3,
- letterSpacing: 0,
- fontSize: 30.rpx,
- ),
+ fontFamily: 'Readex Pro',
+ color: themeController.currentColor.sc3,
+ letterSpacing: 0,
+ fontSize: 30.rpx,
+ ),
),
/// 左边返回按钮
@@ -119,7 +119,7 @@ class _ApplyRepairSuccessState extends State {
// width: double.infinity,
decoration: BoxDecoration(),
child: SvgPicture.asset('assets/img/icon/tick.svg',
- fit: BoxFit.cover, color: Color(0XFF84F5FF)),
+ fit: BoxFit.contain, color: Color(0XFF84F5FF)),
),
),
Padding(
@@ -132,11 +132,11 @@ class _ApplyRepairSuccessState extends State {
child: Text(
'报修成功'.tr,
style: TextStyle(
- fontFamily: 'Inter',
- fontSize: 30.rpx,
- letterSpacing: 0.0,
- color: themeController.currentColor.sc3,
- ),
+ fontFamily: 'Inter',
+ fontSize: 30.rpx,
+ letterSpacing: 0.0,
+ color: themeController.currentColor.sc3,
+ ),
),
),
),
@@ -229,12 +229,12 @@ class _ApplyRepairSuccessState extends State {
Text(
'查看报修历史'.tr,
style: TextStyle(
- color: Color(0xFF011D33),
- fontFamily: 'Inter',
- fontSize: AppConstants()
- .normal_text_fontSize, // 自定义字体大小
- letterSpacing: 0.0,
- ),
+ color: Color(0xFF011D33),
+ fontFamily: 'Inter',
+ fontSize: AppConstants()
+ .normal_text_fontSize, // 自定义字体大小
+ letterSpacing: 0.0,
+ ),
),
].divide(SizedBox(width: 17.rpx)),
),
@@ -272,13 +272,13 @@ class _ApplyRepairSuccessState extends State {
children: [
Text(
'绑定成功.返回'.tr,
- style:TextStyle(
- color: Color(0xFF011D33),
- fontFamily: 'Inter',
- fontSize: AppConstants()
- .normal_text_fontSize, // 自定义字体大小
- letterSpacing: 0.0,
- ),
+ style: TextStyle(
+ color: Color(0xFF011D33),
+ fontFamily: 'Inter',
+ fontSize: AppConstants()
+ .normal_text_fontSize, // 自定义字体大小
+ letterSpacing: 0.0,
+ ),
),
].divide(SizedBox(width: 17.rpx)),
),
@@ -322,11 +322,11 @@ class _ApplyRepairSuccessState extends State {
Text(
title,
style: TextStyle(
- fontFamily: 'Inter',
- color: const Color(0xFFC2CED7),
- fontSize: 30.rpx,
- letterSpacing: 0.0,
- ),
+ fontFamily: 'Inter',
+ color: const Color(0xFFC2CED7),
+ fontSize: 30.rpx,
+ letterSpacing: 0.0,
+ ),
),
ClipRRect(
borderRadius: BorderRadius.circular(8.rpx),
diff --git a/lib/pages/mh_page/device/device.dart b/lib/pages/mh_page/device/device.dart
index 6bc6800..7933cca 100644
--- a/lib/pages/mh_page/device/device.dart
+++ b/lib/pages/mh_page/device/device.dart
@@ -25,9 +25,9 @@ class DeviceInfoWidget extends GetView {
child: Container(
// width: MediaQuery.sizeOf(context).width,
height: 381.rpx,
- constraints: BoxConstraints(
- minHeight: 140,
- ),
+ // constraints: BoxConstraints(
+ // minHeight: 140,
+ // ),
decoration: BoxDecoration(
color: Color(0xFF003058),
borderRadius: BorderRadius.circular(16.rpx),
@@ -37,9 +37,9 @@ class DeviceInfoWidget extends GetView {
child: Container(
// width: MediaQuery.sizeOf(context).width,
height: 381.rpx,
- constraints: BoxConstraints(
- minHeight: 106,
- ),
+ // constraints: BoxConstraints(
+ // minHeight: 106,
+ // ),
child: Container(
// width: MediaQuery.sizeOf(context).width,
@@ -96,82 +96,99 @@ class DeviceInfoWidget extends GetView {
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Row(
- mainAxisSize: MainAxisSize.max,
- children: [
- Expanded(
- child: RichText(
- text: TextSpan(
- children: [
- TextSpan(
- text: '设备ID:' +
- (deviceListController.model
- .deviceList[
- index]['_id'] ??
- ''),
- style: TextStyle(
- fontFamily: 'Readex Pro',
- color: Color(0xFFC8CBD2),
- fontSize: 26.rpx,
- letterSpacing: 0,
- height: 1),
- ),
- // TextSpan(
- // text:
- // ' (${deviceListController.model.deviceList[index]['status'] ?? ''})',
- // style: TextStyle(
- // fontFamily: 'Readex Pro',
- // color: deviceListController
- // .model
- // .deviceList[
- // index]
- // ['status'] ==
- // '在线'
- // ? Color(
- // 0xFF07C160) // 在线的颜色
- // : Color(
- // 0xFFEA7CA7), // 离线的颜色
- // fontSize: 26.rpx,
- // letterSpacing: 0,
- // ),
- // ),
- ],
- ),
- maxLines: 1, // 限制显示一行
- overflow: TextOverflow
- .ellipsis, // 超出部分显示省略号
- ),
- ),
- ],
- ),
- Align(
- alignment: AlignmentDirectional(-1, 0),
- child: Text(
- '房间:' +
- (deviceListController
+ _buildInfoRow(
+ '设备ID',
+ deviceListController
+ .model.deviceList[index]["_id"] ??
+ '',
+ valueColor: (deviceListController
.model.deviceList[index]
- ['roomName'] ??
- ''),
- style: TextStyle(
- fontFamily: 'Readex Pro',
- color: Color(0xFFC8CBD2),
- fontSize: 26.rpx,
- letterSpacing: 0,
- height: 1),
- ),
- ),
- Align(
- alignment: AlignmentDirectional(-1, 0),
- child: Text(
- '设备状态:${(deviceListController.model.deviceList[index]["status"]?["status"]) == 1 ? '在线' : '离线'}',
- style: TextStyle(
- fontFamily: 'Readex Pro',
- color: Color(0xFFC8CBD2),
- fontSize: 26.rpx,
- letterSpacing: 0,
- height: 1),
- ),
- )
+ ["status"]?["status"]) ==
+ 1
+ ? Color(0xFF929699)
+ : null),
+ _buildInfoRow(
+ '房间',
+ deviceListController.model
+ .deviceList[index]["roomName"] ??
+ '',
+ valueColor: (deviceListController
+ .model.deviceList[index]
+ ["status"]?["status"]) ==
+ 1
+ ? Color(0xFF929699)
+ : null),
+ _buildInfoRow(
+ '设备状态',
+ (deviceListController
+ .model.deviceList[index]
+ ["status"]?["status"]) ==
+ 1
+ ? '在线'
+ : '离线',
+ valueColor: (deviceListController
+ .model.deviceList[index]
+ ["status"]?["status"]) ==
+ 1
+ ? Color(0xFF6BFDAC)
+ : Color(0xFFFF7159)),
+ // Row(
+ // mainAxisSize: MainAxisSize.max,
+ // children: [
+ // Expanded(
+ // child: RichText(
+ // text: TextSpan(
+ // children: [
+ // TextSpan(
+ // text: '设备ID:' +
+ // (deviceListController.model
+ // .deviceList[
+ // index]['_id'] ??
+ // ''),
+ // style: TextStyle(
+ // fontFamily: 'Readex Pro',
+ // color: Color(0xFFC8CBD2),
+ // fontSize: 26.rpx,
+ // letterSpacing: 0,
+ // height: 1),
+ // ),
+ // ],
+ // ),
+ // maxLines: 1, // 限制显示一行
+ // overflow: TextOverflow
+ // .ellipsis, // 超出部分显示省略号
+ // ),
+ // ),
+ // ],
+ // ),
+ // Align(
+ // alignment: AlignmentDirectional(-1, 0),
+ // child: Text(
+ // '房间:' +
+ // (deviceListController
+ // .model.deviceList[index]
+ // ['roomName'] ??
+ // ''),
+ // style: TextStyle(
+ // fontFamily: 'Readex Pro',
+ // color: Color(0xFFC8CBD2),
+ // fontSize: 26.rpx,
+ // letterSpacing: 0,
+ // height: 1),
+ // ),
+ // ),
+ // Align(
+ // alignment: AlignmentDirectional(-1, 0),
+ // child: Text(
+ // '设备状态:${(deviceListController.model.deviceList[index]["status"]?["status"]) == 1 ? '在线' : '离线'}',
+ // style: TextStyle(
+ // fontFamily: 'Readex Pro',
+ // color: Color(0xFFC8CBD2),
+ // fontSize: 26.rpx,
+ // letterSpacing: 0,
+ // height: 1),
+ // ),
+ // )
].divide(SizedBox(height: 36.rpx)),
),
),
@@ -180,7 +197,7 @@ class DeviceInfoWidget extends GetView {
Align(
alignment: AlignmentDirectional(0, 0),
child: Container(
- width: MediaQuery.sizeOf(context).width * 0.21,
+ width: 150.rpx,
height: 90.rpx,
child: FFButtonWidget(
onPressed: () {
@@ -405,4 +422,25 @@ class DeviceInfoWidget extends GetView {
),
);
}
+
+ Widget _buildInfoRow(String label, String value, {Color? valueColor}) {
+ return Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Text(
+ '$label ',
+ style:
+ TextStyle(color: Color(0XFF929699), fontSize: 26.rpx, height: 1),
+ ),
+ Flexible(
+ child: Text(
+ value,
+ style: TextStyle(
+ color: valueColor ?? Colors.white, fontSize: 26.rpx, height: 1),
+ overflow: TextOverflow.ellipsis,
+ ),
+ ),
+ ],
+ );
+ }
}
diff --git a/lib/pages/mh_page/device_share_page.dart b/lib/pages/mh_page/device_share_page.dart
index e720dea..e95a951 100644
--- a/lib/pages/mh_page/device_share_page.dart
+++ b/lib/pages/mh_page/device_share_page.dart
@@ -143,7 +143,7 @@ class ShareDeviceWidget extends GetView {
child: TextFormField(
controller: _phoneController,
decoration: InputDecoration(
- hintText: '请输入对方手机号',
+ hintText: '请输入对方手机号/邮箱号',
hintStyle: TextStyle(
fontFamily: 'Readex Pro',
color:
diff --git a/lib/pages/mh_page/edit_bed.dart b/lib/pages/mh_page/edit_bed.dart
index 205e9cf..1b8a36f 100644
--- a/lib/pages/mh_page/edit_bed.dart
+++ b/lib/pages/mh_page/edit_bed.dart
@@ -7,6 +7,8 @@ import 'package:vbvs_app/common/util/requestWithLog.dart';
import 'package:vbvs_app/component/tool/CustomCard.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/mh_controller/device_list_controller.dart';
+import 'package:vbvs_app/pages/mh_page/bluetooth.dart';
+import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart';
class EditBedPage extends StatefulWidget {
final Map data;
@@ -119,7 +121,7 @@ class _EditBedPageState extends State {
editedData['name'] = val;
},
textAlign: TextAlign.center,
- initialValue: widget.data['name'],
+
decoration: InputDecoration(
hintText: "请输入床的名称",
contentPadding:
@@ -208,6 +210,15 @@ class _EditBedPageState extends State {
TopSlideNotification.show(context,
text: "修改名称成功".tr);
deviceListController.getDeviceList();
+ try {
+ WebviewTestController
+ webviewTestController = Get.find();
+ webviewTestController.web.jsbridge?.dart
+ .alterDevice();
+ } catch (e) {
+ ef.log("[h5]通知列表更新错误:$e");
+ }
+ Get.back(result: editedData);
},
);
},
diff --git a/lib/pages/mh_page/message/messageDetail.dart b/lib/pages/mh_page/message/messageDetail.dart
new file mode 100644
index 0000000..f35b5a7
--- /dev/null
+++ b/lib/pages/mh_page/message/messageDetail.dart
@@ -0,0 +1,262 @@
+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/appFontsize.dart';
+import 'package:vbvs_app/common/color/app_uri_status.dart';
+import 'package:vbvs_app/common/util/FitTool.dart';
+import 'package:vbvs_app/common/util/MyUtils.dart';
+import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
+import 'package:vbvs_app/controller/mh_controller/message_controller.dart';
+import 'package:vbvs_app/controller/mh_controller/mhdevice_share_controller.dart';
+import 'package:vbvs_app/model/api_response.dart';
+
+class MessageDetailPage extends StatefulWidget {
+ final data;
+ const MessageDetailPage({super.key, required this.data});
+
+ @override
+ _MessageDetailPageState createState() => _MessageDetailPageState();
+}
+
+class _MessageDetailPageState extends State {
+ MHDeviceShareController controller = Get.find();
+ MhMessageController messageController = Get.find();
+ @override
+ Widget build(BuildContext context) {
+ var messageInfo = widget.data;
+ return LayoutBuilder(
+ builder: (context, boxConstraints) => GestureDetector(
+ onTap: () => FocusScope.of(context).unfocus(),
+ child: Container(
+ decoration: const BoxDecoration(
+ image: DecorationImage(
+ image:
+ AssetImage('assets/images/new_background.png'), // 本地图片
+ fit: BoxFit.fill, // 填满整个 Container
+ ),
+ ),
+ child: Scaffold(
+ appBar: AppBar(
+ backgroundColor: Colors.transparent,
+ automaticallyImplyLeading: false,
+ iconTheme:
+ IconThemeData(color: themeController.currentColor.sc3),
+ titleSpacing: 0,
+ title: SizedBox(
+ width: double.infinity,
+ height: 180.rpx,
+ child: Stack(
+ alignment: Alignment.center,
+ children: [
+ // 中间居中的标题
+ Text(
+ '消息详情',
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: 30.rpx,
+ ),
+ ),
+ // 左侧图标
+ Positioned(
+ left: 20.rpx,
+ child: returnIconButtomNew,
+ ),
+ ],
+ ),
+ ),
+ actions: const [],
+ centerTitle: false,
+ ),
+ backgroundColor: Colors.transparent,
+ body: SafeArea(
+ top: true,
+ child: Padding(
+ padding: EdgeInsets.only(top: 30.rpx),
+ child: Column(
+ children: [
+ Padding(
+ padding:
+ EdgeInsets.only(left: 30.rpx, right: 30.rpx),
+ child: Container(
+ decoration: BoxDecoration(
+ color: Color(0XFF003058),
+ borderRadius: BorderRadius.circular(16.rpx),
+ ),
+ child: Padding(
+ padding: EdgeInsets.only(
+ left: 30.rpx,
+ top: 20.rpx,
+ bottom: 20.rpx),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Container(
+ width: double.infinity,
+ constraints: BoxConstraints(
+ minHeight: 66.rpx),
+ child: Align(
+ alignment:
+ AlignmentDirectional(-1, 0),
+ child: Text(
+ "${messageInfo['data']['title']}",
+ style: TextStyle(
+ fontFamily: 'Inter',
+ fontSize: 30.rpx,
+ letterSpacing: 0.0,
+ color: themeController
+ .currentColor.sc3,
+ ),
+ ),
+ ),
+ ),
+ Row(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ Container(
+ constraints: BoxConstraints(
+ minWidth: 30.rpx,
+ maxWidth: 140.rpx),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: messageInfo['data']
+ ['val']
+ .map((mapItem) =>
+ _buildInfoItem(
+ context,
+ mapItem['k'] ??
+ ''))
+ .toList(),
+ ),
+ ),
+ Container(
+ constraints: BoxConstraints(
+ minWidth: 30.rpx),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: messageInfo['data']
+ ['val']
+ .map((mapItem) =>
+ _buildValueItem(
+ context,
+ mapItem['v'] ??
+ ''))
+ .toList(),
+ ),
+ ),
+ ].divide(SizedBox(width: 30.rpx)),
+ ),
+ ],
+ ))),
+ ),
+ const Spacer(),
+ bottomIcon(context)
+ ],
+ )),
+ ),
+ ),
+ ),
+ ));
+ }
+
+ Container bottomIcon(BuildContext context) {
+ return Container(
+ height: 120.rpx,
+ decoration: BoxDecoration(
+ color: Color(0xFF003058),
+ ),
+ width: double.infinity,
+ child: TextButton(
+ onPressed: () async {
+ if (widget.data['status'] == 1) {
+ ApiResponse apiResponse =
+ await controller.confirmShare(widget.data['data']['shareCode']);
+ if (apiResponse.code == HttpStatusCodes.ok) {
+ TopSlideNotification.show(context,
+ text: apiResponse.msg!, textColor: Color(0xFF00C1AA));
+ messageController.getMessageList();
+ messageController.updateAll();
+ } else {
+ TopSlideNotification.show(context,
+ text: apiResponse.msg!, textColor: Color(0XFFFF7159));
+ messageController.getMessageList();
+ messageController.updateAll();
+ }
+ }
+ },
+ child: Text(
+ getStatusText(widget.data['status']),
+ style: TextStyle(
+ fontFamily: 'Readex Pro',
+ color: widget.data['data']['status'] == 1
+ ? Colors.white
+ : Color(0xFF929699),
+ fontSize: 26.rpx,
+ letterSpacing: 0,
+ ),
+ ),
+ ),
+ );
+ }
+
+ Widget _buildInfoItem(BuildContext context, String label) {
+ return Container(
+ constraints: BoxConstraints(
+ minHeight: 62.rpx,
+ ),
+ child: Align(
+ alignment: AlignmentDirectional(-1, 0),
+ child: Text(
+ overflow: TextOverflow.ellipsis,
+ maxLines: 1,
+ label.tr,
+ style: TextStyle(
+ fontFamily: 'Inter',
+ fontSize: 26.rpx,
+ letterSpacing: 0.0,
+ color: themeController.currentColor.sc4,
+ ),
+ ),
+ ),
+ );
+ }
+
+ Widget _buildValueItem(BuildContext context, value) {
+ return Container(
+ constraints: BoxConstraints(
+ minHeight: 62.rpx,
+ ),
+ child: Align(
+ alignment: AlignmentDirectional(-1, 0),
+ child: Text(
+ overflow: TextOverflow.ellipsis,
+ maxLines: 1,
+ "${value}",
+ style: TextStyle(
+ fontFamily: 'Inter',
+ fontSize: 26.rpx,
+ letterSpacing: 0.0,
+ color: themeController.currentColor.sc3,
+ ),
+ ),
+ ),
+ );
+ }
+
+ String getStatusText(int status) {
+ switch (status) {
+ case 1:
+ return '同意';
+ case 2:
+ return '已同意';
+ case 3:
+ return '已过期';
+ default:
+ return '未知状态';
+ }
+ }
+}
diff --git a/lib/pages/mh_page/message_page.dart b/lib/pages/mh_page/message_page.dart
index bffeda1..9513cfa 100644
--- a/lib/pages/mh_page/message_page.dart
+++ b/lib/pages/mh_page/message_page.dart
@@ -261,6 +261,7 @@ class _MessagePageState extends State {
),
),
);
+
}
Container bottomIcon(BuildContext context) {
diff --git a/lib/pages/mh_page/room_picker.dart b/lib/pages/mh_page/room_picker.dart
index 0a1af24..1165f08 100644
--- a/lib/pages/mh_page/room_picker.dart
+++ b/lib/pages/mh_page/room_picker.dart
@@ -6,6 +6,8 @@ import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/common/util/requestWithLog.dart';
import 'package:vbvs_app/component/tool/CustomCard.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
+import 'package:vbvs_app/controller/mh_controller/device_list_controller.dart';
+import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart';
class RoomPickerPage extends StatefulWidget {
final Map data;
@@ -17,7 +19,7 @@ class RoomPickerPage extends StatefulWidget {
class _RoomPickerPageState extends State {
late Map editedData;
RxList rooms = [].obs;
-
+ DeviceListController deviceListController = Get.find();
@override
void initState() {
super.initState();
@@ -191,6 +193,16 @@ class _RoomPickerPageState extends State {
TopSlideNotification.show(context,
text: "更新成功".tr,
textColor: Color(0XFF00C1AA));
+ deviceListController.getDeviceList();
+ try {
+ WebviewTestController
+ webviewTestController = Get.find();
+ webviewTestController.web.jsbridge?.dart
+ .alterDevice();
+ } catch (e) {
+ ef.log("[h5]通知列表更新错误:$e");
+ }
+ Get.toNamed('bluetoothPage');
},
onFailure: (res) {
TopSlideNotification.show(context,
diff --git a/lib/routers/mh_routers.dart b/lib/routers/mh_routers.dart
index 556a11e..0ae14e3 100644
--- a/lib/routers/mh_routers.dart
+++ b/lib/routers/mh_routers.dart
@@ -9,6 +9,7 @@ import 'package:vbvs_app/main.dart';
import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart';
import 'package:vbvs_app/pages/mh_page/HomeDeviceType.dart';
import 'package:vbvs_app/pages/mh_page/LanguagePage.dart';
+import 'package:vbvs_app/pages/mh_page/ShareDeviceDetailWidget.dart';
import 'package:vbvs_app/pages/mh_page/about_us.dart';
import 'package:vbvs_app/pages/mh_page/address_list_page.dart';
import 'package:vbvs_app/pages/mh_page/applyRepair/apply_repair_success.dart';
@@ -47,6 +48,7 @@ import 'package:vbvs_app/pages/mh_page/user_agreement_page.dart';
import 'package:vbvs_app/pages/sleep_report/new_sleep_report_page.dart';
import '../pages/mh_page/bluetooth.dart';
import '../pages/mh_page/edit_address_page.dart';
+import '../pages/mh_page/message/messageDetail.dart';
import '../pages/mh_page/message_page.dart';
import '../pages/mh_page/new_settingPage.dart';
@@ -105,6 +107,9 @@ var mhroutes = {
"/aboutUs": (contxt) => MhAboutUsPage(),
"/userAgreementPage": (context) => UserAgreementPage(),
"/privacyPolicyPage": (context) => PrivacyPolicyPage(),
+ "/shareDeviceDetail": (context) => ShareDeviceDetailWidget(),
+ "/messageDetail": (context, {arguments}) =>
+ MessageDetailPage(data: arguments),
};
var mhonGenerateRoute = (RouteSettings settings) {
final String? name = settings.name; // 获取路由名称,如 /news 或 /search