分享设备用户列表
This commit is contained in:
@@ -17,6 +17,7 @@ class ServiceConstant {
|
|||||||
static String person_info = "/api/personnel/info"; //用户资料
|
static String person_info = "/api/personnel/info"; //用户资料
|
||||||
static String sleep_report = "/api/device/sleep/data"; //睡眠报告
|
static String sleep_report = "/api/device/sleep/data"; //睡眠报告
|
||||||
static String device_share = "/api/device/share"; //分享设备
|
static String device_share = "/api/device/share"; //分享设备
|
||||||
|
|
||||||
static String message_list = "/api/mesasge/list"; //消息列表
|
static String message_list = "/api/mesasge/list"; //消息列表
|
||||||
static String message_read = "/api/mesasge/read"; //消息未读数量
|
static String message_read = "/api/mesasge/read"; //消息未读数量
|
||||||
static String device_show = "/api/device/bind"; //更新设备绑定
|
static String device_show = "/api/device/bind"; //更新设备绑定
|
||||||
|
|||||||
@@ -379,24 +379,41 @@ var returnIconButtom = IconButton(
|
|||||||
icon: Icon(Icons.navigate_before, size: 60.rpx),
|
icon: Icon(Icons.navigate_before, size: 60.rpx),
|
||||||
);
|
);
|
||||||
|
|
||||||
var returnIconButtomNew = ClickableContainer(
|
// var returnIconButtomNew = ClickableContainer(
|
||||||
|
// backgroundColor: Colors.transparent,
|
||||||
|
// highlightColor: Colors.transparent,
|
||||||
|
// padding: EdgeInsets.fromLTRB(20.rpx, 20.rpx, 20.rpx, 20.rpx),
|
||||||
|
// onTap: () => Get.back(),
|
||||||
|
// child: Container(
|
||||||
|
// // height: 42.rpx,
|
||||||
|
// // width: 42.rpx,
|
||||||
|
// child: SvgPicture.asset(
|
||||||
|
// 'assets/img/icon/return_buttom.svg',
|
||||||
|
// width: 42.rpx,
|
||||||
|
// height: 42.rpx,
|
||||||
|
// ),
|
||||||
|
// // SvgPicture.asset(
|
||||||
|
// // 'assets/img/icon/expand.svg',
|
||||||
|
// // color: Colors.white,
|
||||||
|
// // )
|
||||||
|
// ));
|
||||||
|
|
||||||
|
Widget returnIconButtomNew({VoidCallback? onBack}) {
|
||||||
|
return ClickableContainer(
|
||||||
backgroundColor: Colors.transparent,
|
backgroundColor: Colors.transparent,
|
||||||
highlightColor: Colors.transparent,
|
highlightColor: Colors.transparent,
|
||||||
padding: EdgeInsets.fromLTRB(20.rpx, 20.rpx, 20.rpx, 20.rpx),
|
padding: EdgeInsets.fromLTRB(20.rpx, 20.rpx, 20.rpx, 20.rpx),
|
||||||
onTap: () => Get.back(),
|
onTap: () {
|
||||||
child: Container(
|
if (onBack != null) onBack(); // 执行回调
|
||||||
// height: 42.rpx,
|
Get.back(); // 返回
|
||||||
// width: 42.rpx,
|
},
|
||||||
child: SvgPicture.asset(
|
child: SvgPicture.asset(
|
||||||
'assets/img/icon/return_buttom.svg',
|
'assets/img/icon/return_buttom.svg',
|
||||||
width: 42.rpx,
|
width: 42.rpx,
|
||||||
height: 42.rpx,
|
height: 42.rpx,
|
||||||
),
|
),
|
||||||
// SvgPicture.asset(
|
);
|
||||||
// 'assets/img/icon/expand.svg',
|
}
|
||||||
// color: Colors.white,
|
|
||||||
// )
|
|
||||||
));
|
|
||||||
|
|
||||||
// IconButton(
|
// IconButton(
|
||||||
// padding: EdgeInsets.zero, // 去除默认 padding
|
// padding: EdgeInsets.zero, // 去除默认 padding
|
||||||
|
|||||||
@@ -3,12 +3,14 @@ import 'dart:ui';
|
|||||||
|
|
||||||
import 'package:EasyDartModule/EasyDartModule.dart';
|
import 'package:EasyDartModule/EasyDartModule.dart';
|
||||||
import 'package:ef/ef.dart';
|
import 'package:ef/ef.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
import 'package:json_annotation/json_annotation.dart';
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
import 'package:vbvs_app/common/color/ServiceConstant.dart';
|
import 'package:vbvs_app/common/color/ServiceConstant.dart';
|
||||||
import 'package:vbvs_app/common/color/app_uri_status.dart';
|
import 'package:vbvs_app/common/color/app_uri_status.dart';
|
||||||
import 'package:vbvs_app/common/util/DailyLogUtils.dart';
|
import 'package:vbvs_app/common/util/DailyLogUtils.dart';
|
||||||
import 'package:vbvs_app/common/util/MyUtils.dart';
|
import 'package:vbvs_app/common/util/MyUtils.dart';
|
||||||
import 'package:vbvs_app/common/util/requestWithLog.dart';
|
import 'package:vbvs_app/common/util/requestWithLog.dart';
|
||||||
|
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
|
||||||
|
|
||||||
import 'package:vbvs_app/controller/mh_controller/device.dart';
|
import 'package:vbvs_app/controller/mh_controller/device.dart';
|
||||||
import 'package:vbvs_app/model/api_response.dart';
|
import 'package:vbvs_app/model/api_response.dart';
|
||||||
@@ -19,7 +21,7 @@ part 'device_list_controller.g.dart';
|
|||||||
class DeviceListModel {
|
class DeviceListModel {
|
||||||
//设备列表
|
//设备列表
|
||||||
List<dynamic> deviceList = [];
|
List<dynamic> deviceList = [];
|
||||||
List<dynamic>vitalList=[];
|
List<dynamic> vitalList = [];
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(ignore: true)
|
||||||
String? keyword;
|
String? keyword;
|
||||||
@@ -71,6 +73,7 @@ class DeviceListController extends GetControllerEx<DeviceListModel> {
|
|||||||
}
|
}
|
||||||
return ApiResponse(code: -1, msg: "未知错误".tr); // Default return statement
|
return ApiResponse(code: -1, msg: "未知错误".tr); // Default return statement
|
||||||
}
|
}
|
||||||
|
|
||||||
//体征传感器
|
//体征传感器
|
||||||
getVitalList(String mac) async {
|
getVitalList(String mac) async {
|
||||||
try {
|
try {
|
||||||
@@ -133,4 +136,27 @@ class DeviceListController extends GetControllerEx<DeviceListModel> {
|
|||||||
);
|
);
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unbindShareDevice(String id, String mac, BuildContext context) async {
|
||||||
|
String serviceAddress = ServiceConstant.service_address;
|
||||||
|
String serviceName = ServiceConstant.server_service;
|
||||||
|
String serviceApi = ServiceConstant.device_bind;
|
||||||
|
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
|
||||||
|
String msg = '';
|
||||||
|
|
||||||
|
await requestWithLog(
|
||||||
|
logTitle: '解绑设备',
|
||||||
|
method: MyHttpMethod.delete,
|
||||||
|
queryUrl: queryUrl,
|
||||||
|
data: {"mac": mac, "uid": id},
|
||||||
|
onSuccess: (res) {
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: res.msg!, textColor: Color(0XFF00C1AA));
|
||||||
|
},
|
||||||
|
onFailure: (err) {
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: err.msg!, textColor: Color(0xFFFF7159));
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ class MHDeviceShareModel {
|
|||||||
// {"type": 2}
|
// {"type": 2}
|
||||||
// ];
|
// ];
|
||||||
List<dynamic>? shareUser = [];
|
List<dynamic>? shareUser = [];
|
||||||
Map mainShare = {};
|
|
||||||
|
|
||||||
MHDeviceShareModel();
|
MHDeviceShareModel();
|
||||||
static MHDeviceShareModel fromJson(Map<String, dynamic> json) =>
|
static MHDeviceShareModel fromJson(Map<String, dynamic> json) =>
|
||||||
|
|||||||
@@ -17,8 +17,7 @@ MHDeviceShareModel _$MHDeviceShareModelFromJson(Map<String, dynamic> json) =>
|
|||||||
..offset = (json['offset'] as num).toInt()
|
..offset = (json['offset'] as num).toInt()
|
||||||
..isLoading = json['isLoading'] as bool
|
..isLoading = json['isLoading'] as bool
|
||||||
..hasMore = json['hasMore'] as bool
|
..hasMore = json['hasMore'] as bool
|
||||||
..shareUser = json['shareUser'] as List<dynamic>?
|
..shareUser = json['shareUser'] as List<dynamic>?;
|
||||||
..mainShare = json['mainShare'] as Map<String, dynamic>;
|
|
||||||
|
|
||||||
Map<String, dynamic> _$MHDeviceShareModelToJson(MHDeviceShareModel instance) =>
|
Map<String, dynamic> _$MHDeviceShareModelToJson(MHDeviceShareModel instance) =>
|
||||||
<String, dynamic>{
|
<String, dynamic>{
|
||||||
@@ -32,5 +31,4 @@ Map<String, dynamic> _$MHDeviceShareModelToJson(MHDeviceShareModel instance) =>
|
|||||||
'isLoading': instance.isLoading,
|
'isLoading': instance.isLoading,
|
||||||
'hasMore': instance.hasMore,
|
'hasMore': instance.hasMore,
|
||||||
'shareUser': instance.shareUser,
|
'shareUser': instance.shareUser,
|
||||||
'mainShare': instance.mainShare,
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ import 'routers/routers.dart';
|
|||||||
|
|
||||||
Future<void> main() async {
|
Future<void> main() async {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
|
|
||||||
final Locale? deviceLocale = Get.deviceLocale;
|
final Locale? deviceLocale = Get.deviceLocale;
|
||||||
print('系统语言: ${deviceLocale?.languageCode}');
|
print('系统语言: ${deviceLocale?.languageCode}');
|
||||||
|
|
||||||
@@ -99,7 +99,7 @@ Future<void> main() async {
|
|||||||
await initLogin();
|
await initLogin();
|
||||||
await messageStatus();
|
await messageStatus();
|
||||||
|
|
||||||
startMessagePolling();
|
startMessagePolling(selectapp);
|
||||||
// 检查网络
|
// 检查网络
|
||||||
Checknetwork.checkNetwork();
|
Checknetwork.checkNetwork();
|
||||||
// 微信开放平台注册
|
// 微信开放平台注册
|
||||||
@@ -139,26 +139,45 @@ initLanguageSetting() {
|
|||||||
Future<void> initWX() async {
|
Future<void> initWX() async {
|
||||||
Fluwx fluwx = Fluwx();
|
Fluwx fluwx = Fluwx();
|
||||||
fluwx.registerApi(
|
fluwx.registerApi(
|
||||||
//请填写自己的微信appid
|
//请填写自己的微信appid
|
||||||
// appId: "wxeb2688220799e2c5",//太和
|
// appId: "wxeb2688220799e2c5",//太和
|
||||||
appId: "wx929c548fea6af9c7",//眠花糖
|
appId: "wx929c548fea6af9c7", //眠花糖
|
||||||
doOnAndroid: true,
|
doOnAndroid: true,
|
||||||
doOnIOS: true,
|
doOnIOS: true,
|
||||||
// universalLink: "https://app.he-info.com/theh/",
|
// universalLink: "https://app.he-info.com/theh/",
|
||||||
universalLink: "https://zhmht.swes.com.cn/app/",
|
universalLink: "https://zhmht.swes.com.cn/app/",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Timer? _messageTimer;
|
Timer? _messageTimer;
|
||||||
void startMessagePolling() {
|
// void startMessagePolling() {
|
||||||
// 避免重复启动
|
// // 避免重复启动
|
||||||
|
// _messageTimer?.cancel();
|
||||||
|
|
||||||
|
// _messageTimer = Timer.periodic(Duration(seconds: 10), (timer) async {
|
||||||
|
// try {
|
||||||
|
// MessageController messageController = Get.find();
|
||||||
|
// messageController.getMessageStatus();
|
||||||
|
// // print("轮询消息状态成功");
|
||||||
|
// } catch (e) {
|
||||||
|
// print("轮询消息状态失败: $e");
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
void startMessagePolling(String selectapp) {
|
||||||
_messageTimer?.cancel();
|
_messageTimer?.cancel();
|
||||||
|
|
||||||
_messageTimer = Timer.periodic(Duration(seconds: 10), (timer) async {
|
_messageTimer = Timer.periodic(Duration(seconds: 10), (timer) async {
|
||||||
try {
|
try {
|
||||||
MessageController messageController = Get.find();
|
if (selectapp == 'mht') {
|
||||||
messageController.getMessageStatus();
|
if (Get.isRegistered<MhMessageController>()) {
|
||||||
// print("轮询消息状态成功");
|
Get.find<MhMessageController>().getMessageStatus();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (Get.isRegistered<MessageController>()) {
|
||||||
|
Get.find<MessageController>().getMessageStatus();
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
print("轮询消息状态失败: $e");
|
print("轮询消息状态失败: $e");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,6 +90,9 @@ class _CalibrationPageState extends State<CalibrationPage> {
|
|||||||
fontSize: 30.rpx,
|
fontSize: 30.rpx,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 0,
|
||||||
child: returnIconButtomAddCallback(() {
|
child: returnIconButtomAddCallback(() {
|
||||||
|
|||||||
@@ -318,7 +318,6 @@ class _DeviceSharePageState extends State<DeviceSharePage> {
|
|||||||
text: apiResponse.msg!,
|
text: apiResponse.msg!,
|
||||||
textColor: themeController.currentColor.sc9);
|
textColor: themeController.currentColor.sc9);
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
colors: [
|
colors: [
|
||||||
// 渐变色
|
// 渐变色
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ class _OtherLoginPageState extends State<OtherLoginPage> {
|
|||||||
// height: 25.rpx, // 如果 SVG 中没有固定颜色,使用 color 设置
|
// height: 25.rpx, // 如果 SVG 中没有固定颜色,使用 color 设置
|
||||||
// color: themeController.currentColor.sc3,
|
// color: themeController.currentColor.sc3,
|
||||||
// ),
|
// ),
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class _BackMovementPageState extends State<BackMovementPage> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ class _HomeDeviceTypeState extends State<HomeDeviceType> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ class LanguagePage extends GetView<MHLanguageController> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,43 +1,60 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:ef/base/widget/flutterflow/FlutterFlowTheme.dart';
|
import 'package:ef/base/widget/flutterflow/FlutterFlowTheme.dart';
|
||||||
import 'package:ef/ef.dart';
|
import 'package:ef/ef.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutterflow_ui/flutterflow_ui.dart';
|
import 'package:flutterflow_ui/flutterflow_ui.dart';
|
||||||
import 'package:vbvs_app/common/color/appColors.dart';
|
import 'package:fluwx/fluwx.dart';
|
||||||
|
import 'package:vbvs_app/common/color/ServiceConstant.dart';
|
||||||
import 'package:vbvs_app/common/color/appConstants.dart';
|
import 'package:vbvs_app/common/color/appConstants.dart';
|
||||||
import 'package:vbvs_app/common/util/FitTool.dart';
|
import 'package:vbvs_app/common/util/FitTool.dart';
|
||||||
import 'package:vbvs_app/common/util/MyUtils.dart';
|
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/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/controller/mh_controller/mhdevice_share_controller.dart';
|
import 'package:vbvs_app/controller/mh_controller/mhdevice_share_controller.dart';
|
||||||
import 'package:vbvs_app/pages/common/selectDialog.dart';
|
import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart';
|
||||||
|
|
||||||
import '../../common/color/appFontsize.dart';
|
import '../../common/color/appFontsize.dart';
|
||||||
|
|
||||||
class ShareDeviceDetailWidget extends GetView {
|
class ShareDeviceDetailWidget extends GetView {
|
||||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||||
|
Map data;
|
||||||
|
ShareDeviceDetailWidget({super.key, required this.data});
|
||||||
|
getLine() {
|
||||||
|
return Divider(
|
||||||
|
color: const Color(0XFF929699),
|
||||||
|
thickness: 0.5.rpx,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
var opType = 1.obs;
|
||||||
|
bool isProgrammaticPop = false; // 标记变量
|
||||||
|
DateTime? _lastBackPressedTime; // 记录上一次返回的时间
|
||||||
|
DeviceListController deviceListController = Get.find();
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
MHDeviceShareController deviceShareController = Get.find();
|
opType.value = data['info'][3]['opType'];
|
||||||
var shareInfo = deviceShareController.model.mainShare;
|
|
||||||
RxInt type = 1.obs;
|
|
||||||
type.value = shareInfo['op_type'];
|
|
||||||
|
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
// onTap: () => FocusScope.of(context).unfocus(),,
|
// 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(
|
child: Scaffold(
|
||||||
key: scaffoldKey,
|
key: scaffoldKey,
|
||||||
backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
|
backgroundColor: Colors.transparent,
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
backgroundColor: Colors.transparent,
|
backgroundColor: Colors.transparent,
|
||||||
automaticallyImplyLeading: false,
|
automaticallyImplyLeading: false,
|
||||||
iconTheme: IconThemeData(color: Colors.white),
|
iconTheme: const IconThemeData(color: Colors.white),
|
||||||
titleSpacing: 0,
|
titleSpacing: 0,
|
||||||
// leading: returnIconButtomAddCallback(() {
|
title: SizedBox(
|
||||||
// controller.saveDataApi();
|
|
||||||
// updateParm(isShowToast: false);
|
|
||||||
// }),
|
|
||||||
// leading: returnIconButtomNew,
|
|
||||||
title: Container(
|
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
height: 180.rpx,
|
height: 180.rpx,
|
||||||
child: Stack(
|
child: Stack(
|
||||||
@@ -55,265 +72,404 @@ class ShareDeviceDetailWidget extends GetView {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(onBack: () async {
|
||||||
|
try {
|
||||||
|
String serviceAddress = ServiceConstant.service_address;
|
||||||
|
String serviceName = ServiceConstant.server_service;
|
||||||
|
String serviceApi = ServiceConstant.device_show;
|
||||||
|
String queryUrl =
|
||||||
|
"$serviceAddress$serviceName$serviceApi";
|
||||||
|
await requestWithLog(
|
||||||
|
logTitle: "更新设备信息",
|
||||||
|
method: MyHttpMethod.put,
|
||||||
|
queryUrl: queryUrl,
|
||||||
|
data: {
|
||||||
|
"id": data['info'][4]["id"],
|
||||||
|
"opType": opType.value
|
||||||
|
},
|
||||||
|
onSuccess: (res) {
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onFailure: (res) {
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: "更新失败".tr, textColor: Color(0xFFFF7159));
|
||||||
|
},
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
print(e);
|
||||||
|
}
|
||||||
|
}),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
actions: [],
|
|
||||||
centerTitle: false,
|
centerTitle: false,
|
||||||
),
|
),
|
||||||
body: Container(
|
body: PopScope(
|
||||||
width: MediaQuery.sizeOf(context).width,
|
canPop: false,
|
||||||
height: MediaQuery.sizeOf(context).height * 1,
|
onPopInvokedWithResult: (disposition, result) async {
|
||||||
decoration: BoxDecoration(
|
if (isProgrammaticPop) {
|
||||||
color: Color(0xFFF6F6F6),
|
// 如果是程序触发,重置标记并忽略
|
||||||
),
|
isProgrammaticPop = false;
|
||||||
child: Padding(
|
return; // 阻止处理
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(15, 0, 15, 0),
|
}
|
||||||
child: Column(
|
try {
|
||||||
mainAxisSize: MainAxisSize.max,
|
String serviceAddress = ServiceConstant.service_address;
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
String serviceName = ServiceConstant.server_service;
|
||||||
children: [
|
String serviceApi = ServiceConstant.device_show;
|
||||||
Padding(
|
String queryUrl = "$serviceAddress$serviceName$serviceApi";
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(0, 13, 0, 0),
|
await requestWithLog(
|
||||||
child: Container(
|
logTitle: "更新设备信息",
|
||||||
|
method: MyHttpMethod.put,
|
||||||
|
queryUrl: queryUrl,
|
||||||
|
data: {"id": data['info'][4]["id"], "opType": opType.value},
|
||||||
|
onSuccess: (res) {
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onFailure: (res) {
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: "更新失败".tr, textColor: Color(0xFFFF7159));
|
||||||
|
},
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
print(e);
|
||||||
|
}
|
||||||
|
if (Platform.isAndroid) {
|
||||||
|
var flag = await _handleBackPressed(context); // 自定义返回逻辑
|
||||||
|
if (flag) {
|
||||||
|
SystemNavigator.pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
width: MediaQuery.sizeOf(context).width,
|
||||||
|
height: MediaQuery.sizeOf(context).height * 1,
|
||||||
|
child: Padding(
|
||||||
|
padding:
|
||||||
|
EdgeInsetsDirectional.fromSTEB(30.rpx, 34.rpx, 30.rpx, 0),
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
width: MediaQuery.sizeOf(context).width,
|
width: MediaQuery.sizeOf(context).width,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: FlutterFlowTheme.of(context).secondaryBackground,
|
|
||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
),
|
),
|
||||||
child: Padding(
|
child: Column(
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(16, 13, 16, 15),
|
|
||||||
child: Column(
|
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Column(
|
Padding(
|
||||||
mainAxisSize: MainAxisSize.max,
|
padding: EdgeInsetsDirectional.only(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
start: 27.rpx, bottom: 18.rpx),
|
||||||
children: [
|
child: Column(
|
||||||
Text(
|
mainAxisSize: MainAxisSize.max,
|
||||||
'${shareInfo['userName']}',
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
style: FlutterFlowTheme.of(context)
|
children: [
|
||||||
.bodyMedium
|
Text(
|
||||||
.override(
|
data['info'][0]['v'],
|
||||||
fontFamily: 'Readex Pro',
|
// '${shareInfo['userName']}',
|
||||||
color: Color(0xFF333333),
|
style: FlutterFlowTheme.of(context)
|
||||||
fontSize: 15,
|
.bodyMedium
|
||||||
letterSpacing: 0.0,
|
.override(
|
||||||
fontWeight: FontWeight.bold,
|
fontFamily: 'Readex Pro',
|
||||||
),
|
color: const Color(0xFFFFFFFF),
|
||||||
),
|
fontSize: 28.rpx,
|
||||||
Text(
|
letterSpacing: 0.0,
|
||||||
'分享时间:${MyUtils.timestampToDateString(int.parse(shareInfo['startTime'].toString()))}',
|
),
|
||||||
style: FlutterFlowTheme.of(context)
|
),
|
||||||
.bodyMedium
|
Text(
|
||||||
.override(
|
'分享时间:${data['info'][2]['v']}',
|
||||||
fontFamily: 'Readex Pro',
|
style: FlutterFlowTheme.of(context)
|
||||||
color: Color(0xFF9EA4B7),
|
.bodyMedium
|
||||||
fontSize: 11,
|
.override(
|
||||||
letterSpacing: 0.0,
|
fontFamily: 'Readex Pro',
|
||||||
),
|
color: const Color(0xFF9EA4B7),
|
||||||
),
|
fontSize: 20.rpx,
|
||||||
].divide(SizedBox(height: 5)),
|
letterSpacing: 0.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
].divide(SizedBox(height: 10.rpx)),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
Obx(
|
getLine(),
|
||||||
() => GestureDetector(
|
SizedBox(
|
||||||
onTap: () {
|
height: 25.rpx,
|
||||||
// 当点击时,将 type 设置为 0(允许控制)
|
),
|
||||||
type.value = 1;
|
Container(
|
||||||
controller.updateAll();
|
decoration: BoxDecoration(
|
||||||
},
|
color: Color(0xFF003058),
|
||||||
child: Container(
|
borderRadius: BorderRadius.circular(16.rpx)),
|
||||||
width: MediaQuery.sizeOf(context).width,
|
child: Padding(
|
||||||
constraints: BoxConstraints(
|
padding: EdgeInsetsDirectional.only(
|
||||||
minHeight: 46,
|
start: 38.rpx,
|
||||||
),
|
top: 50.rpx,
|
||||||
decoration: BoxDecoration(
|
end: 30.rpx,
|
||||||
borderRadius: BorderRadius.circular(0),
|
bottom: 30.rpx),
|
||||||
),
|
child: Column(
|
||||||
child: Row(
|
|
||||||
mainAxisSize: MainAxisSize.max,
|
|
||||||
mainAxisAlignment:
|
|
||||||
MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
children: [
|
||||||
Text(
|
GestureDetector(
|
||||||
'允许对方控制和查看该设备'.tr,
|
onTap: () {
|
||||||
style: FlutterFlowTheme.of(context)
|
// 当点击时,将 type 设置为 0(允许控制)
|
||||||
.bodyMedium
|
|
||||||
.override(
|
data['info'][3]['opType'] = 1;
|
||||||
fontFamily: 'Readex Pro',
|
opType.value = 1;
|
||||||
color: Color(0xFF333333),
|
},
|
||||||
fontSize: 13,
|
child: Container(
|
||||||
letterSpacing: 0.0,
|
width: MediaQuery.sizeOf(context).width,
|
||||||
),
|
constraints: const 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:
|
||||||
|
const Color(0xFFFFFFFF),
|
||||||
|
fontSize: 27.rpx,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Obx(() {
|
||||||
|
return Container(
|
||||||
|
height: 33.rpx,
|
||||||
|
child: AspectRatio(
|
||||||
|
aspectRatio: 1,
|
||||||
|
child: Center(
|
||||||
|
child: Container(
|
||||||
|
height: 33.rpx,
|
||||||
|
width: 33.rpx,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius
|
||||||
|
.circular(
|
||||||
|
33.rpx / 2),
|
||||||
|
border: Border.all(
|
||||||
|
width:
|
||||||
|
opType.value == 1
|
||||||
|
? 1
|
||||||
|
: 0.5,
|
||||||
|
color:
|
||||||
|
Color(0xFFC8CBD2),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: opType.value == 1
|
||||||
|
? Center(
|
||||||
|
child: ClipOval(
|
||||||
|
child:
|
||||||
|
Container(
|
||||||
|
width:
|
||||||
|
33.rpx *
|
||||||
|
0.6,
|
||||||
|
height:
|
||||||
|
33.rpx *
|
||||||
|
0.6,
|
||||||
|
color: const Color(
|
||||||
|
0xFF6BFDAC),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: null,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
})
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
Align(
|
GestureDetector(
|
||||||
alignment: AlignmentDirectional(0, -1),
|
onTap: () {
|
||||||
child: Icon(
|
// 当点击时,将 type 设置为 1(仅允许查看)
|
||||||
type.value == 1
|
data['info'][3]['opType'] = 2;
|
||||||
? Icons.check_circle // 选中时为实心圆
|
opType.value = 2;
|
||||||
: Icons
|
},
|
||||||
.radio_button_unchecked, // 未选中时为空心圆
|
child: Container(
|
||||||
color: type.value == 1
|
width: MediaQuery.sizeOf(context).width,
|
||||||
? Color(0xFFD3B684) // 选中时的颜色
|
constraints: const BoxConstraints(
|
||||||
: Colors.grey, // 未选中时的颜色
|
minHeight: 46,
|
||||||
size: 18,
|
),
|
||||||
|
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:
|
||||||
|
const Color(0xFFFFFFFF),
|
||||||
|
fontSize: 27.rpx,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Obx(() {
|
||||||
|
return Container(
|
||||||
|
height: 33.rpx,
|
||||||
|
child: AspectRatio(
|
||||||
|
aspectRatio: 1,
|
||||||
|
child: Center(
|
||||||
|
child: Container(
|
||||||
|
height: 33.rpx,
|
||||||
|
width: 33.rpx,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius
|
||||||
|
.circular(
|
||||||
|
33.rpx / 2),
|
||||||
|
border: Border.all(
|
||||||
|
width:
|
||||||
|
opType.value == 2
|
||||||
|
? 1
|
||||||
|
: 0.5,
|
||||||
|
color:
|
||||||
|
Color(0xFFC8CBD2),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: opType.value == 2
|
||||||
|
? Center(
|
||||||
|
child: ClipOval(
|
||||||
|
child:
|
||||||
|
Container(
|
||||||
|
width:
|
||||||
|
33.rpx *
|
||||||
|
0.6,
|
||||||
|
height:
|
||||||
|
33.rpx *
|
||||||
|
0.6,
|
||||||
|
color: const Color(
|
||||||
|
0xFF6BFDAC),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: null,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
})
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
))
|
||||||
),
|
]),
|
||||||
),
|
|
||||||
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(
|
padding: const EdgeInsetsDirectional.fromSTEB(
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
0, 0, 0, AppConstants.page_button_bottom_padding),
|
||||||
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(
|
child: Container(
|
||||||
width: MediaQuery.sizeOf(context).width,
|
width: MediaQuery.sizeOf(context).width,
|
||||||
height: MediaQuery.sizeOf(context).height * 0.056,
|
height: MediaQuery.sizeOf(context).height * 0.056,
|
||||||
decoration: BoxDecoration(
|
constraints: const BoxConstraints(
|
||||||
color:
|
minHeight: 46,
|
||||||
FlutterFlowTheme.of(context).secondaryBackground,
|
),
|
||||||
borderRadius: BorderRadius.circular(12),
|
decoration: BoxDecoration(
|
||||||
),
|
color: FlutterFlowTheme.of(context).secondaryBackground,
|
||||||
child: CustomCard(
|
borderRadius: BorderRadius.circular(16.rpx),
|
||||||
borderRadius: 16.rpx,
|
),
|
||||||
gradientDirection: GradientDirection.vertical,
|
child: Container(
|
||||||
onTap: () async {},
|
width: MediaQuery.sizeOf(context).width,
|
||||||
colors: const [
|
height: MediaQuery.sizeOf(context).height * 0.056,
|
||||||
Color(0xFFFCFCFC),
|
decoration: BoxDecoration(
|
||||||
Color(0xFFF8FAF9),
|
color: FlutterFlowTheme.of(context)
|
||||||
Color(0XFFECF6F3),
|
.secondaryBackground,
|
||||||
Color(0XFFD9F0E9),
|
borderRadius: BorderRadius.circular(16.rpx),
|
||||||
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,
|
|
||||||
)),
|
|
||||||
),
|
),
|
||||||
)
|
child: CustomCard(
|
||||||
|
borderRadius: 16.rpx,
|
||||||
// FFButtonWidget(
|
gradientDirection: GradientDirection.vertical,
|
||||||
// onPressed: () {
|
onTap: () async {
|
||||||
// showCustomConfirmDialog(context, "是否确定删除?").then((v) {
|
deviceListController.unbindShareDevice(
|
||||||
// if ('confirm' == v) {
|
data['info'][5]['uid'], data['mac'], context);
|
||||||
// // deviceShareController
|
},
|
||||||
// // .deleteShare(shareInfo)
|
colors: const [
|
||||||
// // .then((d) {
|
Color(0xFFFCFCFC),
|
||||||
// // deviceShareController.initData();
|
Color(0xFFF8FAF9),
|
||||||
// // deviceShareController.updateAll();
|
Color(0XFFECF6F3),
|
||||||
// // Get.back();
|
Color(0XFFD9F0E9),
|
||||||
// // });
|
Color(0xFFCEECE3)
|
||||||
// // print("showCustomConfirmDialog $v");
|
],
|
||||||
// }
|
child: Container(
|
||||||
// });
|
width: double.infinity,
|
||||||
// },
|
height: 90.rpx,
|
||||||
// text: '删除',
|
alignment: Alignment.center,
|
||||||
// options: FFButtonOptions(
|
decoration: BoxDecoration(
|
||||||
// height: 40,
|
borderRadius: BorderRadius.circular(16.rpx),
|
||||||
// padding: EdgeInsetsDirectional.fromSTEB(24, 0, 24, 0),
|
),
|
||||||
// iconPadding:
|
child: Text("解除分享".tr,
|
||||||
// EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0),
|
style: TextStyle(
|
||||||
// color: Color(0xFFE55E92),
|
color: const Color(0xFF003058),
|
||||||
// textStyle:
|
fontSize: 30.rpx,
|
||||||
// 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),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
],
|
||||||
],
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> _handleBackPressed(BuildContext context) async {
|
||||||
|
final currentTime = DateTime.now();
|
||||||
|
// 如果上次点击返回键时间为空,或者间隔超过 1 秒
|
||||||
|
if (_lastBackPressedTime == null ||
|
||||||
|
currentTime.difference(_lastBackPressedTime!) > Duration(seconds: 2)) {
|
||||||
|
_lastBackPressedTime = currentTime;
|
||||||
|
TopSlideNotification.show(
|
||||||
|
context,
|
||||||
|
text: "再按一次退出程序".tr,
|
||||||
|
);
|
||||||
|
return false; // 阻止退出程序
|
||||||
|
} else {
|
||||||
|
return true; // 允许退出程序
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,17 +10,20 @@ import 'package:vbvs_app/controller/mh_controller/mhdevice_share_controller.dart
|
|||||||
class ShareUserWidget extends GetView {
|
class ShareUserWidget extends GetView {
|
||||||
int index;
|
int index;
|
||||||
MHDeviceShareController repairListController;
|
MHDeviceShareController repairListController;
|
||||||
|
String mac;
|
||||||
ShareUserWidget({required this.index, required this.repairListController}) {}
|
ShareUserWidget(
|
||||||
|
{required this.index,
|
||||||
|
required this.repairListController,
|
||||||
|
required this.mac}) {}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var info = repairListController.model.shareUser![index];
|
var info = repairListController.model.shareUser![index];
|
||||||
|
// info = info.add({'mac': mac});
|
||||||
return InkWell(
|
return InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
repairListController.model.mainShare =
|
Get.toNamed('/shareDeviceDetail',
|
||||||
repairListController.model.shareUser![index];
|
arguments: {"mac": mac, "info": info});
|
||||||
Get.toNamed('/shareDeviceDetail');
|
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
width: MediaQuery.sizeOf(context).width,
|
width: MediaQuery.sizeOf(context).width,
|
||||||
@@ -62,7 +65,7 @@ class ShareUserWidget extends GetView {
|
|||||||
child: Align(
|
child: Align(
|
||||||
alignment: const AlignmentDirectional(-1, 0),
|
alignment: const AlignmentDirectional(-1, 0),
|
||||||
child: Text(
|
child: Text(
|
||||||
'${info['userName']}',
|
'${info[0]['v']}',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
@@ -77,9 +80,9 @@ class ShareUserWidget extends GetView {
|
|||||||
child: Align(
|
child: Align(
|
||||||
alignment: const AlignmentDirectional(-1, 0),
|
alignment: const AlignmentDirectional(-1, 0),
|
||||||
child: Text(
|
child: Text(
|
||||||
info['op_type'] == 1
|
info[3]['opType'] == 1
|
||||||
? '允许对方控制和查看该设备'.tr
|
? '允许对方控制和查看该设备'.tr
|
||||||
: info['op_type'] == 2
|
: info[3]['opType'] == 2
|
||||||
? '仅允许对方查看该设备'.tr
|
? '仅允许对方查看该设备'.tr
|
||||||
: '',
|
: '',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ class _VitalSignsSensorState extends State<VitalSignsSensorPage> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ class _MhAboutUsPageState extends State<MhAboutUsPage> {
|
|||||||
/// 左边返回按钮
|
/// 左边返回按钮
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 0,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -88,36 +88,6 @@ class _MhAboutUsPageState extends State<MhAboutUsPage> {
|
|||||||
actions: [],
|
actions: [],
|
||||||
centerTitle: false,
|
centerTitle: false,
|
||||||
),
|
),
|
||||||
|
|
||||||
// body: SafeArea(
|
|
||||||
// top: true,
|
|
||||||
// child: Padding(
|
|
||||||
// padding: EdgeInsets.symmetric(horizontal: 30.rpx),
|
|
||||||
// child: Column(
|
|
||||||
// children: [
|
|
||||||
// Expanded(
|
|
||||||
// child: Obx(() {
|
|
||||||
// if (pdfController.localPdfPath.value == null) {
|
|
||||||
// return Center(child: CircularProgressIndicator());
|
|
||||||
// } else {
|
|
||||||
// return PDFView(
|
|
||||||
// filePath: pdfController.localPdfPath.value!,
|
|
||||||
// autoSpacing: false,
|
|
||||||
// enableSwipe: true,
|
|
||||||
// swipeHorizontal: false,
|
|
||||||
// pageSnap: true,
|
|
||||||
// fitEachPage: true,
|
|
||||||
// defaultPage: 0,
|
|
||||||
// onRender: (pages) => print('PDF 渲染完成,共 $pages 页'),
|
|
||||||
// onError: (error) => print('PDF 加载错误: $error'),
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
// }),
|
|
||||||
// ),
|
|
||||||
// ],
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
top: true,
|
top: true,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ class AddressListPage extends GetView<AddressListController> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -701,8 +701,6 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
||||||
Flexible(
|
Flexible(
|
||||||
child: Container(
|
child: Container(
|
||||||
width: MediaQuery.sizeOf(
|
width: MediaQuery.sizeOf(
|
||||||
@@ -1401,7 +1399,6 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
|
|||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 30.rpx,
|
fontSize: 30.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
fontWeight: FontWeight.w600,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -28,37 +28,8 @@ class _BluetoothPageState extends State<BluetoothPage> {
|
|||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
obsData = Map<String, dynamic>.from(widget.data).obs; // 复制成 obs
|
obsData = Map<String, dynamic>.from(widget.data).obs; // 复制成 obs
|
||||||
// String text;
|
|
||||||
|
|
||||||
// if (obsData.containsKey('name') &&
|
|
||||||
// obsData['name'] != null &&
|
|
||||||
// obsData['name'].toString().isNotEmpty) {
|
|
||||||
// text = obsData['name'].toString();
|
|
||||||
// } else {
|
|
||||||
// text = '未命名'.tr;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// _calculateTextHalfWidth(text);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// void _calculateTextHalfWidth(String text) {
|
|
||||||
// final textSpan = TextSpan(
|
|
||||||
// text: text,
|
|
||||||
// style: TextStyle(
|
|
||||||
// fontSize: 40.rpx,
|
|
||||||
// height: 1,
|
|
||||||
// ),
|
|
||||||
// );
|
|
||||||
// final textPainter = TextPainter(
|
|
||||||
// text: textSpan,
|
|
||||||
// textDirection: ui.TextDirection.ltr,
|
|
||||||
// );
|
|
||||||
// textPainter.layout(); // 计算文本宽度
|
|
||||||
// setState(() {
|
|
||||||
// _textHalfWidth = textPainter.width / 2;
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
BoxConstraints? bodysize;
|
BoxConstraints? bodysize;
|
||||||
DeviceListController deviceListController = Get.find();
|
DeviceListController deviceListController = Get.find();
|
||||||
@override
|
@override
|
||||||
@@ -100,7 +71,7 @@ class _BluetoothPageState extends State<BluetoothPage> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -236,11 +207,21 @@ class _BluetoothPageState extends State<BluetoothPage> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
_buildMenuButton(context, '设备校准', "/mhtCalibrationAfterPage", arguments: obsData,),
|
_buildMenuButton(
|
||||||
|
context,
|
||||||
|
'设备校准',
|
||||||
|
"/mhtCalibrationAfterPage",
|
||||||
|
arguments: obsData,
|
||||||
|
),
|
||||||
_buildMenuButton(
|
_buildMenuButton(
|
||||||
context, '体征传感器', "/vitalSignsSensorPage",
|
context, '体征传感器', "/vitalSignsSensorPage",
|
||||||
arguments: obsData),
|
arguments: obsData),
|
||||||
_buildMenuButton(context, 'WIFI配置', "/mhtWifiAfterPage",arguments: obsData,),
|
_buildMenuButton(
|
||||||
|
context,
|
||||||
|
'WIFI配置',
|
||||||
|
"/mhtWifiAfterPage",
|
||||||
|
arguments: obsData,
|
||||||
|
),
|
||||||
// _buildMenuButton(
|
// _buildMenuButton(
|
||||||
// context, '睡眠习惯', "/sleepHabitPage"),
|
// context, '睡眠习惯', "/sleepHabitPage"),
|
||||||
_buildMenuButton(
|
_buildMenuButton(
|
||||||
@@ -252,7 +233,25 @@ class _BluetoothPageState extends State<BluetoothPage> {
|
|||||||
context,
|
context,
|
||||||
obsData['bind_type'] == 1 ? '解绑' : '删除',
|
obsData['bind_type'] == 1 ? '解绑' : '删除',
|
||||||
"",
|
"",
|
||||||
onTap: () {/*...*/},
|
onTap: () async {
|
||||||
|
await deviceListController
|
||||||
|
.unbindDevice(obsData);
|
||||||
|
await deviceListController
|
||||||
|
.getDeviceList();
|
||||||
|
|
||||||
|
MHTHomeController homeController =
|
||||||
|
Get.find();
|
||||||
|
homeController.selectDevcie.value = "";
|
||||||
|
try {
|
||||||
|
WebviewTestController
|
||||||
|
webviewTestController = Get.find();
|
||||||
|
webviewTestController.web.jsbridge?.dart
|
||||||
|
.unBindDevice();
|
||||||
|
} catch (e) {
|
||||||
|
ef.log("[h5]通知列表更新报错:$e");
|
||||||
|
}
|
||||||
|
Get.toNamed("/mianPageBottomChange");
|
||||||
|
},
|
||||||
),
|
),
|
||||||
_buildMenuButton(
|
_buildMenuButton(
|
||||||
context, '详情', "/devicePeopleInfo",
|
context, '详情', "/devicePeopleInfo",
|
||||||
@@ -330,64 +329,6 @@ class _BluetoothPageState extends State<BluetoothPage> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Widget _buildMenuButton(
|
|
||||||
// BuildContext context,
|
|
||||||
// String title,
|
|
||||||
// String? path, {
|
|
||||||
// Map<dynamic, dynamic>? arguments,
|
|
||||||
// VoidCallback? onTap,
|
|
||||||
// }) {
|
|
||||||
// return Padding(
|
|
||||||
// padding: EdgeInsets.only(bottom: 19.rpx),
|
|
||||||
// child: ClickableContainer(
|
|
||||||
// backgroundColor: Colors.transparent,
|
|
||||||
// highlightColor: Color(0XFF055466),
|
|
||||||
// padding: EdgeInsets.only(left: 0),
|
|
||||||
// onTap: () {
|
|
||||||
// // if (path?.isNotEmpty == true) {
|
|
||||||
// // if (arguments != null) {
|
|
||||||
// // Get.toNamed(path!, arguments: arguments);
|
|
||||||
// // } else {
|
|
||||||
// // Get.toNamed(path!);
|
|
||||||
// // }
|
|
||||||
// // } else {
|
|
||||||
// // TopSlideNotification.show(
|
|
||||||
// // context,
|
|
||||||
// // text: "功能开发中...",
|
|
||||||
// // );
|
|
||||||
// // }
|
|
||||||
// if (onTap != null) {
|
|
||||||
// onTap(); // 优先执行自定义逻辑
|
|
||||||
// } else if (path?.isNotEmpty == true) {
|
|
||||||
// if (arguments != null) {
|
|
||||||
// Get.toNamed(path!, arguments: arguments);
|
|
||||||
// } else {
|
|
||||||
// Get.toNamed(path!);
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// TopSlideNotification.show(
|
|
||||||
// context,
|
|
||||||
// text: "功能开发中...",
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// child: Container(
|
|
||||||
// height: MediaQuery.sizeOf(context).height * 0.0566,
|
|
||||||
// decoration: BoxDecoration(
|
|
||||||
// color: const Color(0xFF003058),
|
|
||||||
// borderRadius: BorderRadius.circular(16.rpx),
|
|
||||||
// ),
|
|
||||||
// child: Center(
|
|
||||||
// child: Text(
|
|
||||||
// title,
|
|
||||||
// style: const TextStyle(color: Colors.white, fontSize: 16),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
|
|
||||||
Widget _buildMenuButton(
|
Widget _buildMenuButton(
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
String title,
|
String title,
|
||||||
@@ -401,14 +342,15 @@ class _BluetoothPageState extends State<BluetoothPage> {
|
|||||||
child: ClickableContainer(
|
child: ClickableContainer(
|
||||||
backgroundColor: Colors.transparent,
|
backgroundColor: Colors.transparent,
|
||||||
highlightColor: const Color(0XFF055466),
|
highlightColor: const Color(0XFF055466),
|
||||||
|
borderRadius: 16.rpx,
|
||||||
padding: EdgeInsets.only(left: 0),
|
padding: EdgeInsets.only(left: 0),
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
if (onTap != null) {
|
if (onTap != null) {
|
||||||
onTap(); // 自定义点击逻辑优先执行
|
onTap(); // 自定义点击逻辑优先执行
|
||||||
} else if (path?.isNotEmpty == true) {
|
} else if (path?.isNotEmpty == true) {
|
||||||
if (path == "/sleepHabitPage") {
|
if (path == "/sleepHabitPage") {
|
||||||
WebviewTestController webviewTestController = Get.find();
|
WebviewTestController webviewTestController = Get.find();
|
||||||
webviewTestController.web.jsbridge?.dart.toSleepHabit();
|
webviewTestController.web.jsbridge?.dart.toSleepHabit();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final result = await Get.toNamed(path!, arguments: arguments);
|
final result = await Get.toNamed(path!, arguments: arguments);
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ class BookInfoPage extends GetView<BookInfoController> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ class BookSuccessPage extends GetView {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class DeletedAccountPage extends GetView {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -372,7 +372,8 @@ class DeviceInfoWidget extends GetView {
|
|||||||
'的分享',
|
'的分享',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
fontSize: 21.rpx,
|
fontSize:
|
||||||
|
AppFontsize.normal_text_size,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ class _MHTBindDeviceTypePageState extends State<MHTBindDeviceTypePage> {
|
|||||||
/// 左边返回按钮
|
/// 左边返回按钮
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 0,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
|
|||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 20.rpx,
|
left: 20.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
right: 30.rpx,
|
right: 30.rpx,
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ class _DeviceListPageState extends State<DeviceListPage> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ class DevicePeopleInfo extends GetView<PeopleInfoController> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -188,10 +188,8 @@ class DevicePeopleInfo extends GetView<PeopleInfoController> {
|
|||||||
"体重:${person["weight"] == null ? "-" : "${person["weight"]}kg"}"),
|
"体重:${person["weight"] == null ? "-" : "${person["weight"]}kg"}"),
|
||||||
getInfoRow(context,
|
getInfoRow(context,
|
||||||
"生日:${person["birthday"] == null ? "-" : time_08_Formatter_pattern(person["birthday"], "yyyy年MM月dd日")}"),
|
"生日:${person["birthday"] == null ? "-" : time_08_Formatter_pattern(person["birthday"], "yyyy年MM月dd日")}"),
|
||||||
getInfoRow(
|
|
||||||
context, "电话:${person["tel"] ?? "-"}"),
|
|
||||||
getInfoRow(context,
|
getInfoRow(context,
|
||||||
"紧急联系人:${person["contact"] ?? "-"}"),
|
"联系方式:${person["contact"] ?? "-"}"),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import 'package:vbvs_app/model/api_response.dart';
|
|||||||
import 'package:vbvs_app/pages/mh_page/ShareUserWidget.dart';
|
import 'package:vbvs_app/pages/mh_page/ShareUserWidget.dart';
|
||||||
|
|
||||||
class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
||||||
var data;
|
Map data;
|
||||||
ShareDeviceWidget({super.key, required this.data});
|
ShareDeviceWidget({super.key, required this.data});
|
||||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||||
final ScrollController scrollController = ScrollController();
|
final ScrollController scrollController = ScrollController();
|
||||||
@@ -66,7 +66,7 @@ class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -464,6 +464,7 @@ class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
|||||||
.entries
|
.entries
|
||||||
.map((e) => ShareUserWidget(
|
.map((e) => ShareUserWidget(
|
||||||
index: e.key,
|
index: e.key,
|
||||||
|
mac: data['mac'],
|
||||||
repairListController:
|
repairListController:
|
||||||
controller))
|
controller))
|
||||||
.toList() as List<Widget>)
|
.toList() as List<Widget>)
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ class EditAddressPage extends GetView<AddressController>
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ class _EditBedPageState extends State<EditBedPage> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
if (widget.data != null &&
|
if (widget.data != null &&
|
||||||
(widget.data['isNextStep'] != null &&
|
(widget.data['isNextStep'] != null &&
|
||||||
@@ -112,7 +112,7 @@ class _EditBedPageState extends State<EditBedPage> {
|
|||||||
TopSlideNotification.show(context,
|
TopSlideNotification.show(context,
|
||||||
text: "修改名称成功".tr);
|
text: "修改名称成功".tr);
|
||||||
deviceListController.getDeviceList();
|
deviceListController.getDeviceList();
|
||||||
|
|
||||||
Map data = {};
|
Map data = {};
|
||||||
final MHTBlueToothController
|
final MHTBlueToothController
|
||||||
bluetoothController = Get.find();
|
bluetoothController = Get.find();
|
||||||
@@ -120,8 +120,7 @@ class _EditBedPageState extends State<EditBedPage> {
|
|||||||
bluetoothController.currentFullDevice;
|
bluetoothController.currentFullDevice;
|
||||||
data['_id'] = device!.deviceID;
|
data['_id'] = device!.deviceID;
|
||||||
data['isNextStep'] = true;
|
data['isNextStep'] = true;
|
||||||
Get.toNamed("/roomPickerPage",
|
Get.toNamed("/roomPickerPage", arguments: data);
|
||||||
arguments: data);
|
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -148,7 +147,6 @@ class _EditBedPageState extends State<EditBedPage> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ class _ExperienceStorePageState extends State<ExperienceStorePage> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
right: 30.rpx,
|
right: 30.rpx,
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ class _HelpArticleState extends State<HelpArticle> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ class _MhtSleepReportReturnPageState extends State<MhtSleepReportReturnPage> {
|
|||||||
left: 0,
|
left: 0,
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
returnIconButtomNew,
|
returnIconButtomNew(),
|
||||||
Text(
|
Text(
|
||||||
'健康报告'.tr,
|
'健康报告'.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
|
|||||||
@@ -847,7 +847,7 @@ class _NewHomePageState extends State<NewHomePage> {
|
|||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: stringToColor("#85F5FF"),
|
color: stringToColor("#85F5FF"),
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
fontSize: 30.rpx,
|
fontSize: 26.rpx,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ class IssueListPage extends GetView<IssueListController> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ class _MessageDetailPageState extends State<MessageDetailPage> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -150,7 +150,7 @@ class _MessageDetailPageState extends State<MessageDetailPage> {
|
|||||||
.toList(),
|
.toList(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
].divide(SizedBox(width: 30.rpx)),
|
].divide(SizedBox(width: 20.rpx)),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
))),
|
))),
|
||||||
|
|||||||
@@ -77,66 +77,6 @@ class _MessagePageState extends State<MessagePage> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
// messageController.messageList.value = [
|
|
||||||
// {
|
|
||||||
// "_id": "6836c3ee4e626030c8000000",
|
|
||||||
// "type": "app_vsm",
|
|
||||||
// "data": {
|
|
||||||
// "title": "实时监测通知",
|
|
||||||
// "val": [
|
|
||||||
// {"k": "设备ID", "v": "48ca43b1b454"},
|
|
||||||
// {"k": "使用人员", "v": "bb"},
|
|
||||||
// {"k": "消息类型", "v": "呼吸异常"},
|
|
||||||
// {"k": "检测值", "v": '26'},
|
|
||||||
// {"k": "检测时间", "v": "2025-05-28 16:06:07"}
|
|
||||||
// ]
|
|
||||||
// },
|
|
||||||
// "level": 3,
|
|
||||||
// "tid": "67f5d96e26ef310463000000",
|
|
||||||
// "uid": "68319fe9702cc59bd1000000",
|
|
||||||
// "status": 0,
|
|
||||||
// "createTime": "1748419566651"
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// "_id": "6836c3e84e625f30c8000000",
|
|
||||||
// "type": "app_vsm",
|
|
||||||
// "data": {
|
|
||||||
// "title": "实时监测通知",
|
|
||||||
// "val": [
|
|
||||||
// {"k": "设备ID", "v": "48ca43b1b454"},
|
|
||||||
// {"k": "使用人员", "v": "bb"},
|
|
||||||
// {"k": "消息类型", "v": "心率异常"},
|
|
||||||
// {"k": "检测值", "v": '115'},
|
|
||||||
// {"k": "检测时间", "v": "2025-05-28 16:06:00"}
|
|
||||||
// ]
|
|
||||||
// },
|
|
||||||
// "level": 3,
|
|
||||||
// "tid": "67f5d96e26ef310463000000",
|
|
||||||
// "uid": "68319fe9702cc59bd1000000",
|
|
||||||
// "status": 0,
|
|
||||||
// "createTime": "1748419560486"
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// "_id": "6836bd0c4e625e30c8000000",
|
|
||||||
// "type": "app_vsm",
|
|
||||||
// "data": {
|
|
||||||
// "title": "实时监测通知",
|
|
||||||
// "val": [
|
|
||||||
// {"k": "设备ID", "v": "48ca43b1b454"},
|
|
||||||
// {"k": "使用人员", "v": "bb"},
|
|
||||||
// {"k": "消息类型", "v": "心率异常"},
|
|
||||||
// {"k": "检测值", "v": '107'},
|
|
||||||
// {"k": "检测时间", "v": "1748417761000"}
|
|
||||||
// ]
|
|
||||||
// },
|
|
||||||
// "level": 3,
|
|
||||||
// "tid": "67f5d96e26ef310463000000",
|
|
||||||
// "uid": "68319fe9702cc59bd1000000",
|
|
||||||
// "status": 0,
|
|
||||||
// "createTime": "1748417804381"
|
|
||||||
// }
|
|
||||||
// ];
|
|
||||||
|
|
||||||
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
|
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
|
||||||
statusBarColor: Colors.transparent,
|
statusBarColor: Colors.transparent,
|
||||||
statusBarIconBrightness: Brightness.light,
|
statusBarIconBrightness: Brightness.light,
|
||||||
@@ -176,7 +116,7 @@ class _MessagePageState extends State<MessagePage> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ class _MyExperiencePageState extends State<MyExperiencePage> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import 'package:vbvs_app/common/util/MyUtils.dart';
|
|||||||
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
|
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
|
||||||
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
|
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
|
||||||
import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
|
import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
|
||||||
|
import 'package:vbvs_app/controller/mh_controller/message_controller.dart';
|
||||||
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
|
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
|
||||||
import 'package:vbvs_app/controller/user_info_controller.dart';
|
import 'package:vbvs_app/controller/user_info_controller.dart';
|
||||||
import 'dart:ui' as ui;
|
import 'dart:ui' as ui;
|
||||||
@@ -28,6 +29,7 @@ class _MinePageState extends State<NewMinePage> {
|
|||||||
GlobalController globalController = Get.find();
|
GlobalController globalController = Get.find();
|
||||||
UserInfoController userInfoController = Get.find();
|
UserInfoController userInfoController = Get.find();
|
||||||
ThemeController themeController = Get.find();
|
ThemeController themeController = Get.find();
|
||||||
|
MhMessageController messageController = Get.find();
|
||||||
// final GlobalKey _textKey = GlobalKey();
|
// final GlobalKey _textKey = GlobalKey();
|
||||||
|
|
||||||
// double _textHalfWidth = 0;
|
// double _textHalfWidth = 0;
|
||||||
@@ -93,35 +95,45 @@ class _MinePageState extends State<NewMinePage> {
|
|||||||
automaticallyImplyLeading: false,
|
automaticallyImplyLeading: false,
|
||||||
titleSpacing: 0,
|
titleSpacing: 0,
|
||||||
actions: [
|
actions: [
|
||||||
ClickableContainer(
|
Obx(() {
|
||||||
|
return ClickableContainer(
|
||||||
backgroundColor: Colors.transparent,
|
backgroundColor: Colors.transparent,
|
||||||
highlightColor: Colors.transparent,
|
highlightColor: Colors.transparent,
|
||||||
padding: EdgeInsets.only(right: 38.rpx),
|
padding: EdgeInsets.only(right: 38.rpx),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
// if (userInfoController.model.login ==
|
|
||||||
// LoginStatus.LOGIN.code) {
|
|
||||||
// TopSlideNotification.show(
|
|
||||||
// context,
|
|
||||||
// text: "待开发功能".tr,
|
|
||||||
// );
|
|
||||||
// } else {
|
|
||||||
// TopSlideNotification.show(
|
|
||||||
// context,
|
|
||||||
// text: "必须登录提示".tr,
|
|
||||||
// textColor: themeController.currentColor.sc9,
|
|
||||||
// );
|
|
||||||
// Get.toNamed("/loginPage");
|
|
||||||
// }
|
|
||||||
Get.toNamed('/messagePage');
|
Get.toNamed('/messagePage');
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Stack(
|
||||||
height: 42.rpx,
|
clipBehavior: Clip.none,
|
||||||
width: 42.rpx,
|
children: [
|
||||||
child: SvgPicture.asset(
|
Container(
|
||||||
'assets/img/icon/message.svg',
|
height: 42.rpx,
|
||||||
color: Colors.white,
|
width: 42.rpx,
|
||||||
// color: Colors.white,
|
child: SvgPicture.asset(
|
||||||
))),
|
'assets/img/icon/message.svg',
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
if (messageController.model.body_message_read == 1 ||
|
||||||
|
messageController.model.system_message_read == 1)
|
||||||
|
Positioned(
|
||||||
|
top: -4.rpx,
|
||||||
|
right: -4.rpx,
|
||||||
|
child: Container(
|
||||||
|
width: 14.rpx,
|
||||||
|
height: 14.rpx,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.red,
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
border: Border.all(
|
||||||
|
color: Colors.white, width: 2.rpx),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
})
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
@@ -311,7 +323,7 @@ class _MinePageState extends State<NewMinePage> {
|
|||||||
MHTLoginController mhtLoginController =
|
MHTLoginController mhtLoginController =
|
||||||
Get.find<MHTLoginController>();
|
Get.find<MHTLoginController>();
|
||||||
await mhtLoginController
|
await mhtLoginController
|
||||||
.openWeChatCustomerService(context);
|
.openWeChatCustomerService(context);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ class _SettingPageState extends State<SettingPage> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ class PeopleInfoPage extends GetView<PeopleInfoController> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
right: 30.rpx,
|
right: 30.rpx,
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ class _PrivacyPolicyPageState extends State<PrivacyPolicyPage> {
|
|||||||
/// 左边返回按钮
|
/// 左边返回按钮
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 0,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ class RepairHistoryListPage extends GetView<RepairInfoController> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ class DeviceRepairPage extends GetView<RepairListController> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ class _RoomPickerPageState extends State<RoomPickerPage> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
if (widget.data != null &&
|
if (widget.data != null &&
|
||||||
(widget.data['isNextStep'] != null &&
|
(widget.data['isNextStep'] != null &&
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ class ScorePage extends GetView<mh.ScoreController> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class _SleepHabitPageState extends State<SleepHabitPage> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ class Smys extends GetView<SleepingHabitController> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -131,7 +131,6 @@ class Smys extends GetView<SleepingHabitController> {
|
|||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ class _UpdateUserPageState extends State<EditUserPage> {
|
|||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
right: 20.rpx,
|
right: 20.rpx,
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ class MHTLoginPage extends GetView<MHTLoginController> {
|
|||||||
// ),
|
// ),
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -182,6 +182,7 @@ class MHTLoginPage extends GetView<MHTLoginController> {
|
|||||||
isProgrammaticPop = false;
|
isProgrammaticPop = false;
|
||||||
return; // 阻止处理
|
return; // 阻止处理
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Platform.isAndroid) {
|
if (Platform.isAndroid) {
|
||||||
var flag = await _handleBackPressed(context); // 自定义返回逻辑
|
var flag = await _handleBackPressed(context); // 自定义返回逻辑
|
||||||
if (flag) {
|
if (flag) {
|
||||||
@@ -1273,7 +1274,7 @@ class MHTLoginPage extends GetView<MHTLoginController> {
|
|||||||
Get.offAndToNamed(
|
Get.offAndToNamed(
|
||||||
"/mianPageBottomChange");
|
"/mianPageBottomChange");
|
||||||
//登陆成功
|
//登陆成功
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
colors: [
|
colors: [
|
||||||
@@ -1786,8 +1787,8 @@ class MHTLoginPage extends GetView<MHTLoginController> {
|
|||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
// loginController.model.isIos == true &&
|
// loginController.model.isIos == true &&
|
||||||
MHTRegisterController
|
MHTRegisterController registerController =
|
||||||
registerController = Get.find();
|
Get.find();
|
||||||
if (registerController
|
if (registerController
|
||||||
.model.register_agree ==
|
.model.register_agree ==
|
||||||
null ||
|
null ||
|
||||||
@@ -1804,8 +1805,7 @@ class MHTLoginPage extends GetView<MHTLoginController> {
|
|||||||
}
|
}
|
||||||
MHTLoginController loginController =
|
MHTLoginController loginController =
|
||||||
Get.find();
|
Get.find();
|
||||||
await loginController
|
await loginController.wxLoginSendAuth();
|
||||||
.wxLoginSendAuth();
|
|
||||||
// TopSlideNotification.show(context,
|
// TopSlideNotification.show(context,
|
||||||
// text: "测试阶段,暂不支持".tr);
|
// text: "测试阶段,暂不支持".tr);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ class RegisterPage extends GetView<MHTRegisterController> {
|
|||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -85,7 +85,7 @@ class RegisterPage extends GetView<MHTRegisterController> {
|
|||||||
height: bodysize!.maxHeight * 1,
|
height: bodysize!.maxHeight * 1,
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
children: [
|
children: [
|
||||||
Align(
|
Align(
|
||||||
alignment: AlignmentDirectional(-1, 0),
|
alignment: AlignmentDirectional(-1, 0),
|
||||||
child: Padding(
|
child: Padding(
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ class _RxhxMhtState extends State<RxhxMht> {
|
|||||||
// 左侧图标
|
// 左侧图标
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0.rpx,
|
left: 0.rpx,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ class UpdatePasswordPage extends GetView<UpdatePasswordController> {
|
|||||||
/// 左边返回按钮
|
/// 左边返回按钮
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 0,
|
||||||
child: returnIconButtom,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ class _UserAgreementPageState extends State<UserAgreementPage> {
|
|||||||
/// 左边返回按钮
|
/// 左边返回按钮
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 0,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ class _MHTNewSleepReportPageState extends State<MHTNewSleepReportPage> {
|
|||||||
widget.data['arrow'] == true)
|
widget.data['arrow'] == true)
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 20,
|
left: 20,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
|
|||||||
/// 左边返回按钮
|
/// 左边返回按钮
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 0,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
|
|||||||
// widget.data['arrow'] == true)
|
// widget.data['arrow'] == true)
|
||||||
// Positioned(
|
// Positioned(
|
||||||
// left: 0,
|
// left: 0,
|
||||||
// child: returnIconButtomNew,
|
// child: returnIconButtomNew(),
|
||||||
// ),
|
// ),
|
||||||
// ],
|
// ],
|
||||||
// ),
|
// ),
|
||||||
@@ -238,7 +238,7 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
|
|||||||
widget.data['arrow'] == true)
|
widget.data['arrow'] == true)
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 0,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ class _SleepReportPageState extends State<SleepReportPage> {
|
|||||||
/// 左边返回按钮
|
/// 左边返回按钮
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 0,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ class _XiaoEPageState extends State<XiaoEPage> {
|
|||||||
/// 左边返回按钮
|
/// 左边返回按钮
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 0,
|
||||||
child: returnIconButtomNew,
|
child: returnIconButtomNew(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -114,7 +114,8 @@ var mhroutes = {
|
|||||||
"/aboutUs": (contxt) => MhAboutUsPage(),
|
"/aboutUs": (contxt) => MhAboutUsPage(),
|
||||||
"/userAgreementPage": (context) => UserAgreementPage(),
|
"/userAgreementPage": (context) => UserAgreementPage(),
|
||||||
"/privacyPolicyPage": (context) => PrivacyPolicyPage(),
|
"/privacyPolicyPage": (context) => PrivacyPolicyPage(),
|
||||||
"/shareDeviceDetail": (context) => ShareDeviceDetailWidget(),
|
"/shareDeviceDetail": (context, {arguments}) =>
|
||||||
|
ShareDeviceDetailWidget(data: arguments),
|
||||||
"/messageDetail": (context, {arguments}) =>
|
"/messageDetail": (context, {arguments}) =>
|
||||||
MessageDetailPage(data: arguments),
|
MessageDetailPage(data: arguments),
|
||||||
"/mhtSleepReportReturnPage": (context, {arguments}) =>
|
"/mhtSleepReportReturnPage": (context, {arguments}) =>
|
||||||
|
|||||||
Reference in New Issue
Block a user