diff --git a/assets/images/default_avatar.png b/assets/images/default_avatar.png
new file mode 100644
index 0000000..fec833a
Binary files /dev/null and b/assets/images/default_avatar.png differ
diff --git a/assets/images/icon/add.svg b/assets/images/icon/add.svg
new file mode 100644
index 0000000..d952718
--- /dev/null
+++ b/assets/images/icon/add.svg
@@ -0,0 +1,13 @@
+
diff --git a/assets/mhlangs/zh_CN.json b/assets/mhlangs/zh_CN.json
index ff867e5..3ebb81c 100644
--- a/assets/mhlangs/zh_CN.json
+++ b/assets/mhlangs/zh_CN.json
@@ -37,7 +37,24 @@
"注:首次登录会自动创建账号":"注:首次登录会自动创建账号",
"请输入新密码":"请输入新密码",
"确认新密码":"确认新密码",
- "秒":"秒"
+ "秒":"秒",
+ "添加一台新设备":"添加一台新设备",
+ "添加新设备":"添加新设备",
+ "网络未连接,请开启设备网络后重试":"网络未连接,请开启设备网络后重试",
+ "提交":"提交",
+ "发送验证码成功":"发送验证码成功",
+ "注册成功":"注册成功",
+ "再按一次退出程序":"注再按一次退出程序册成功",
+ "用户拒绝授权":"用户拒绝授权",
+ "用户取消授权":"用户取消授权",
+ "未命名":"未命名",
+ "编辑资料":"编辑资料",
+ "保存":"保存",
+ "点击更换头像":"点击更换头像",
+ "保存失败":"保存失败",
+ "昵称为空":"昵称为空",
+ "保存成功":"保存成功"
+
diff --git a/lib/common/color/AppGlobal.dart b/lib/common/color/AppGlobal.dart
new file mode 100644
index 0000000..1718c1c
--- /dev/null
+++ b/lib/common/color/AppGlobal.dart
@@ -0,0 +1,6 @@
+import 'package:flutter/material.dart';
+
+class AppGlobal {
+ static final GlobalKey navigatorKey =
+ GlobalKey();
+}
diff --git a/lib/common/color/ServiceConstant.dart b/lib/common/color/ServiceConstant.dart
index 946d3b8..d105b9c 100644
--- a/lib/common/color/ServiceConstant.dart
+++ b/lib/common/color/ServiceConstant.dart
@@ -1,6 +1,6 @@
class ServiceConstant {
- // static const String baseHost = "vsbs-test.he-info.cn";//服务地址
- static const String baseHost = "vsbst-api.he-info.cn";//服务地址
+ static const String baseHost = "vsbs-test.he-info.cn";//服务地址
+ // static const String baseHost = "vsbst-api.he-info.cn";//服务地址
static const String service_address = "http://$baseHost";
static String server_service = "/vsbs_app_server";//服务名称
@@ -35,4 +35,9 @@ class ServiceConstant {
static const String sleep_token = "HdAMjzqiYQKsmHRyEFKhfRGQ";
static const String sleep_report_url = "https://alltoone.he-info.cn/h5/#/mattress/sleep/sleep";
+
+ static const String user_register = "/api/user/register";//用户注册
+
+
+
}
diff --git a/lib/component/tool/TopSlideNotification.dart b/lib/component/tool/TopSlideNotification.dart
index a74b6ea..a46c162 100644
--- a/lib/component/tool/TopSlideNotification.dart
+++ b/lib/component/tool/TopSlideNotification.dart
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:get/get.dart';
+import 'package:vbvs_app/common/color/AppGlobal.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
@@ -31,11 +32,42 @@ class TopSlideNotification extends StatefulWidget {
Color? textColor,
double slideOffset = 300.0,
Duration duration = const Duration(seconds: 2),
+ }) {
+ _showInternal(
+ context: context,
+ text: text,
+ fontSize: fontSize,
+ textColor: textColor,
+ slideOffset: slideOffset,
+ duration: duration,
+ );
+ }
+
+ // Internal implementation used by both methods
+ static void _showInternal({
+ BuildContext? context,
+ required String text,
+ required double fontSize,
+ Color? textColor,
+ required double slideOffset,
+ required Duration duration,
}) {
// 如果已有弹窗,先移除
_removeCurrentEntry();
- final overlay = Overlay.of(context);
+ // 获取有效的context,优先使用传入的context,没有则使用navigatorKey的context
+ final effectiveContext = context ?? AppGlobal.navigatorKey.currentContext;
+ if (effectiveContext == null) {
+ debugPrint('TopSlideNotification: No valid context available');
+ return;
+ }
+
+ final overlay = Overlay.of(effectiveContext);
+ if (overlay == null) {
+ debugPrint('TopSlideNotification: Could not find Overlay');
+ return;
+ }
+
final entry = OverlayEntry(
builder: (_) => TopSlideNotification(
text: text,
@@ -164,30 +196,4 @@ class _TopSlideNotificationState extends State
_isAnimating = false; // 动画完成后,标记动画结束
}
}
-
- // 工具方法:调用时直接加进 Overlay 上
- static void show(
- BuildContext context, {
- String text = '操作成功!',
- double fontSize = 16,
- Color? textColor,
- double slideOffset = 300.0,
- Duration duration = const Duration(seconds: 2),
- }) {
- final overlay = Overlay.of(context);
- final entry = OverlayEntry(
- builder: (_) => TopSlideNotification(
- text: text,
- fontSize: fontSize,
- textColor: textColor,
- slideOffset: slideOffset,
- duration: duration,
- ),
- );
- overlay.insert(entry);
-
- Future.delayed(duration + const Duration(milliseconds: 500), () {
- entry.remove();
- });
- }
}
diff --git a/lib/controller/main_bottom/global_controller.dart b/lib/controller/main_bottom/global_controller.dart
index 08ad35b..b9920b2 100644
--- a/lib/controller/main_bottom/global_controller.dart
+++ b/lib/controller/main_bottom/global_controller.dart
@@ -7,7 +7,7 @@ import 'package:vbvs_app/controller/user_info_controller.dart';
import 'package:vbvs_app/pages/common/selectDialog.dart';
class GlobalModel {
- List deviceList = [];
+ List deviceList = [];//用户绑定设备数量
Map deviceMain = {};
Map useBedController = {}; //之前控制的设备
diff --git a/lib/controller/mh_controller/address_controller.dart b/lib/controller/mh_controller/address_controller.dart
index 48c1e74..b85206b 100644
--- a/lib/controller/mh_controller/address_controller.dart
+++ b/lib/controller/mh_controller/address_controller.dart
@@ -2,8 +2,8 @@ import 'package:ef/ef.dart';
import 'package:flutter_city_picker/model/address.dart';
import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:json_annotation/json_annotation.dart';
-import 'package:vbvs_app/controller/mh_controller/user_data.dart';
-import 'package:vbvs_app/controller/mh_controller/muser_info_controller.dart';
+import 'package:vbvs_app/controller/user_info_controller.dart';
+import 'package:vbvs_app/model/user_data.dart';
part 'address_controller.g.dart';
@@ -80,8 +80,8 @@ class AddressController extends GetControllerEx {
addAddress(AddressModel model) async {
try {
- final MUserInfoController userInfoController =
- Get.find();
+ final UserInfoController userInfoController =
+ Get.find();
UserModel user = userInfoController.model.user!;
// 设置省市区街道名称
diff --git a/lib/controller/mh_controller/apply_repair_controller.dart b/lib/controller/mh_controller/apply_repair_controller.dart
index f3e2acc..47640a2 100644
--- a/lib/controller/mh_controller/apply_repair_controller.dart
+++ b/lib/controller/mh_controller/apply_repair_controller.dart
@@ -1,17 +1,6 @@
-import 'dart:io';
-
import 'package:ef/ef.dart';
-import 'package:flutter/src/widgets/framework.dart';
-import 'package:flutterflow_ui/flutterflow_ui.dart';
-import 'package:img_picker/img_picker.dart';
import 'package:json_annotation/json_annotation.dart';
-import 'package:path/path.dart' as p;
-import 'package:uuid/uuid.dart';
-import 'package:vbvs_app/common/util/MyUtils.dart';
-
-import 'muser_info_controller.dart';
-
part 'apply_repair_controller.g.dart';
@JsonSerializable()
diff --git a/lib/controller/mh_controller/muser_info_controller.dart b/lib/controller/mh_controller/muser_info_controller.dart
deleted file mode 100644
index d5d3f48..0000000
--- a/lib/controller/mh_controller/muser_info_controller.dart
+++ /dev/null
@@ -1,234 +0,0 @@
-import 'dart:convert';
-import 'package:EasyDartModule/EasyDartModule.dart';
-import 'package:ef/ef.dart';
-import 'package:fluwx/fluwx.dart';
-import 'package:get_storage/get_storage.dart';
-import 'package:img_picker/img_picker.dart';
-import 'package:json_annotation/json_annotation.dart';
-import 'package:dio/dio.dart' as dio;
-import 'package:vbvs_app/common/color/ServiceConstant.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/MyUtils.dart';
-import 'package:vbvs_app/controller/mh_controller/user_data.dart';
-import 'package:vbvs_app/model/api_response.dart';
-part 'muser_info_controller.g.dart';
-
-@JsonSerializable()
-class MUserInfoModel {
- int? message = 0; //消息数量
-
- UserModel? user; //用户信息
- String? token; //token值
- String? runSystem; //运行系统
- String? phoneVersion; //手机版本
- String? deviceId; //手机唯一
- String? deviceModel; //设备可见型号(如 "iPhone","iPad")
- String? appVersion; //app版本信息
-
- @JsonKey(ignore: true)
- Session? superbase_session;
- @JsonKey(ignore: true)
- User? superbase_user;
-
- String? img_bucket = 'user';
- int? login = 0; //是否登录0:未登录 1:已登录
-
- MUserInfoModel();
- static MUserInfoModel fromJson(Map json) =>
- _$MUserInfoModelFromJson(json);
- Map toJson() => _$MUserInfoModelToJson(this);
-}
-
-class MUserInfoController extends GetControllerEx {
- // 初始化实例
- final Fluwx fluwx = Fluwx();
-
- MUserInfoController() {
- attr = GetModel(MUserInfoModel()).obs;
- }
-
- List device_bind_status = [];
- int device_bind_flag = 0; //0。未初始化 1.已初始化
-
- Future uploadImg() async {
- EasyDartModule.logger.info("请求上传图片");
- DailyLogUtils.writeLog("请求上传图片");
- final ImagePicker picker = ImagePicker();
- final XFile? image = await picker.pickImage(source: ImageSource.gallery);
- try {
- ApiResponse apiResponse = ApiResponse(code: -1, msg: "我的.头像上传失败".tr);
- if (image != null) {
- int fileSize = await image.length(); // 获取图片大小,单位为字节
- if (fileSize > 1048576 * 5) {
- apiResponse.msg = "我的.头像限制".tr;
- return apiResponse;
- }
- String serviceAddress = ServiceConstant.service_address;
- String serviceName = ServiceConstant.server_service;
- String serviceApi = ServiceConstant.upload_file;
- 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";
- }
- }
- var formData = dio.FormData.fromMap({
- "type": 1,
- "file": await dio.MultipartFile.fromFile(
- image.path, // 确保 image 是 File 类型
- filename: image.path.split('/').last,
- ),
- });
- var response = await EasyDartModule.dio.post(queryUrl, data: formData);
- if (response != null) {
- var responseData = response.data is String
- ? jsonDecode(response.data)
- : response.data;
- ApiResponse res =
- ApiResponse.fromJson(responseData, (object) => object);
- MyUtils.formatResponse(apiResponse, "我的.上传成功".tr, "我的.头像上传失败".tr);
- model.user!.tmpHead = res.data['path'];
- updateAll();
- return res;
- } else {
- return ApiResponse(code: -1, msg: "服务器.失败".tr);
- }
- } else {
- apiResponse.msg = "我的.未选择图片".tr;
- return apiResponse;
- }
- } catch (e) {
- EasyDartModule.logger.error("上传图片失败->$e");
- DailyLogUtils.writeError("上传图片失败->$e");
- return ApiResponse(code: -1, msg: "服务器.失败".tr);
- }
- }
-
- //更新用户信息
- Future updateData() async {
- EasyDartModule.logger.info("更新用户资料");
- DailyLogUtils.writeLog("更新用户资料");
- try {
- ApiResponse apiResponse = ApiResponse(code: -1, msg: "我的.保存失败".tr);
- UserModel user = model.user!;
- if (user.tmpNickName == null || user.tmpNickName!.isEmpty) {
- apiResponse.msg = "我的.昵称为空".tr;
- return apiResponse;
- }
- String serviceAddress = ServiceConstant.service_address;
- String serviceName = ServiceConstant.server_service;
- String serviceApi = ServiceConstant.user_info;
- 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 = {
- "nickName": user.tmpNickName,
- if (user.tmpHead != null && user.tmpHead!.isNotEmpty)
- "avatar": user.tmpHead,
- };
-
- var response =
- await EasyDartModule.dio.put(queryUrl, data: jsonEncode(data));
- if (apiResponse != null) {
- 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);
- }
- }
-
- //查询用户信息
- Future getUserInfo() async {
- EasyDartModule.logger.info("查询用户资料");
- DailyLogUtils.writeLog("查询用户资料");
- try {
- ApiResponse apiResponse = ApiResponse(code: -1, msg: "我的.查询失败".tr);
- String serviceAddress = ServiceConstant.service_address;
- String serviceName = ServiceConstant.server_service;
- String serviceApi = ServiceConstant.user_info;
- 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";
- }
- }
- var response = await EasyDartModule.dio.get(queryUrl);
- if (response != null) {
- var responseData =
- response.data is String ? jsonDecode(response.data) : response.data;
- ApiResponse res =
- ApiResponse.fromJson(responseData, (object) => object);
- MyUtils.formatResponse(apiResponse, "我的.保存成功".tr, "我的.保存失败".tr);
- if (res.code == HttpStatusCodes.ok) {
- MUserInfoController userInfoController = Get.find();
- userInfoController.model.user = UserModel.fromJson(res.data);
- final box = GetStorage();
- box.write('user', userInfoController.model.user!.toJson()); // 存储用户信息
- userInfoController.updateAll();
- }
- return apiResponse;
- } else {
- return ApiResponse(code: -1, msg: "服务器.失败".tr);
- }
- } catch (e) {
- EasyDartModule.logger.info("更新用户资料失败->$e");
- DailyLogUtils.writeLog("更新用户资料失败->$e");
- return ApiResponse(code: -1, msg: "服务器.失败".tr);
- }
- }
-
- // ApiResponse logOut() {
- // ApiResponse apiResponse = ApiResponse(code: 1, msg: "设置页.退出成功".tr);
- // EasyDartModule.logger.info("退出登录");
- // DailyLogUtils.writeLog("退出登录");
- // model.login = 0;
- // EasyDartModule.dio.token = null;
- // final box = GetStorage();
- // box.remove("user");
- // box.remove("token");
- // BodyDeviceController bodyDeviceController = Get.find();
- // bodyDeviceController.bindDeviceNum.value = 0;
- // HomeController homeController = Get.find();
- // homeController.sleepNum.value = 0;
- // LoginController loginController = Get.find();
- // loginController.model.register_agree = null;
- // bodyDeviceController.sleepReportData.value = {};
- // MessageController messageController = Get.find();
- // messageController.model.body_message_read = 0;
- // messageController.model.system_message_read = 0;
- // CountdownController countdownController = Get.find();
- // countdownController.countdown.value = 0;
- // return apiResponse;
- // }
-}
diff --git a/lib/controller/mh_controller/muser_info_controller.g.dart b/lib/controller/mh_controller/muser_info_controller.g.dart
deleted file mode 100644
index 1dc29be..0000000
--- a/lib/controller/mh_controller/muser_info_controller.g.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// GENERATED CODE - DO NOT MODIFY BY HAND
-
-part of 'muser_info_controller.dart';
-
-// **************************************************************************
-// JsonSerializableGenerator
-// **************************************************************************
-
-MUserInfoModel _$MUserInfoModelFromJson(Map json) =>
- MUserInfoModel()
- ..message = (json['message'] as num?)?.toInt()
- ..user = json['user'] == null
- ? null
- : UserModel.fromJson(json['user'] as Map)
- ..token = json['token'] as String?
- ..runSystem = json['runSystem'] as String?
- ..phoneVersion = json['phoneVersion'] as String?
- ..deviceId = json['deviceId'] as String?
- ..deviceModel = json['deviceModel'] as String?
- ..appVersion = json['appVersion'] as String?
- ..img_bucket = json['img_bucket'] as String?
- ..login = (json['login'] as num?)?.toInt();
-
-Map _$MUserInfoModelToJson(MUserInfoModel instance) =>
- {
- 'message': instance.message,
- 'user': instance.user,
- 'token': instance.token,
- 'runSystem': instance.runSystem,
- 'phoneVersion': instance.phoneVersion,
- 'deviceId': instance.deviceId,
- 'deviceModel': instance.deviceModel,
- 'appVersion': instance.appVersion,
- 'img_bucket': instance.img_bucket,
- 'login': instance.login,
- };
diff --git a/lib/controller/mh_controller/register_controller.dart b/lib/controller/mh_controller/register_controller.dart
index 759848c..5fea58e 100644
--- a/lib/controller/mh_controller/register_controller.dart
+++ b/lib/controller/mh_controller/register_controller.dart
@@ -1,6 +1,7 @@
import 'package:ef/ef.dart';
import 'package:flutter/src/widgets/framework.dart';
import 'package:json_annotation/json_annotation.dart';
+import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
part 'register_controller.g.dart';
@@ -28,79 +29,77 @@ class RegisterController extends GetControllerEx {
attr = GetModel(RegisterModel()).obs;
}
- // Future registerUser(BuildContext context) async {
- // String message = "";
- // final MyDialogController myDialogController =
- // Get.find();
- // if (model.register_phone == null || model.register_phone!.isEmpty) {
- // message = "请输入手机号";
- // showToast(message);
- // return message;
- // }
- // if (!MyUtils.isValidPhoneNumber(model.register_phone!)) {
- // message = '请输入正确的手机号';
- // showToast(message);
- // return message;
- // }
- // if (model.register_pd == null || model.register_pd!.isEmpty) {
- // message = "请输入密码";
- // showToast(message);
- // return message;
- // }
- // String passwordMsg = "1.密码长度必须至少8位\n2.密码需要字母加数字\n3.特殊字符和大写字母至少包含一个";
- // bool hasUppercase = model.register_pd!.contains(RegExp(r'[A-Z]'));
- // bool hasDigit = model.register_pd!.contains(RegExp(r'[0-9]'));
- // bool hasSpecialCharacters =
- // model.register_pd!.contains(RegExp(r'[!@#$%^&*(),.?":{}|<>]'));
- // bool hasLetter = model.register_pd!.contains(RegExp(r'[a-zA-Z]'));
+ Future registerUser(BuildContext context) async {
+ String message = "";
+ // if (model.register_phone == null || model.register_phone!.isEmpty) {
+ // message = "请输入手机号".tr;
+ // TopSlideNotification.show(context,message);
+ // return message;
+ // }
+ // if (!MyUtils.isValidPhoneNumber(model.register_phone!)) {
+ // message = '请输入正确的手机号';
+ // showToast(message);
+ // return message;
+ // }
+ // if (model.register_pd == null || model.register_pd!.isEmpty) {
+ // message = "请输入密码";
+ // showToast(message);
+ // return message;
+ // }
+ // String passwordMsg = "1.密码长度必须至少8位\n2.密码需要字母加数字\n3.特殊字符和大写字母至少包含一个";
+ // bool hasUppercase = model.register_pd!.contains(RegExp(r'[A-Z]'));
+ // bool hasDigit = model.register_pd!.contains(RegExp(r'[0-9]'));
+ // bool hasSpecialCharacters =
+ // model.register_pd!.contains(RegExp(r'[!@#$%^&*(),.?":{}|<>]'));
+ // bool hasLetter = model.register_pd!.contains(RegExp(r'[a-zA-Z]'));
- // if (model.register_pd!.length < 8) {
- // message = passwordMsg;
- // showToast(message);
- // return message;
- // }
+ // if (model.register_pd!.length < 8) {
+ // message = passwordMsg;
+ // showToast(message);
+ // return message;
+ // }
- // if (!hasLetter || !hasDigit) {
- // message = passwordMsg;
- // showToast(message);
- // return message;
- // }
+ // if (!hasLetter || !hasDigit) {
+ // message = passwordMsg;
+ // showToast(message);
+ // return message;
+ // }
- // if (!(hasSpecialCharacters || hasUppercase)) {
- // message = passwordMsg;
- // showToast(message);
- // return message;
- // }
- // if (model.register_confirm_pd == null ||
- // model.register_confirm_pd!.isEmpty) {
- // message = "请输入确认密码";
- // showToast(message);
- // return message;
- // }
- // if (model.register_pd != model.register_confirm_pd) {
- // message = "两次密码不一致";
- // showToast(message);
- // return message;
- // }
- // if (model.register_code == null || model.register_code!.isEmpty) {
- // message = "请输入验证码";
- // showToast(message);
- // return message;
- // }
- // if (model.register_agree == null || model.register_agree != true) {
- // message = "需要同意协议";
- // showToast(message);
- // return message;
- // }
- // message = await repository.createUser(
- // model.register_pd!, model.register_phone!, model.register_code!);
- // if (message.isNotEmpty) {
- // showToast(message);
- // return message;
- // }
+ // if (!(hasSpecialCharacters || hasUppercase)) {
+ // message = passwordMsg;
+ // showToast(message);
+ // return message;
+ // }
+ // if (model.register_confirm_pd == null ||
+ // model.register_confirm_pd!.isEmpty) {
+ // message = "请输入确认密码";
+ // showToast(message);
+ // return message;
+ // }
+ // if (model.register_pd != model.register_confirm_pd) {
+ // message = "两次密码不一致";
+ // showToast(message);
+ // return message;
+ // }
+ // if (model.register_code == null || model.register_code!.isEmpty) {
+ // message = "请输入验证码";
+ // showToast(message);
+ // return message;
+ // }
+ // if (model.register_agree == null || model.register_agree != true) {
+ // message = "需要同意协议";
+ // showToast(message);
+ // return message;
+ // }
+ // message = await repository.createUser(
+ // model.register_pd!, model.register_phone!, model.register_code!);
+ // if (message.isNotEmpty) {
+ // showToast(message);
+ // return message;
+ // }
- // return "";
- // }
+ return "";
+ }
// Future getCode(BuildContext context) async {
// String message = "";
diff --git a/lib/controller/mh_controller/user_data.dart b/lib/controller/mh_controller/user_data.dart
deleted file mode 100644
index ea76499..0000000
--- a/lib/controller/mh_controller/user_data.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-import 'package:json_annotation/json_annotation.dart';
-
-part 'user_data.g.dart';
-
-@JsonSerializable()
-class UserModel {
- String? uid;
- String? userName;
- String? nickName;
- String? tel;
- String? avatar;
- String? exp1;
- String? exp2;
- String? head;
- String? tmpHead;
- String? tmpNickName;
-
- UserModel();
- static UserModel fromJson(Map json) =>
- _$UserModelFromJson(json);
- Map toJson() => _$UserModelToJson(this);
-}
diff --git a/lib/controller/mh_controller/user_data.g.dart b/lib/controller/mh_controller/user_data.g.dart
deleted file mode 100644
index 89d1e4c..0000000
--- a/lib/controller/mh_controller/user_data.g.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// GENERATED CODE - DO NOT MODIFY BY HAND
-
-part of 'user_data.dart';
-
-// **************************************************************************
-// JsonSerializableGenerator
-// **************************************************************************
-
-UserModel _$UserModelFromJson(Map json) => UserModel()
- ..uid = json['uid'] as String?
- ..userName = json['userName'] as String?
- ..nickName = json['nickName'] as String?
- ..tel = json['tel'] as String?
- ..avatar = json['avatar'] as String?
- ..exp1 = json['exp1'] as String?
- ..exp2 = json['exp2'] as String?
- ..head = json['head'] as String?
- ..tmpHead = json['tmpHead'] as String?
- ..tmpNickName = json['tmpNickName'] as String?;
-
-Map _$UserModelToJson(UserModel instance) => {
- 'uid': instance.uid,
- 'userName': instance.userName,
- 'nickName': instance.nickName,
- 'tel': instance.tel,
- 'avatar': instance.avatar,
- 'exp1': instance.exp1,
- 'exp2': instance.exp2,
- 'head': instance.head,
- 'tmpHead': instance.tmpHead,
- 'tmpNickName': instance.tmpNickName,
- };
diff --git a/lib/controller/user_info_controller.dart b/lib/controller/user_info_controller.dart
index f7e2d90..1b001e1 100644
--- a/lib/controller/user_info_controller.dart
+++ b/lib/controller/user_info_controller.dart
@@ -126,10 +126,10 @@ class UserInfoController extends GetControllerEx {
EasyDartModule.logger.info("更新用户资料");
DailyLogUtils.writeLog("更新用户资料");
try {
- ApiResponse apiResponse = ApiResponse(code: -1, msg: "我的.保存失败".tr);
+ ApiResponse apiResponse = ApiResponse(code: -1, msg: "保存失败".tr);
UserModel user = model.user!;
if (user.tmpNickName == null || user.tmpNickName!.isEmpty) {
- apiResponse.msg = "我的.昵称为空".tr;
+ apiResponse.msg = "昵称为空".tr;
return apiResponse;
}
String serviceAddress = ServiceConstant.service_address;
@@ -160,7 +160,7 @@ class UserInfoController extends GetControllerEx {
response.data is String ? jsonDecode(response.data) : response.data;
ApiResponse res =
ApiResponse.fromJson(responseData, (object) => object);
- MyUtils.formatResponse(res, "我的.保存成功".tr, "我的.保存失败".tr);
+ MyUtils.formatResponse(res, "保存成功".tr, "保存失败".tr);
return res;
} else {
return ApiResponse(code: -1, msg: "服务器.失败".tr);
diff --git a/lib/language/AppLanguage.dart b/lib/language/AppLanguage.dart
index bcbefb2..a270f6b 100644
--- a/lib/language/AppLanguage.dart
+++ b/lib/language/AppLanguage.dart
@@ -48,11 +48,22 @@ class AppLanguage extends Translations {
// }
// }
- Future loadLanguage(String languageCode) async {
+ Future loadLanguage(String languageCode,
+ {String project = 'th'}) async {
try {
+ final jsonString;
// 加载 JSON 文件
- final jsonString =
- await rootBundle.loadString('assets/langs/$languageCode.json');
+ if (project == 'th') {
+ jsonString =
+ await rootBundle.loadString('assets/langs/$languageCode.json');
+ } else if (project == 'mht') {
+ jsonString =
+ await rootBundle.loadString('assets/mhlangs/$languageCode.json');
+ } else {
+ jsonString =
+ await rootBundle.loadString('assets/langs/$languageCode.json');
+ }
+
final Map jsonMap = json.decode(jsonString);
// 扁平化 JSON 数据
diff --git a/lib/main.dart b/lib/main.dart
index 1dae682..d9dd201 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -12,6 +12,7 @@ import 'package:fluwx/fluwx.dart';
import 'package:get_storage/get_storage.dart';
import 'package:localstorage/localstorage.dart';
import 'package:syncfusion_localizations/syncfusion_localizations.dart';
+import 'package:vbvs_app/common/color/AppGlobal.dart';
import 'package:vbvs_app/common/color/ServiceConstant.dart';
import 'package:vbvs_app/common/util/CheckNetwork.dart';
import 'package:vbvs_app/common/util/CommonVariables.dart';
@@ -41,7 +42,6 @@ import 'package:vbvs_app/controller/mh_controller/issue_controller.dart';
import 'package:vbvs_app/controller/mh_controller/issue_preview_controller.dart';
import 'package:vbvs_app/controller/mh_controller/message_controller.dart';
import 'package:vbvs_app/controller/mh_controller/mh_language_controller.dart';
-import 'package:vbvs_app/controller/mh_controller/muser_info_controller.dart';
import 'package:vbvs_app/controller/mh_controller/my_experience_list_controller.dart';
import 'package:vbvs_app/controller/mh_controller/people_info_controller.dart';
import 'package:vbvs_app/controller/mh_controller/register_controller.dart';
@@ -61,7 +61,6 @@ import 'package:vbvs_app/controller/weather/weather_controller.dart';
import 'package:vbvs_app/language/AppLanguage.dart';
import 'package:vbvs_app/model/CustomThemeColor.dart';
import 'package:vbvs_app/model/user_data.dart';
-import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart';
import 'package:vbvs_app/pages/mh_page/MattressControl.dart';
import 'package:vbvs_app/pages/mh_page/user/controller/mht_login_controller.dart';
import 'package:vbvs_app/pages/mh_page/user/controller/mht_register_controller.dart';
@@ -76,8 +75,10 @@ Future main() async {
final Locale? deviceLocale = Get.deviceLocale;
print('系统语言: ${deviceLocale?.languageCode}');
+ // final selectapp = "th";
+ final selectapp = "mht";
// await AppLanguage().loadLanguage("en_US");
- await AppLanguage().loadLanguage("zh_CN");
+ await AppLanguage().loadLanguage("zh_CN",project: selectapp);
await initLanguageSetting();
WidgetsFlutterBinding.ensureInitialized();
@@ -277,12 +278,14 @@ class MyApp extends StatelessWidget {
Widget buildmht(BuildContext context, BoxConstraints cons) {
return GetMaterialApp(
+ navigatorKey: AppGlobal.navigatorKey, // ✅ 注入 navigatorKey
translations: AppLanguage(),
debugShowCheckedModeBanner: false,
title: '',
theme: themeController.currentTheme,
// home: MainPageBBottomChange(),
initialRoute: "/loginPage",
+ // initialRoute: "/mianPageBottomChange",
onGenerateRoute: mhonGenerateRoute,
initialBinding: BindingsBuilder(() => [
// Get.lazyPut(() => UserInfoController()),
@@ -290,7 +293,7 @@ class MyApp extends StatelessWidget {
Get.lazyPut(() => ControlCardController()),
Get.lazyPut(() => RepairListController()),
Get.lazyPut(() => RepairInfoController()),
- Get.lazyPut(() => MUserInfoController()),
+ Get.lazyPut(() => UserInfoController()),
Get.lazyPut(() => MhMessageController()),
Get.lazyPut(() => ScoreController()),
Get.lazyPut(() => ExperienceStoreListController()),
@@ -321,6 +324,8 @@ class MyApp extends StatelessWidget {
Get.lazyPut(() => RepairController()),
Get.lazyPut(() => MHTLoginController()),
Get.lazyPut(() => MHTRegisterController()),
+ Get.lazyPut(() => WeatherModelController()),
+ Get.lazyPut(() => RegisterController()),
]));
}
diff --git a/lib/pages/main_bottom/component/main_page_b_bottom_change.dart b/lib/pages/main_bottom/component/main_page_b_bottom_change.dart
index bec2ebd..8d9596d 100644
--- a/lib/pages/main_bottom/component/main_page_b_bottom_change.dart
+++ b/lib/pages/main_bottom/component/main_page_b_bottom_change.dart
@@ -154,7 +154,7 @@
import 'package:flutter/material.dart';
import 'package:vbvs_app/pages/common/bezier_bottom_navigation_bar.dart';
import 'package:vbvs_app/pages/mh_page/MattressControl.dart';
-import 'package:vbvs_app/pages/mh_page/new_Home_page.dart';
+import 'package:vbvs_app/pages/mh_page/homepage/new_Home_page.dart';
import 'package:vbvs_app/pages/mh_page/new_mine_page.dart';
import 'package:vbvs_app/pages/mh_page/user/page/register_page.dart';
diff --git a/lib/pages/main_bottom/mine_page.dart b/lib/pages/main_bottom/mine_page.dart
index 144f13c..949169e 100644
--- a/lib/pages/main_bottom/mine_page.dart
+++ b/lib/pages/main_bottom/mine_page.dart
@@ -253,6 +253,7 @@ class _MinePageState extends State {
letterSpacing: 0.0,
),
),
+
].divide(SizedBox(height: 20.rpx)),
),
].divide(SizedBox(width: 35.rpx)),
diff --git a/lib/pages/mh_page/edit_userinfo_page.dart b/lib/pages/mh_page/edit_userinfo_page.dart
deleted file mode 100644
index 7820460..0000000
--- a/lib/pages/mh_page/edit_userinfo_page.dart
+++ /dev/null
@@ -1,227 +0,0 @@
-import 'package:ef/base/widget/flutterflow/FlutterFlowTheme.dart';
-import 'package:ef/ef.dart';
-import 'package:flutter/material.dart';
-import 'package:EasyDartModule/EasyDartModule.dart' as edm;
-import 'package:get/get.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/FitTool.dart';
-import 'package:vbvs_app/common/util/MyUtils.dart';
-import 'package:vbvs_app/component/tool/ClickableContainer.dart';
-import 'package:vbvs_app/component/tool/CustomCard.dart';
-import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
-import 'package:vbvs_app/model/api_response.dart';
-
-import '../../controller/mh_controller/muser_info_controller.dart';
-
-class EditUserInfoPage extends GetView {
- final scaffoldKey = GlobalKey();
-
- @override
- Widget build(BuildContext context) {
- // UserInfoController controller = Get.find();
- MUserInfoController userInfoController = Get.find();
- return 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(
- backgroundColor: Colors.transparent,
- key: scaffoldKey,
- appBar: AppBar(
- backgroundColor: Colors.transparent,
- automaticallyImplyLeading: false,
- iconTheme: IconThemeData(color: Colors.white),
- titleSpacing: 0,
- title: Container(
- width: double.infinity,
- height: 70.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,
- ),
- Positioned(
- right: 30.rpx,
- child: CustomCard(
- borderRadius: 16.rpx,
- gradientDirection: GradientDirection.vertical,
- onTap: () {},
- colors: const [
- Color(0xFFFCFCFC),
- Color(0xFFF8FAF9),
- Color(0XFFECF6F3),
- Color(0XFFD9F0E9),
- Color(0xFFCEECE3)
- ],
- child: Container(
- width: 120.rpx,
- height: 60.rpx,
- alignment: Alignment.center,
- // decoration: BoxDecoration(
- // borderRadius: BorderRadius.circular(5),
- // color: stringToColor("#182B7C"),
- // ),
- child: Text(
- "保存",
- style: FlutterFlowTheme.of(context)
- .bodyMedium
- .override(
- fontFamily: 'Readex Pro',
- color: stringToColor("#9EA4B7"),
- letterSpacing: 0,
- fontSize: 30.rpx,
- ),
- ),
- ),
- ))
- ],
- ),
- ),
- centerTitle: false,
- ),
- body: Container(
- width: double.infinity,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.center,
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- Padding(
- padding: EdgeInsets.only(top: 108.rpx),
- child: Container(
- width: 160.rpx,
- height: 160.rpx,
- clipBehavior: Clip.antiAlias,
- decoration: const BoxDecoration(
- shape: BoxShape.circle,
- ),
- child: Image.asset(
- "assets/images/people_avatar.png",
- fit: BoxFit.cover,
- ),
- ),
- ),
- ClickableContainer(
- backgroundColor: Colors.transparent,
- highlightColor: Colors.transparent,
- padding: EdgeInsets.only(top: 44.rpx, bottom: 44.rpx),
- onTap: () async {
- edm.EasyDartModule.logger
- .info("${userInfoController.model.user!}点击上传头像");
- DailyLogUtils.writeLog(
- "${userInfoController.model.user!}点击上传头像");
- ApiResponse apiResponse =
- await userInfoController.uploadImg();
- TopSlideNotification.show(
- context,
- text: apiResponse.msg!,
- textColor: apiResponse.code == HttpStatusCodes.ok
- ? themeController.currentColor.sc2
- : themeController.currentColor.sc9,
- );
- },
- child: Text(
- '点击更换头像',
- style:
- TextStyle(color: Color(0XFF85F5FF), fontSize: 26.rpx),
- ),
- ),
- Padding(
- padding: EdgeInsets.fromLTRB(60.rpx, 78.rpx, 60.rpx, 0.rpx),
- child: Container(
- width: double.infinity,
- height: 88.rpx,
- decoration: BoxDecoration(
- border: Border(
- top: BorderSide(
- color: Color(0xFFD3D3D3), width: 2.rpx), // 上边线
- bottom: BorderSide(
- color: Color(0xFFD3D3D3), width: 2.rpx), // 下边线
- ),
- ),
- alignment: Alignment(0, 0),
- child: TextField(
- obscureText: false,
- keyboardType: TextInputType.text,
- textInputAction: TextInputAction.done,
- textAlign: TextAlign.center,
- style: TextStyle(fontSize: 30.rpx, color: Colors.white),
- decoration: InputDecoration(
- fillColor: Colors.transparent,
- filled: true,
- hintText: "请输入昵称",
- hintStyle: TextStyle(color: Colors.white),
- border: InputBorder.none,
- contentPadding: EdgeInsets.only(bottom: 10.rpx)),
- onChanged: (value) {
- controller.model.user?.nickName = value;
- controller.updateAll();
- },
- controller: controller.onReDraw(
- TextEditingController(
- text: controller.model.user?.nickName ?? ""),
- (textEditingController) {
- textEditingController.text =
- controller.model.user?.nickName ?? "";
- }),
- ),
- // Text(
- // '玛利亚',
- // style: TextStyle(
- // color: Color(0XFFFFFFFF), fontSize: 26.rpx),
- // ),
- ),
- ),
- ],
- ),
- ),
- ),
- ));
- }
-
- Widget getImageWidget(BuildContext context) {
- try {
- MUserInfoController controller = Get.find();
- var head = controller.model.user!.tmpHead;
- return Container(
- width: 200.rpx,
- height: 200.rpx,
- child: Container(
- clipBehavior: Clip.antiAlias,
- decoration: BoxDecoration(
- shape: BoxShape.circle,
- ),
- child: head == null || head.isEmpty
- ? Image.asset(
- 'assets/img/avatar.png',
- fit: BoxFit.cover,
- )
- : Image.network(
- head,
- fit: BoxFit.cover,
- ),
- ),
- );
- } catch (e) {
- print(e);
- }
- return Container();
- }
-}
diff --git a/lib/pages/mh_page/homepage/new_Home_page.dart b/lib/pages/mh_page/homepage/new_Home_page.dart
new file mode 100644
index 0000000..4de9b8b
--- /dev/null
+++ b/lib/pages/mh_page/homepage/new_Home_page.dart
@@ -0,0 +1,888 @@
+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/appConstants.dart';
+import 'package:vbvs_app/common/util/FitTool.dart';
+import 'package:vbvs_app/common/util/MyUtils.dart';
+import 'package:vbvs_app/controller/device/body_device_controller.dart';
+import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
+import 'package:vbvs_app/controller/user_info_controller.dart';
+import 'package:vbvs_app/controller/weather/weather_controller.dart';
+import 'package:vbvs_app/pages/mh_page/FloatingSvgIcon.dart';
+
+class NewHomePage extends StatefulWidget {
+ const NewHomePage({super.key});
+ @override
+ State createState() => _NewHomePageState();
+}
+
+class _NewHomePageState extends State {
+ UserInfoController userInfoController = Get.find();
+ BodyDeviceController deviceController = Get.find();
+ double borderRadius = 16.rpx;
+
+ var formFieldController = FormFieldController(null);
+
+ GlobalController gloablController = Get.find();
+ WeatherModelController weatherModelController = Get.find();
+
+ // get userInfoController => Get.find();
+
+ var sleepDays = [].obs;
+
+ var sleep_mac = "".obs;
+
+ Map scoreColor = {
+ "-1": "#d3d3d3",
+ "1": "#4e8408",
+ "2": "#7bbb33",
+ "3": "#e15b8d",
+ "4": "#ff0000",
+ };
+
+ Map scoreName = {
+ "-1": "暂无",
+ "1": "优秀",
+ "2": "良好",
+ "3": "合格",
+ "4": "注意",
+ };
+
+ @override
+ void initState() {
+ super.initState();
+ }
+
+ getWeekName(int i) {
+ String v = "";
+ switch (i) {
+ case 1:
+ v = "周一";
+ break;
+ case 2:
+ v = "周二";
+ break;
+ case 3:
+ v = "周三";
+ break;
+ case 4:
+ v = "周四";
+ break;
+ case 5:
+ v = "周五";
+ break;
+ case 6:
+ v = "周六";
+ break;
+ case 7:
+ v = "周日";
+ break;
+ }
+ return v;
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ int login = userInfoController.model.login!;
+ return 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(
+ backgroundColor: Colors.transparent,
+ appBar: AppBar(
+ iconTheme:
+ IconThemeData(color: themeController.currentColor.sc3),
+ backgroundColor: Colors.transparent,
+ automaticallyImplyLeading: false,
+ titleSpacing: 0,
+ title: Container(
+ height: 180.rpx,
+ child: Row(
+ children: [
+ // 左侧头像
+ Obx(() {
+ return userInfo(userInfoController.model.login);
+ }),
+ const Spacer(), // 左右分隔
+ FloatingSvgIcon(
+ assetPath: 'assets/img/icon/xiaoe.svg',
+ width: 60.rpx,
+ height: 60.rpx,
+ onTap: () {
+ print("点击了小鹅图标");
+ },
+ ),
+ SizedBox(width: 40.rpx),
+ ],
+ ),
+ )),
+ body: SafeArea(
+ child: Container(
+ width: MediaQuery.sizeOf(context).width,
+ height: MediaQuery.sizeOf(context).height * 1.123,
+ // decoration: BoxDecoration(
+ // color: AppColors.bg_color,
+ // image: DecorationImage(
+ // image: AssetImage("assets/images/background.png"),
+ // fit: BoxFit.cover,
+ // ),
+ // ),
+ decoration: BoxDecoration(),
+ child: SingleChildScrollView(
+ child: Column(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ Container(
+ padding:
+ EdgeInsets.fromLTRB(26.rpx, 10.rpx, 26.rpx, 40.rpx),
+ width: double.infinity,
+ child: Padding(
+ padding: EdgeInsets.symmetric(horizontal: 0.rpx),
+ child: Column(
+ children: [
+ Padding(
+ padding:
+ EdgeInsets.fromLTRB(17.rpx, 30.rpx, 0, 0),
+ child: Row(
+ children: [
+ // Text('上海 22° 多云',
+ // style: TextStyle(
+ // fontSize: 26.rpx,
+ // color: Colors.white)),
+ // Icon(Icons.cloud,
+ // size: 30.rpx, color: Colors.white),
+ Obx(() {
+ return Row(
+ children: [
+ Text(
+ "${weatherModelController.model.cityName ?? '未知数据'.tr}",
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: AppConstants()
+ .normal_text_fontSize,
+ ),
+ ),
+ Text(
+ "${(weatherModelController.model.current_temperature != null && weatherModelController.model.current_temperature! > 0) ? weatherModelController.model.current_temperature : '未知数据'.tr}" +
+ "°C",
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: AppConstants()
+ .normal_text_fontSize,
+ ),
+ ),
+ Text(
+ "${(weatherModelController.model.weather_info?.isNotEmpty ?? false) ? weatherModelController.model.weather_info : '未知数据'.tr}",
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: AppConstants()
+ .normal_text_fontSize,
+ ),
+ ),
+ if (weatherModelController
+ .model.weatherIconurl !=
+ null &&
+ weatherModelController.model
+ .weatherIconurl!.isNotEmpty)
+ Container(
+ width: 35.rpx,
+ height: 26.rpx,
+ clipBehavior: Clip.antiAlias,
+ decoration: BoxDecoration(
+ shape: BoxShape.circle),
+ child: Image.network(
+ weatherModelController
+ .model.weatherIconurl!,
+ fit: BoxFit.cover,
+ ),
+ ),
+ ].divide(SizedBox(
+ width: 20.rpx,
+ )),
+ );
+ }),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ Obx(() {
+ return Container(
+ padding: EdgeInsets.only(left: 30.rpx, right: 30.rpx),
+ child: Column(
+ children: [
+ if (gloablController.model.deviceList.length > 0)
+ Container(
+ child: Column(
+ children: [
+ Container(
+ width: MediaQuery.sizeOf(context).width,
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius:
+ BorderRadius.circular(borderRadius),
+ ),
+ child: Column(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ Padding(
+ padding:
+ EdgeInsetsDirectional.fromSTEB(
+ 30.rpx,
+ 16.rpx,
+ 16.rpx,
+ 8.rpx),
+ child: Container(
+ width: MediaQuery.sizeOf(context)
+ .width,
+ height: MediaQuery.sizeOf(context)
+ .height *
+ 0.065,
+ decoration: BoxDecoration(
+ color:
+ FlutterFlowTheme.of(context)
+ .secondaryBackground,
+ ),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ mainAxisAlignment:
+ MainAxisAlignment
+ .spaceBetween,
+ children: [
+ ValueListenableBuilder(
+ valueListenable:
+ formFieldController,
+ builder: (c, a, s) =>
+ FlutterFlowDropDown<
+ String>(
+ controller:
+ formFieldController,
+ options: gloablController
+ .model.JunheDevices
+ .map((d) =>
+ "${d["mac"]}")
+ .toList(),
+ optionLabels:
+ gloablController.model
+ .JunheDevices
+ .map((d) {
+ var s = d["name"] ??
+ d["mac"];
+ if (s == null) {
+ return "";
+ } else {
+ return "$s";
+ }
+ }).toList(),
+ onChanged: (val) {
+ // print("$val");
+ // if (val == null) {
+ // sleepDays.value = [];
+ // } else {
+ // getSleeps(
+ // formFieldController
+ // .value);
+ // }
+ // // sleep_mac.value = val!;
+ },
+ width: 360.rpx,
+ height: 72.rpx,
+ maxHeight: 200.rpx,
+ textStyle: TextStyle(
+ fontSize: 28.rpx,
+ overflow: TextOverflow
+ .ellipsis),
+ hintText: '',
+ icon: Icon(
+ Icons
+ .keyboard_arrow_down_rounded,
+ color:
+ FlutterFlowTheme.of(
+ context)
+ .secondaryText,
+ size: 48.rpx,
+ ),
+ fillColor: stringToColor(
+ "#F3F5F6"),
+ elevation: 2,
+ borderColor:
+ stringToColor(
+ "#F3F5F6"),
+ borderWidth: 2,
+ borderRadius: 18,
+ margin:
+ EdgeInsetsDirectional
+ .fromSTEB(
+ 32.rpx,
+ 8.rpx,
+ 32.rpx,
+ 8.rpx),
+ hidesUnderline: true,
+ isOverButton: false,
+ isSearchable: false,
+ isMultiSelect: false,
+ ),
+ ),
+ InkWell(
+ onTap: () {
+ // if (formFieldController
+ // .value !=
+ // null) {
+ // Get.toNamed(
+ // "/sleepWebview",
+ // arguments: [
+ // formFieldController
+ // .value
+ // ]);
+ // }
+ },
+ child: Row(
+ mainAxisSize:
+ MainAxisSize.max,
+ children: [
+ Text(
+ '睡眠报告',
+ style: FlutterFlowTheme
+ .of(context)
+ .bodyMedium
+ .override(
+ fontFamily:
+ 'Readex Pro',
+ letterSpacing:
+ 0,
+ fontSize:
+ 30.rpx),
+ ),
+ SizedBox(
+ width: 12.rpx,
+ ),
+ SvgPicture.asset(
+ "assets/images/table.svg",
+ width: 28.rpx,
+ height: 28.rpx),
+ SizedBox(
+ width: 20.rpx,
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ Container(
+ padding: EdgeInsets.only(
+ top: 0.rpx,
+ bottom: 20.rpx,
+ left: 16.rpx,
+ right: 16.rpx),
+ width: double.infinity,
+ decoration: BoxDecoration(),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ ...List.generate(
+ sleepDays.value.length,
+ (index) {
+ var day = sleepDays[index];
+ return Expanded(
+ child: Container(
+ padding: EdgeInsets.only(
+ top: 10.rpx,
+ bottom: 20.rpx),
+ width: 100,
+ // decoration: BoxDecoration(
+ // color: index == 2
+ // ? stringToColor("#F3F5F6")
+ // : Colors.white,
+ // borderRadius:
+ // BorderRadius.circular(
+ // borderRadius),
+ // ),
+ child: Column(
+ mainAxisSize:
+ MainAxisSize.max,
+ mainAxisAlignment:
+ MainAxisAlignment
+ .start,
+ crossAxisAlignment:
+ CrossAxisAlignment
+ .center,
+ children: [
+ Text(
+ day['week'],
+ style: FlutterFlowTheme
+ .of(context)
+ .bodyMedium
+ .override(
+ fontFamily:
+ 'Readex Pro',
+ fontSize:
+ 30.rpx,
+ letterSpacing:
+ 0,
+ ),
+ ),
+ Text(
+ day['date'],
+ style: FlutterFlowTheme
+ .of(context)
+ .bodyMedium
+ .override(
+ fontFamily:
+ 'Readex Pro',
+ letterSpacing:
+ 0,
+ fontSize:
+ 24.rpx,
+ ),
+ ),
+ SizedBox(
+ height: 6.rpx,
+ ),
+ Column(
+ children: [
+ Row(
+ mainAxisSize:
+ MainAxisSize
+ .max,
+ mainAxisAlignment:
+ MainAxisAlignment
+ .center,
+ children: [
+ Text(
+ '${day['score'] ?? "-"}',
+ style: FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .override(
+ fontFamily:
+ 'Readex Pro',
+ fontSize:
+ 48.rpx,
+ letterSpacing:
+ 0,
+ ),
+ ),
+ if (day['score'] !=
+ null)
+ SizedBox(
+ width:
+ 2.rpx,
+ ),
+ if (day['score'] !=
+ null)
+ Text(
+ '分',
+ style: FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .override(
+ fontFamily:
+ 'Readex Pro',
+ letterSpacing:
+ 0,
+ fontSize:
+ 26.rpx,
+ ),
+ ),
+ ],
+ ),
+ Container(
+ width: 120.rpx,
+ height: 52.rpx,
+ decoration:
+ BoxDecoration(
+ color: stringToColor(
+ day['scoreColor'] ??
+ "#f3f5f6"),
+ borderRadius:
+ BorderRadius
+ .circular(
+ 26.rpx),
+ shape: BoxShape
+ .rectangle,
+ ),
+ alignment:
+ Alignment
+ .center,
+ child: Text(
+ '${day['scoreType'] ?? "暂无"}',
+ style: FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .override(
+ fontFamily:
+ 'Readex Pro',
+ color: day['scoreType'] !=
+ null
+ ? Colors.white
+ : stringToColor("#ced1d7"),
+ letterSpacing:
+ 0,
+ fontSize:
+ 28.rpx,
+ ),
+ ),
+ )
+ ],
+ )
+ ],
+ ),
+ ),
+ );
+ })
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ ...List.generate(
+ gloablController
+ .model.deviceList.length, (index) {
+ var device = gloablController
+ .model.deviceList[index];
+ String rname = device['roomName'];
+ if (index != 0) {
+ String lrname = gloablController.model
+ .deviceList[index - 1]["roomName"];
+ if (lrname == rname) {
+ rname = "";
+ }
+ }
+ return Column(children: [
+ Padding(
+ padding:
+ EdgeInsetsDirectional.fromSTEB(
+ 20.rpx, 20.rpx, 0, 0),
+ child: Container(
+ decoration: BoxDecoration(),
+ alignment:
+ AlignmentDirectional(-1, 0),
+ child: rname.isNotEmpty
+ ? Text(
+ "$rname",
+ style: FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .override(
+ fontFamily:
+ 'Readex Pro',
+ color: Colors.white,
+ fontSize: 32.rpx,
+ letterSpacing: 0,
+ ),
+ )
+ : SizedBox(
+ height: 10.rpx,
+ ),
+ ),
+ ),
+ // getDeviceList(context, device)
+ ]);
+ }),
+ Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(
+ 0, 40.rpx, 0, 100.rpx),
+ child: Container(
+ width: MediaQuery.sizeOf(context).width,
+ height: 84.rpx,
+ decoration: BoxDecoration(),
+ child: FFButtonWidget(
+ onPressed: () {
+ // print('Button pressed ...');
+ // Get.toNamed("/homeDeviceType");
+ },
+ text: '添加新设备'.tr,
+ icon: Icon(
+ Icons.add,
+ size: 60.rpx,
+ ),
+ options: FFButtonOptions(
+ height: 80.rpx,
+ padding:
+ EdgeInsetsDirectional.fromSTEB(
+ 48.rpx, 0, 48.rpx, 0),
+ iconPadding:
+ EdgeInsetsDirectional.fromSTEB(
+ 0, 0, 0, 0),
+ color: stringToColor("#182B7C"),
+ textStyle:
+ FlutterFlowTheme.of(context)
+ .titleSmall
+ .override(
+ fontFamily:
+ 'Readex Pro',
+ color: Colors.white,
+ letterSpacing: 0,
+ fontSize: 30.rpx),
+ elevation: 3,
+ borderSide: BorderSide(
+ color: Colors.transparent,
+ width: 1,
+ ),
+ borderRadius: BorderRadius.circular(
+ borderRadius),
+ ),
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ if (gloablController.model.deviceList.length == 0)
+ Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(
+ 0, 0, 0, 80.rpx),
+ child: Container(
+ width: MediaQuery.sizeOf(context).width,
+ height: 302.rpx,
+ padding: EdgeInsets.only(
+ top: 90.rpx, bottom: 80.rpx),
+ decoration: BoxDecoration(
+ // color: Colors.white,
+ borderRadius:
+ BorderRadius.circular(borderRadius),
+ border: Border.all(
+ color: stringToColor("#85F5FF"), // 边框颜色
+ width: 1.rpx, // 边框宽度
+ ),
+ ),
+ child: Column(
+ mainAxisSize: MainAxisSize.max,
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ SvgPicture.asset(
+ 'assets/images/icon/add.svg',
+ width: 42.rpx,
+ height: 42.rpx,
+ ),
+ SizedBox(
+ height: 32.rpx,
+ ),
+ Text(
+ '添加一台新设备'.tr,
+ style: TextStyle(
+ color: stringToColor("#85F5FF"),
+ fontSize: AppConstants()
+ .normal_text_fontSize,
+ letterSpacing: 0,
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ],
+ ),
+ );
+ })
+ ],
+ ),
+ ),
+ )
+
+ // Padding(
+ // padding: EdgeInsets.symmetric(horizontal: 30.rpx),
+ // child: Column(
+ // children: [
+ // Padding(
+ // padding: EdgeInsets.fromLTRB(17.rpx, 30.rpx, 0, 0),
+ // child: Row(
+ // children: [
+ // Text('上海 22° 多云',
+ // style: TextStyle(
+ // fontSize: 26.rpx, color: Colors.white)),
+ // Icon(Icons.cloud,
+ // size: 30.rpx, color: Colors.white),
+ // ],
+ // ),
+ // ),
+ // ],
+ // ))
+ ),
+ ),
+ ));
+ }
+
+ //1 :登录 0:未登录
+ Widget userInfo(int? login) {
+ return Row(
+ children: (login == 1)
+ ? [
+ SizedBox(width: 40.rpx),
+ CircleAvatar(
+ radius: 27.rpx, // 可根据需求调整
+ backgroundImage: login == 1
+ ? (userInfoController.model.user!.avatar == null ||
+ userInfoController.model.user!.avatar!.isEmpty
+ ? const AssetImage(
+ "assets/images/default_avatar.png",
+ )
+ : NetworkImage(
+ userInfoController.model.user!.avatar!,
+ ))
+ : const AssetImage(
+ "assets/images/default_avatar.png",
+ ),
+ ),
+ SizedBox(width: 23.rpx), // 左侧头像和文本之间的间距
+ Text(
+ '${userInfoController.model.user?.nick_name?.isNotEmpty == true ? userInfoController.model.user!.nick_name : '未命名'.tr}',
+ style: TextStyle(fontSize: 30.rpx, color: Colors.white),
+ )
+ ]
+ : [
+ SizedBox(width: 40.rpx),
+ CircleAvatar(
+ radius: 27.rpx, // 可根据需求调整
+ backgroundImage: login == 1
+ ? (userInfoController.model.user!.avatar == null ||
+ userInfoController.model.user!.avatar!.isEmpty
+ ? const AssetImage(
+ "assets/images/default_avatar.png",
+ )
+ : NetworkImage(
+ userInfoController.model.user!.avatar!,
+ ))
+ : const AssetImage(
+ "assets/images/default_avatar.png",
+ ),
+ ),
+ SizedBox(width: 23.rpx), // 左侧头像和文本之间的间距
+ Text(
+ '未命名'.tr,
+ style: TextStyle(fontSize: 30.rpx, color: Colors.white),
+ )
+ ],
+ );
+ }
+}
+
+class ScoreItem {
+ final String weekday; // 如“周四”
+ final String dateStr; // 如“07/03”
+ final int score;
+ final bool isToday;
+
+ ScoreItem({
+ required this.weekday,
+ required this.dateStr,
+ required this.score,
+ this.isToday = false,
+ });
+}
+
+class ScoreCard extends StatelessWidget {
+ final String selectedUser;
+ final List scoreList;
+ final ValueChanged? onUserChanged;
+ final VoidCallback? onChartPressed;
+
+ const ScoreCard({
+ super.key,
+ required this.selectedUser,
+ required this.scoreList,
+ this.onUserChanged,
+ this.onChartPressed,
+ });
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ decoration: BoxDecoration(
+ color: const Color(0xff0F2B44),
+ borderRadius: BorderRadius.circular(16),
+ ),
+ padding: const EdgeInsets.all(12),
+ child: Column(
+ children: [
+ // 顶部用户选择 + 图标按钮
+ Row(
+ children: [
+ DropdownButtonHideUnderline(
+ child: DropdownButton(
+ value: selectedUser,
+ borderRadius: BorderRadius.circular(12),
+ dropdownColor: const Color(0xff0F2B44),
+ iconEnabledColor: Colors.white,
+ style: const TextStyle(color: Colors.white),
+ items: ['Eason Chan', 'Jay Chou', 'G.E.M.']
+ .map((user) => DropdownMenuItem(
+ value: user,
+ child: Text(user),
+ ))
+ .toList(),
+ onChanged: onUserChanged,
+ ),
+ ),
+ const Spacer(),
+ IconButton(
+ onPressed: onChartPressed,
+ icon: const Icon(Icons.bar_chart, color: Colors.white),
+ ),
+ ],
+ ),
+ const SizedBox(height: 12),
+ // 日期+分数 横向滚动展示
+ SizedBox(
+ height: 70,
+ child: ListView.separated(
+ scrollDirection: Axis.horizontal,
+ itemCount: scoreList.length,
+ separatorBuilder: (_, __) => const SizedBox(width: 12),
+ itemBuilder: (context, index) {
+ final item = scoreList[index];
+ final isToday = item.isToday;
+
+ return Container(
+ padding:
+ const EdgeInsets.symmetric(horizontal: 12, vertical: 6),
+ decoration: BoxDecoration(
+ color: isToday
+ ? Colors.white.withOpacity(0.1)
+ : Colors.transparent,
+ borderRadius: BorderRadius.circular(12),
+ ),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Text(item.weekday,
+ style: const TextStyle(
+ color: Colors.white70, fontSize: 12)),
+ Text(item.dateStr,
+ style: const TextStyle(
+ color: Colors.white54, fontSize: 10)),
+ const SizedBox(height: 4),
+ Text(
+ item.score.toString(),
+ style: TextStyle(
+ color: Colors.white,
+ fontWeight:
+ isToday ? FontWeight.bold : FontWeight.normal,
+ fontSize: 16,
+ ),
+ ),
+ ],
+ ),
+ );
+ },
+ ),
+ )
+ ],
+ ),
+ );
+ }
+}
diff --git a/lib/pages/mh_page/new_Home_page.dart b/lib/pages/mh_page/new_Home_page.dart
deleted file mode 100644
index 4ac2df3..0000000
--- a/lib/pages/mh_page/new_Home_page.dart
+++ /dev/null
@@ -1,852 +0,0 @@
-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/util/FitTool.dart';
-import 'package:vbvs_app/common/util/MyUtils.dart';
-
-import 'package:vbvs_app/component/tool/ClickableContainer.dart';
-import 'package:vbvs_app/controller/device/body_device_controller.dart';
-import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
-import 'package:vbvs_app/controller/mh_controller/muser_info_controller.dart';
-import 'package:vbvs_app/pages/mh_page/FloatingSvgIcon.dart';
-
-class NewHomePage extends StatefulWidget {
- const NewHomePage({super.key});
- @override
- State createState() => _NewHomePageState();
-}
-
-class _NewHomePageState extends State {
- MUserInfoController userInfoController = Get.find();
- BodyDeviceController deviceController = Get.find();
- double borderRadius = 16.rpx;
-
- var formFieldController = FormFieldController(null);
-
- get gloablController => Get.find();
-
- // get userInfoController => Get.find();
-
- var sleepDays = [].obs;
-
- var sleep_mac = "".obs;
-
- Map scoreColor = {
- "-1": "#d3d3d3",
- "1": "#4e8408",
- "2": "#7bbb33",
- "3": "#e15b8d",
- "4": "#ff0000",
- };
-
- Map scoreName = {
- "-1": "暂无",
- "1": "优秀",
- "2": "良好",
- "3": "合格",
- "4": "注意",
- };
-
- @override
- void initState() {
- super.initState();
- }
-
- getWeekName(int i) {
- String v = "";
- switch (i) {
- case 1:
- v = "周一";
- break;
- case 2:
- v = "周二";
- break;
- case 3:
- v = "周三";
- break;
- case 4:
- v = "周四";
- break;
- case 5:
- v = "周五";
- break;
- case 6:
- v = "周六";
- break;
- case 7:
- v = "周日";
- break;
- }
- return v;
- }
-
- @override
- Widget build(BuildContext context) {
- int login = userInfoController.model.login!;
- return 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(
- backgroundColor: Colors.transparent,
- appBar: AppBar(
- iconTheme:
- IconThemeData(color: themeController.currentColor.sc3),
- backgroundColor: Colors.transparent,
- automaticallyImplyLeading: false,
- titleSpacing: 0,
- title: Container(
- height: 180.rpx,
- child: Row(
- children: [
- // 左侧头像
- SizedBox(width: 40.rpx),
- CircleAvatar(
- radius: 27.rpx, // 可根据需求调整
- backgroundImage: login == 1
- ? (userInfoController.model.user!.avatar == null ||
- userInfoController
- .model.user!.avatar!.isEmpty
- ? const AssetImage(
- "assets/images/people_avatar.png",
- )
- : NetworkImage(
- userInfoController.model.user!.avatar!,
- ))
- : const AssetImage(
- "assets/images/people_avatar.png",
- ),
- ),
- SizedBox(width: 23.rpx), // 左侧头像和文本之间的间距
- Text(
- 'Eason Chan',
- style: TextStyle(fontSize: 30.rpx, color: Colors.white),
- ),
-
- const Spacer(), // 左右分隔
- // Container(
- // width: 61.rpx,
- // height: 78.rpx,
- // alignment: const Alignment(0, 0),
- // child: Image.asset(
- // "assets/images/xiaoe.png",
- // fit: BoxFit.cover,
- // ),
- // ),
- // SizedBox(width: 46.rpx), // icon 之间的间距
-
- FloatingSvgIcon(
- assetPath: 'assets/img/icon/xiaoe.svg',
- width: 60.rpx,
- height: 60.rpx,
- onTap: () {
- print("点击了小鹅图标");
- },
- ),
-
- SizedBox(width: 40.rpx),
- ],
- ),
- )),
- body: SafeArea(
- child: Container(
- width: MediaQuery.sizeOf(context).width,
- height: MediaQuery.sizeOf(context).height * 1.123,
- // decoration: BoxDecoration(
- // color: AppColors.bg_color,
- // image: DecorationImage(
- // image: AssetImage("assets/images/background.png"),
- // fit: BoxFit.cover,
- // ),
- // ),
- decoration: BoxDecoration(),
- child: SingleChildScrollView(
- child: Column(
- mainAxisSize: MainAxisSize.max,
- children: [
- Container(
- padding:
- EdgeInsets.fromLTRB(26.rpx, 10.rpx, 26.rpx, 40.rpx),
- width: double.infinity,
- child: Padding(
- padding: EdgeInsets.symmetric(horizontal: 30.rpx),
- child: Column(
- children: [
- Padding(
- padding:
- EdgeInsets.fromLTRB(17.rpx, 30.rpx, 0, 0),
- child: Row(
- children: [
- Text('上海 22° 多云',
- style: TextStyle(
- fontSize: 26.rpx,
- color: Colors.white)),
- Icon(Icons.cloud,
- size: 30.rpx, color: Colors.white),
- ],
- ),
- ),
- ],
- ))),
- Container(
- padding: EdgeInsets.only(left: 30.rpx, right: 30.rpx),
- child: Column(
- children: [
- if (gloablController.model.deviceList.length > 0)
- Container(
- child: Column(
- children: [
- Container(
- width: MediaQuery.sizeOf(context).width,
- decoration: BoxDecoration(
- color: Colors.white,
- borderRadius:
- BorderRadius.circular(borderRadius),
- ),
- child: Column(
- mainAxisSize: MainAxisSize.max,
- children: [
- Padding(
- padding:
- EdgeInsetsDirectional.fromSTEB(
- 30.rpx,
- 16.rpx,
- 16.rpx,
- 8.rpx),
- child: Container(
- width: MediaQuery.sizeOf(context)
- .width,
- height: MediaQuery.sizeOf(context)
- .height *
- 0.065,
- decoration: BoxDecoration(
- color:
- FlutterFlowTheme.of(context)
- .secondaryBackground,
- ),
- child: Row(
- mainAxisSize: MainAxisSize.max,
- mainAxisAlignment:
- MainAxisAlignment
- .spaceBetween,
- children: [
- ValueListenableBuilder(
- valueListenable:
- formFieldController,
- builder: (c, a, s) =>
- FlutterFlowDropDown<
- String>(
- controller:
- formFieldController,
- options: gloablController
- .model.JunheDevices
- .map((d) =>
- "${d["mac"]}")
- .toList(),
- optionLabels:
- gloablController
- .model.JunheDevices
- .map((d) {
- var s =
- d["name"] ?? d["mac"];
- if (s == null) {
- return "";
- } else {
- return "$s";
- }
- }).toList(),
- onChanged: (val) {
- // print("$val");
- // if (val == null) {
- // sleepDays.value = [];
- // } else {
- // getSleeps(
- // formFieldController
- // .value);
- // }
- // // sleep_mac.value = val!;
- },
- width: 360.rpx,
- height: 72.rpx,
- maxHeight: 200.rpx,
- textStyle: TextStyle(
- fontSize: 28.rpx,
- overflow: TextOverflow
- .ellipsis),
- hintText: '',
- icon: Icon(
- Icons
- .keyboard_arrow_down_rounded,
- color:
- FlutterFlowTheme.of(
- context)
- .secondaryText,
- size: 48.rpx,
- ),
- fillColor: stringToColor(
- "#F3F5F6"),
- elevation: 2,
- borderColor: stringToColor(
- "#F3F5F6"),
- borderWidth: 2,
- borderRadius: 18,
- margin:
- EdgeInsetsDirectional
- .fromSTEB(
- 32.rpx,
- 8.rpx,
- 32.rpx,
- 8.rpx),
- hidesUnderline: true,
- isOverButton: false,
- isSearchable: false,
- isMultiSelect: false,
- ),
- ),
- InkWell(
- onTap: () {
- // if (formFieldController
- // .value !=
- // null) {
- // Get.toNamed(
- // "/sleepWebview",
- // arguments: [
- // formFieldController
- // .value
- // ]);
- // }
- },
- child: Row(
- mainAxisSize:
- MainAxisSize.max,
- children: [
- Text(
- '睡眠报告',
- style: FlutterFlowTheme
- .of(context)
- .bodyMedium
- .override(
- fontFamily:
- 'Readex Pro',
- letterSpacing:
- 0,
- fontSize:
- 30.rpx),
- ),
- SizedBox(
- width: 12.rpx,
- ),
- SvgPicture.asset(
- "assets/images/table.svg",
- width: 28.rpx,
- height: 28.rpx),
- SizedBox(
- width: 20.rpx,
- ),
- ],
- ),
- ),
- ],
- ),
- ),
- ),
- Container(
- padding: EdgeInsets.only(
- top: 0.rpx,
- bottom: 20.rpx,
- left: 16.rpx,
- right: 16.rpx),
- width: double.infinity,
- decoration: BoxDecoration(),
- child: Row(
- mainAxisSize: MainAxisSize.max,
- crossAxisAlignment:
- CrossAxisAlignment.start,
- children: [
- ...List.generate(
- sleepDays.value.length,
- (index) {
- var day = sleepDays[index];
- return Expanded(
- child: Container(
- padding: EdgeInsets.only(
- top: 10.rpx,
- bottom: 20.rpx),
- width: 100,
- // decoration: BoxDecoration(
- // color: index == 2
- // ? stringToColor("#F3F5F6")
- // : Colors.white,
- // borderRadius:
- // BorderRadius.circular(
- // borderRadius),
- // ),
- child: Column(
- mainAxisSize:
- MainAxisSize.max,
- mainAxisAlignment:
- MainAxisAlignment
- .start,
- crossAxisAlignment:
- CrossAxisAlignment
- .center,
- children: [
- Text(
- day['week'],
- style: FlutterFlowTheme
- .of(context)
- .bodyMedium
- .override(
- fontFamily:
- 'Readex Pro',
- fontSize:
- 30.rpx,
- letterSpacing:
- 0,
- ),
- ),
- Text(
- day['date'],
- style: FlutterFlowTheme
- .of(context)
- .bodyMedium
- .override(
- fontFamily:
- 'Readex Pro',
- letterSpacing:
- 0,
- fontSize:
- 24.rpx,
- ),
- ),
- SizedBox(
- height: 6.rpx,
- ),
- Column(
- children: [
- Row(
- mainAxisSize:
- MainAxisSize
- .max,
- mainAxisAlignment:
- MainAxisAlignment
- .center,
- children: [
- Text(
- '${day['score'] ?? "-"}',
- style: FlutterFlowTheme.of(
- context)
- .bodyMedium
- .override(
- fontFamily:
- 'Readex Pro',
- fontSize:
- 48.rpx,
- letterSpacing:
- 0,
- ),
- ),
- if (day['score'] !=
- null)
- SizedBox(
- width:
- 2.rpx,
- ),
- if (day['score'] !=
- null)
- Text(
- '分',
- style: FlutterFlowTheme.of(
- context)
- .bodyMedium
- .override(
- fontFamily:
- 'Readex Pro',
- letterSpacing:
- 0,
- fontSize:
- 26.rpx,
- ),
- ),
- ],
- ),
- Container(
- width: 120.rpx,
- height: 52.rpx,
- decoration:
- BoxDecoration(
- color: stringToColor(
- day['scoreColor'] ??
- "#f3f5f6"),
- borderRadius:
- BorderRadius
- .circular(
- 26.rpx),
- shape: BoxShape
- .rectangle,
- ),
- alignment:
- Alignment
- .center,
- child: Text(
- '${day['scoreType'] ?? "暂无"}',
- style: FlutterFlowTheme.of(
- context)
- .bodyMedium
- .override(
- fontFamily:
- 'Readex Pro',
- color: day['scoreType'] !=
- null
- ? Colors
- .white
- : stringToColor(
- "#ced1d7"),
- letterSpacing:
- 0,
- fontSize:
- 28.rpx,
- ),
- ),
- )
- ],
- )
- ],
- ),
- ),
- );
- })
- ],
- ),
- ),
- ],
- ),
- ),
- ...List.generate(
- gloablController.model.deviceList.length,
- (index) {
- var device = gloablController
- .model.deviceList[index];
- String rname = device['roomName'];
- if (index != 0) {
- String lrname = gloablController.model
- .deviceList[index - 1]["roomName"];
- if (lrname == rname) {
- rname = "";
- }
- }
- return Column(children: [
- Padding(
- padding: EdgeInsetsDirectional.fromSTEB(
- 20.rpx, 20.rpx, 0, 0),
- child: Container(
- decoration: BoxDecoration(),
- alignment:
- AlignmentDirectional(-1, 0),
- child: rname.isNotEmpty
- ? Text(
- "$rname",
- style: FlutterFlowTheme.of(
- context)
- .bodyMedium
- .override(
- fontFamily:
- 'Readex Pro',
- color: Colors.white,
- fontSize: 32.rpx,
- letterSpacing: 0,
- ),
- )
- : SizedBox(
- height: 10.rpx,
- ),
- ),
- ),
- // getDeviceList(context, device)
- ]);
- }),
- Padding(
- padding: EdgeInsetsDirectional.fromSTEB(
- 0, 40.rpx, 0, 100.rpx),
- child: Container(
- width: MediaQuery.sizeOf(context).width,
- height: 84.rpx,
- decoration: BoxDecoration(),
- child: FFButtonWidget(
- onPressed: () {
- // print('Button pressed ...');
- // Get.toNamed("/homeDeviceType");
- },
- text: '添加新设备',
- icon: Icon(
- Icons.add,
- size: 60.rpx,
- ),
- options: FFButtonOptions(
- height: 80.rpx,
- padding:
- EdgeInsetsDirectional.fromSTEB(
- 48.rpx, 0, 48.rpx, 0),
- iconPadding:
- EdgeInsetsDirectional.fromSTEB(
- 0, 0, 0, 0),
- color: stringToColor("#182B7C"),
- textStyle:
- FlutterFlowTheme.of(context)
- .titleSmall
- .override(
- fontFamily: 'Readex Pro',
- color: Colors.white,
- letterSpacing: 0,
- fontSize: 30.rpx),
- elevation: 3,
- borderSide: BorderSide(
- color: Colors.transparent,
- width: 1,
- ),
- borderRadius: BorderRadius.circular(
- borderRadius),
- ),
- ),
- ),
- ),
- ],
- ),
- ),
- if (gloablController.model.deviceList.length == 0)
- Padding(
- padding: EdgeInsetsDirectional.fromSTEB(
- 0, 0, 0, 80.rpx),
- child: Container(
- width: MediaQuery.sizeOf(context).width,
- padding: EdgeInsets.only(
- top: 90.rpx, bottom: 80.rpx),
- decoration: BoxDecoration(
- color: Colors.white,
- borderRadius:
- BorderRadius.circular(borderRadius),
- ),
- child: Column(
- mainAxisSize: MainAxisSize.max,
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Text(
- '检测到您当前暂无设备!',
- style: FlutterFlowTheme.of(context)
- .bodyMedium
- .override(
- fontFamily: 'Readex Pro',
- color: Color(0xFF9EA4B7),
- fontSize: 32.rpx,
- letterSpacing: 0,
- ),
- ),
- SizedBox(
- height:
- MediaQuery.sizeOf(context).height *
- 0.037,
- ),
- Container(
- width: MediaQuery.sizeOf(context).width *
- 0.54,
- height: 90.rpx,
- decoration: BoxDecoration(
- color: FlutterFlowTheme.of(context)
- .secondaryBackground,
- borderRadius: BorderRadius.circular(0),
- ),
- child: FFButtonWidget(
- onPressed: () {
- // print('Button pressed ...');
- Get.toNamed("/homeDeviceType");
- },
- text: '立即添加一台',
- icon: Icon(
- Icons.add,
- color: FlutterFlowTheme.of(context)
- .primaryText,
- size: 60.rpx,
- ),
- options: FFButtonOptions(
- iconPadding:
- EdgeInsetsDirectional.fromSTEB(
- 0, 0, 0, 0),
- color: Colors.white,
- textStyle:
- FlutterFlowTheme.of(context)
- .titleSmall
- .override(
- fontFamily: 'Readex Pro',
- color:
- FlutterFlowTheme.of(
- context)
- .primaryText,
- letterSpacing: 0,
- fontSize: 30.rpx),
- elevation: 3,
- borderSide: BorderSide(
- color: Color(0xFFABB0C0),
- width: 1,
- ),
- borderRadius:
- BorderRadius.circular(45.rpx),
- ),
- ),
- ),
- ],
- ),
- ),
- ),
- ],
- ),
- )
- ],
- ),
- ),
- )
-
- // Padding(
- // padding: EdgeInsets.symmetric(horizontal: 30.rpx),
- // child: Column(
- // children: [
- // Padding(
- // padding: EdgeInsets.fromLTRB(17.rpx, 30.rpx, 0, 0),
- // child: Row(
- // children: [
- // Text('上海 22° 多云',
- // style: TextStyle(
- // fontSize: 26.rpx, color: Colors.white)),
- // Icon(Icons.cloud,
- // size: 30.rpx, color: Colors.white),
- // ],
- // ),
- // ),
- // ],
- // ))
- ),
- ),
- ));
- }
-}
-
-class ScoreItem {
- final String weekday; // 如“周四”
- final String dateStr; // 如“07/03”
- final int score;
- final bool isToday;
-
- ScoreItem({
- required this.weekday,
- required this.dateStr,
- required this.score,
- this.isToday = false,
- });
-}
-
-class ScoreCard extends StatelessWidget {
- final String selectedUser;
- final List scoreList;
- final ValueChanged? onUserChanged;
- final VoidCallback? onChartPressed;
-
- const ScoreCard({
- super.key,
- required this.selectedUser,
- required this.scoreList,
- this.onUserChanged,
- this.onChartPressed,
- });
-
- @override
- Widget build(BuildContext context) {
- return Container(
- decoration: BoxDecoration(
- color: const Color(0xff0F2B44),
- borderRadius: BorderRadius.circular(16),
- ),
- padding: const EdgeInsets.all(12),
- child: Column(
- children: [
- // 顶部用户选择 + 图标按钮
- Row(
- children: [
- DropdownButtonHideUnderline(
- child: DropdownButton(
- value: selectedUser,
- borderRadius: BorderRadius.circular(12),
- dropdownColor: const Color(0xff0F2B44),
- iconEnabledColor: Colors.white,
- style: const TextStyle(color: Colors.white),
- items: ['Eason Chan', 'Jay Chou', 'G.E.M.']
- .map((user) => DropdownMenuItem(
- value: user,
- child: Text(user),
- ))
- .toList(),
- onChanged: onUserChanged,
- ),
- ),
- const Spacer(),
- IconButton(
- onPressed: onChartPressed,
- icon: const Icon(Icons.bar_chart, color: Colors.white),
- ),
- ],
- ),
- const SizedBox(height: 12),
- // 日期+分数 横向滚动展示
- SizedBox(
- height: 70,
- child: ListView.separated(
- scrollDirection: Axis.horizontal,
- itemCount: scoreList.length,
- separatorBuilder: (_, __) => const SizedBox(width: 12),
- itemBuilder: (context, index) {
- final item = scoreList[index];
- final isToday = item.isToday;
-
- return Container(
- padding:
- const EdgeInsets.symmetric(horizontal: 12, vertical: 6),
- decoration: BoxDecoration(
- color: isToday
- ? Colors.white.withOpacity(0.1)
- : Colors.transparent,
- borderRadius: BorderRadius.circular(12),
- ),
- child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Text(item.weekday,
- style: const TextStyle(
- color: Colors.white70, fontSize: 12)),
- Text(item.dateStr,
- style: const TextStyle(
- color: Colors.white54, fontSize: 10)),
- const SizedBox(height: 4),
- Text(
- item.score.toString(),
- style: TextStyle(
- color: Colors.white,
- fontWeight:
- isToday ? FontWeight.bold : FontWeight.normal,
- fontSize: 16,
- ),
- ),
- ],
- ),
- );
- },
- ),
- )
- ],
- ),
- );
- }
-}
diff --git a/lib/pages/mh_page/new_mine_page.dart b/lib/pages/mh_page/new_mine_page.dart
index f7c5980..0e6f89f 100644
--- a/lib/pages/mh_page/new_mine_page.dart
+++ b/lib/pages/mh_page/new_mine_page.dart
@@ -2,13 +2,15 @@ import 'package:ef/ef.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart';
+import 'package:flutterflow_ui/flutterflow_ui.dart';
+import 'package:vbvs_app/common/color/appConstants.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
+import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
-import 'package:vbvs_app/controller/mh_controller/muser_info_controller.dart';
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
-
-import 'package:vbvs_app/enum/LoginStatus.dart';
+import 'package:vbvs_app/controller/user_info_controller.dart';
+import 'dart:ui' as ui;
class NewMinePage extends StatefulWidget {
const NewMinePage({super.key});
@@ -19,7 +21,7 @@ class NewMinePage extends StatefulWidget {
class _MinePageState extends State {
GlobalController globalController = Get.find();
- MUserInfoController userInfoController = Get.find();
+ UserInfoController userInfoController = Get.find();
ThemeController themeController = Get.find();
final GlobalKey _textKey = GlobalKey();
@@ -27,7 +29,18 @@ class _MinePageState extends State {
@override
void initState() {
super.initState();
- _calculateTextHalfWidth('Eason Chan');
+
+ final login = userInfoController.model.login;
+ String text;
+
+ if (login == 0) {
+ text = '未命名'.tr;
+ } else {
+ final nickname = userInfoController.model.user?.nick_name;
+ text = (nickname != null && nickname.isNotEmpty) ? nickname : '未命名'.tr;
+ }
+
+ // _calculateTextHalfWidth(text);
}
void _calculateTextHalfWidth(String text) {
@@ -40,14 +53,13 @@ class _MinePageState extends State {
);
final textPainter = TextPainter(
text: textSpan,
- textDirection: TextDirection.ltr,
+ textDirection: ui.TextDirection.ltr,
);
textPainter.layout(); // 计算文本宽度
setState(() {
_textHalfWidth = textPainter.width / 2;
});
}
-
@override
Widget build(BuildContext context) {
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
@@ -102,20 +114,20 @@ class _MinePageState extends State {
color: Colors.white,
// color: Colors.white,
))),
- ClickableContainer(
- backgroundColor: Colors.transparent,
- highlightColor: Colors.transparent,
- padding: EdgeInsets.only(right: 11.rpx),
- onTap: () {
+ // ClickableContainer(
+ // backgroundColor: Colors.transparent,
+ // highlightColor: Colors.transparent,
+ // padding: EdgeInsets.only(right: 11.rpx),
+ // onTap: () {
- },
- child: Container(
- height: 42.rpx,
- width: 42.rpx,
- child: SvgPicture.asset(
- 'assets/img/icon/people_info.svg',
- color: Colors.white,
- ))),
+ // },
+ // child: Container(
+ // height: 42.rpx,
+ // width: 42.rpx,
+ // child: SvgPicture.asset(
+ // 'assets/img/icon/people_info.svg',
+ // color: Colors.white,
+ // ))),
],
),
body: SafeArea(
@@ -160,32 +172,9 @@ class _MinePageState extends State {
child: Stack(
alignment: Alignment.center, // 使子组件在Stack中居中
children: [
- Container(
- // width: 194.rpx,
- height: 63.rpx,
- child: Column(
- mainAxisAlignment:
- MainAxisAlignment.spaceBetween,
- crossAxisAlignment:
- CrossAxisAlignment.center, // 文字水平居中
- children: [
- Text(
- 'Eason Chan',
- style: TextStyle(
- fontSize: 30.rpx,
- color: Colors.white,
- height: 1),
- ),
- Text(
- '135****2598',
- style: TextStyle(
- fontSize: 26.rpx,
- color: const Color(0XFF929699),
- height: 1),
- ),
- ],
- ),
- ),
+ Obx(() {
+ return getUserInfo(userInfoController);
+ }),
Positioned(
left: MediaQuery.of(context).size.width / 2 +
_textHalfWidth +
@@ -195,8 +184,25 @@ class _MinePageState extends State {
backgroundColor: Colors.transparent,
highlightColor: const Color(0xFF055466),
padding: EdgeInsets.zero,
- onTap: () {
- Get.toNamed("/editUserInfoPage");
+ onTap: () async {
+ await Get.toNamed("/editUserInfoPage");
+ await userInfoController.getUserInfo();
+ userInfoController.updateAll();
+ final login =
+ userInfoController.model.login;
+ String text;
+
+ if (login == 0) {
+ text = '未命名'.tr;
+ } else {
+ final nickname = userInfoController
+ .model.user?.nick_name;
+ text = (nickname != null &&
+ nickname.isNotEmpty)
+ ? nickname
+ : '未命名'.tr;
+ }
+ _calculateTextHalfWidth(text);
},
child: Container(
width: 42.rpx,
@@ -210,6 +216,7 @@ class _MinePageState extends State {
),
)),
),
+
],
),
),
@@ -412,4 +419,45 @@ class _MinePageState extends State {
),
);
}
+
+ Widget getUserInfo(UserInfoController userInfoController) {
+ int login = userInfoController.model.login!;
+ return Column(
+ mainAxisSize: MainAxisSize.max,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Text(
+ login == 1
+ ? (userInfoController.model.user!.nick_name ?? '未命名'.tr)
+ : "未命名".tr,
+ style: FlutterFlowTheme.of(context).bodyMedium.override(
+ fontFamily: 'Inter',
+ color: themeController.currentColor.sc3,
+ fontSize: AppConstants().title_text_fontSize,
+ letterSpacing: 0.0,
+ ),
+ ),
+ Text(
+ login == 1
+ ? (() {
+ final user = userInfoController.model.user!;
+ if (user.email != null && user.email!.isNotEmpty) {
+ return user.email!;
+ } else if (user.phone != null && user.phone!.isNotEmpty) {
+ return MyUtils.hidePhoneNumber(user.phone!);
+ } else {
+ return "微信用户".tr;
+ }
+ })()
+ : "未知数据".tr,
+ style: FlutterFlowTheme.of(context).bodyMedium.override(
+ fontFamily: 'Inter',
+ color: themeController.currentColor.sc4,
+ fontSize: AppConstants().normal_text_fontSize,
+ letterSpacing: 0.0,
+ ),
+ ),
+ ].divide(SizedBox(height: 20.rpx)),
+ );
+ }
}
diff --git a/lib/pages/mh_page/new_settingPage.dart b/lib/pages/mh_page/new_settingPage.dart
index 6cc770d..fc72277 100644
--- a/lib/pages/mh_page/new_settingPage.dart
+++ b/lib/pages/mh_page/new_settingPage.dart
@@ -3,12 +3,15 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:vbvs_app/common/color/appConstants.dart';
+import 'package:vbvs_app/common/color/app_uri_status.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
import 'package:vbvs_app/component/tool/CustomCard.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/mh_controller/mh_language_controller.dart';
+import 'package:vbvs_app/controller/user_info_controller.dart';
+import 'package:vbvs_app/model/api_response.dart';
class SettingPage extends StatefulWidget {
@override
@@ -17,6 +20,7 @@ class SettingPage extends StatefulWidget {
class _SettingPageState extends State {
MHLanguageController languageController = Get.find();
+ UserInfoController userInfoController = Get.find();
@override
void initState() {
languageController.initLanuageList();
@@ -454,21 +458,20 @@ class _SettingPageState extends State {
child: CustomCard(
borderRadius: 16.rpx,
- // 圆角半径
onTap: () {
- // ApiResponse apiResponse =
- // userInfoController.logOut();
- // TopSlideNotification.show(
- // context,
- // text: apiResponse.msg!,
- // textColor:
- // apiResponse.code == HttpStatusCodes.ok
- // ? themeController.currentColor.sc2
- // : themeController.currentColor.sc9,
- // );
- // if (apiResponse.code == HttpStatusCodes.ok) {
- // Get.offAllNamed("/mianPageBottomChange");
- // }
+ ApiResponse apiResponse =
+ userInfoController.logOut();
+ TopSlideNotification.show(
+ context,
+ text: apiResponse.msg!,
+ textColor:
+ apiResponse.code == HttpStatusCodes.ok
+ ? themeController.currentColor.sc2
+ : themeController.currentColor.sc9,
+ );
+ if (apiResponse.code == HttpStatusCodes.ok) {
+ Get.offAllNamed("/mianPageBottomChange");
+ }
},
colors: [
Color(0XFF84F5FF),
diff --git a/lib/pages/mh_page/user/controller/mht_login_controller.dart b/lib/pages/mh_page/user/controller/mht_login_controller.dart
index 5d06e25..ca98b11 100644
--- a/lib/pages/mh_page/user/controller/mht_login_controller.dart
+++ b/lib/pages/mh_page/user/controller/mht_login_controller.dart
@@ -1,10 +1,17 @@
+import 'package:EasyDartModule/EasyDartModule.dart';
import 'package:ef/ef.dart';
import 'package:flutter/material.dart';
import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:fluwx/fluwx.dart';
+import 'package:get_storage/get_storage.dart';
import 'package:json_annotation/json_annotation.dart';
+import 'package:vbvs_app/common/color/ServiceConstant.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
+import 'package:vbvs_app/common/util/requestWithLog.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
+import 'package:vbvs_app/controller/time/countdown_controller.dart';
+import 'package:vbvs_app/controller/user_info_controller.dart';
+import 'package:vbvs_app/model/user_data.dart';
import 'package:vbvs_app/pages/mh_page/user/controller/mht_register_controller.dart';
part 'mht_login_controller.g.dart';
@@ -16,7 +23,7 @@ class LoginModel {
String? account = '17649984946'; //账户
// String? account = '13953240733'; //账户
- String? password = 'wyf123,.'; //密码
+ String? password = 'wyf123..'; //密码
// String? account = '15255134931'; //账户
// String? password = 'mht123,.'; //密码
@@ -120,6 +127,39 @@ class MHTLoginController extends GetControllerEx {
showToast(message);
return message;
}
+ var data = {
+ "type": model.loginStyle == 1 ? 3 : 2,
+ "userName": model.account,
+ "password": model.password,
+ };
+ String serviceAddress = ServiceConstant.service_address;
+ String serviceName = ServiceConstant.server_service;
+ String serviceApi = ServiceConstant.login;
+ String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
+ await requestWithLog(
+ logTitle: "用户登录",
+ method: MyHttpMethod.post,
+ queryUrl: queryUrl,
+ data: data,
+ onSuccess: (res) {
+ res.rawResponse;
+ CountdownController countdownController = Get.find();
+ countdownController.countdown.value = 0;
+ UserInfoController userInfoController = Get.find();
+ userInfoController.model.login = 1;
+ userInfoController.model.user = UserModel.fromJson(res.data);
+ String token = res.rawResponse.headers['token']!.first;
+ EasyDartModule.dio.token = token;
+ final box = GetStorage();
+ box.write('token', token); // 存储 token
+ box.write('user', userInfoController.model.user!.toJson()); // 存储用户信息
+ },
+ onFailure: (res) {
+ message = res.msg!;
+ TopSlideNotification.show(context,
+ text: message, textColor: themeController.currentColor.sc9);
+ },
+ );
model.forceLogin = 0;
return message;
}
@@ -141,7 +181,7 @@ class MHTLoginController extends GetControllerEx {
message = '请输入正确的手机号'.tr;
showToast(message);
return message;
- }
+ }
return '';
}
diff --git a/lib/pages/mh_page/user/controller/mht_register_controller.dart b/lib/pages/mh_page/user/controller/mht_register_controller.dart
index 80afc23..811c5a8 100644
--- a/lib/pages/mh_page/user/controller/mht_register_controller.dart
+++ b/lib/pages/mh_page/user/controller/mht_register_controller.dart
@@ -1,7 +1,9 @@
import 'package:ef/ef.dart';
import 'package:flutter/src/widgets/framework.dart';
import 'package:json_annotation/json_annotation.dart';
+import 'package:vbvs_app/common/color/ServiceConstant.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
+import 'package:vbvs_app/common/util/requestWithLog.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
part 'mht_register_controller.g.dart';
@@ -102,14 +104,31 @@ class MHTRegisterController extends GetControllerEx {
text: message, textColor: stringToColor("#FF7159"));
return message;
}
- // message = await repository.createUser(
- // model.register_pd!, model.register_phone!, model.register_code!);
- // if (message.isNotEmpty) {
- // showToast(message);
- // return message;
- // }
-
- return "";
+ String serviceAddress = ServiceConstant.service_address;
+ String serviceName = ServiceConstant.server_service;
+ String serviceApi = ServiceConstant.user_register;
+ String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
+ var data = {
+ "type": 1,
+ "userName": model.register_phone!,
+ "password": model.register_pd!,
+ "verify": model.register_code!
+ };
+ await requestWithLog(
+ logTitle: "用户注册",
+ method: MyHttpMethod.post,
+ queryUrl: queryUrl,
+ data: data,
+ onSuccess: (res) {
+ TopSlideNotification.show(context, text: "注册成功".tr);
+ },
+ onFailure: (res) {
+ message = res.msg!;
+ TopSlideNotification.show(context,
+ text: message, textColor: themeController.currentColor.sc9);
+ },
+ );
+ return message;
}
Future getCode(BuildContext context) async {
@@ -125,7 +144,32 @@ class MHTRegisterController extends GetControllerEx {
TopSlideNotification.show(context,
text: message, textColor: stringToColor("#FF7159"));
return message;
- }
- return '';
+ }
+ String serviceAddress = ServiceConstant.service_address;
+ String serviceName = ServiceConstant.server_service;
+ String serviceApi = ServiceConstant.send_code;
+ String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
+ var data = {
+ "userName": model.register_phone!,
+ 'type':4,
+ };
+ await requestWithLog(
+ logTitle: "获取验证码",
+ method: MyHttpMethod.post,
+ queryUrl: queryUrl,
+ data: data,
+ onSuccess: (res) {
+ TopSlideNotification.show(context, text: '发送验证码成功'.tr);
+ },
+ onFailure: (res) {
+ message = res.msg!;
+ TopSlideNotification.show(
+ context,
+ text: message.tr,
+ textColor: themeController.currentColor.sc9,
+ );
+ },
+ );
+ return message;
}
}
diff --git a/lib/pages/mh_page/user/page/edit_userinfo_page.dart b/lib/pages/mh_page/user/page/edit_userinfo_page.dart
new file mode 100644
index 0000000..c416515
--- /dev/null
+++ b/lib/pages/mh_page/user/page/edit_userinfo_page.dart
@@ -0,0 +1,369 @@
+import 'dart:io';
+
+import 'package:EasyDartModule/EasyDartModule.dart' as edm;
+import 'package:ef/ef.dart';
+import 'package:flutter/material.dart';
+import 'package:flutterflow_ui/flutterflow_ui.dart';
+import 'package:vbvs_app/common/color/appConstants.dart';
+import 'package:vbvs_app/common/color/app_uri_status.dart';
+import 'package:vbvs_app/common/util/DailyLogUtils.dart';
+import 'package:vbvs_app/common/util/FitTool.dart';
+import 'package:vbvs_app/common/util/MyUtils.dart';
+import 'package:vbvs_app/component/tool/ClickableContainer.dart';
+import 'package:vbvs_app/component/tool/CustomCard.dart';
+import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
+import 'package:vbvs_app/controller/device/blueteeth_bind_controller.dart';
+import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
+import 'package:vbvs_app/controller/person/person_controller.dart';
+import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
+import 'package:vbvs_app/controller/user_info_controller.dart';
+import 'package:vbvs_app/model/api_response.dart';
+
+class EditUserPage extends StatefulWidget {
+ EditUserPage({super.key});
+
+ @override
+ State createState() => _UpdateUserPageState();
+}
+
+class _UpdateUserPageState extends State {
+ GlobalController globalController = Get.find();
+ UserInfoController userInfoController = Get.find();
+ BlueteethBindController blueteethBindController = Get.find();
+ PersonController personController = Get.find();
+ ThemeController themeController = Get.find();
+
+ @override
+ void initState() {
+ super.initState();
+ userInfoController.model.user!.tmpHead = null;
+ userInfoController.model.user!.tmpNickName = null;
+ userInfoController.model.user!.tmpHead =
+ userInfoController.model.user!.avatar;
+ userInfoController.model.user!.tmpNickName =
+ userInfoController.model.user!.nick_name;
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ int login = userInfoController.model.login!;
+ return LayoutBuilder(
+ builder: (context, bodySize) => GestureDetector(
+ onTap: () => FocusScope.of(context).unfocus(),
+ child: Container(
+ decoration: BoxDecoration(
+ image: DecorationImage(
+ image: AssetImage('assets/images/new_background.png'),
+ fit: BoxFit.fill,
+ ),
+ ),
+ child: Scaffold(
+ backgroundColor: Colors.transparent,
+ appBar: AppBar(
+ backgroundColor: Colors.transparent,
+ automaticallyImplyLeading: false,
+ iconTheme: IconThemeData(
+ color: themeController.currentColor.sc3,
+ ),
+ titleSpacing: 0,
+ title: Container(
+ width: double.infinity,
+ height: 180.rpx,
+ child: Stack(
+ alignment: Alignment.center,
+ children: [
+ Text(
+ '编辑资料'.tr,
+ style: FlutterFlowTheme.of(context).bodyMedium.override(
+ fontFamily: 'Readex Pro',
+ color: themeController.currentColor.sc3,
+ letterSpacing: 0,
+ fontSize: 30.rpx,
+ ),
+ ),
+ Positioned(
+ left: 0,
+ child: returnIconButtom,
+ ),
+ Positioned(
+ right: 20.rpx,
+ child: CustomCard(
+ borderRadius: 10.rpx,
+ onTap: () async {
+ ApiResponse apiResponse =
+ await userInfoController.updateData();
+ TopSlideNotification.show(
+ context,
+ text: apiResponse.msg!,
+ textColor: apiResponse.code == HttpStatusCodes.ok
+ ? themeController.currentColor.sc2
+ : themeController.currentColor.sc9,
+ );
+ if (apiResponse.code == HttpStatusCodes.ok) {
+ userInfoController.model.user!.tmpHead = null;
+ userInfoController.model.user!.tmpNickName = null;
+ await userInfoController.getUserInfo();
+ userInfoController.updateAll();
+ Get.back();
+ }
+ },
+ colors: [
+ stringToColor("FCFCFC"),
+ stringToColor("CEECE3"),
+ ],
+ gradientDirection: GradientDirection.vertical,
+ child: Container(
+ width: 100.rpx,
+ height: 60.rpx,
+ alignment: Alignment.center,
+ padding: EdgeInsetsDirectional.fromSTEB(
+ 16.rpx, 0.rpx, 16.rpx, 0.rpx),
+ child: Text(
+ '保存'.tr,
+ style: TextStyle(
+ fontFamily: 'Inter Tight',
+ color: stringToColor("#011D33"),
+ letterSpacing: 0.0,
+ fontSize: AppConstants().normal_text_fontSize),
+ ),
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ actions: [],
+ centerTitle: false,
+ ),
+ body: SafeArea(
+ top: true,
+ child: Container(
+ width: double.infinity,
+ height: double.infinity,
+ decoration: BoxDecoration(),
+ child: Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(
+ 60.rpx, 0.rpx, 60.rpx, 0.rpx),
+ child: Column(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(
+ 0.rpx, 76.rpx, 0.rpx, 0.rpx),
+ child: Container(
+ width: MediaQuery.sizeOf(context).width * 0.213,
+ height: MediaQuery.sizeOf(context).height * 0.098,
+ constraints: BoxConstraints(
+ minWidth: 160.rpx,
+ minHeight: 160.rpx,
+ ),
+ decoration: BoxDecoration(),
+ child: Obx(() {
+ return getImageWidget(context);
+ })),
+ ),
+ ClickableContainer(
+ backgroundColor: Colors.transparent,
+ highlightColor: themeController.currentColor.sc2,
+ padding: EdgeInsetsDirectional.fromSTEB(
+ 0.rpx, 44.rpx, 0.rpx, 44.rpx),
+ borderRadius: 0,
+ onTap: () async {
+ edm.EasyDartModule.logger
+ .info("${userInfoController.model.user!}点击上传头像");
+ DailyLogUtils.writeLog(
+ "${userInfoController.model.user!}点击上传头像");
+ ApiResponse apiResponse =
+ await userInfoController.uploadImg();
+ TopSlideNotification.show(
+ context,
+ text: apiResponse.msg!,
+ textColor: apiResponse.code == HttpStatusCodes.ok
+ ? themeController.currentColor.sc2
+ : themeController.currentColor.sc9,
+ );
+ },
+ child: Center(
+ child: Text(
+ '点击更换头像'.tr,
+ style: FlutterFlowTheme.of(context)
+ .bodyMedium
+ .override(
+ fontFamily: 'Inter',
+ fontSize: 26.rpx,
+ letterSpacing: 0.0,
+ color: stringToColor("#85F5FF"),
+ ),
+ ),
+ ),
+ ),
+ Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(
+ 0.rpx, 79.rpx, 0.rpx, 0.rpx),
+ child: Container(
+ width: double.infinity,
+ decoration: BoxDecoration(
+ border: Border(
+ top: BorderSide(
+ color: themeController.currentColor.sc4
+ .withOpacity(0.5),
+ width: AppConstants().border_width,
+ ),
+ bottom: BorderSide(
+ color: themeController.currentColor.sc4
+ .withOpacity(0.5),
+ width: AppConstants().border_width,
+ ),
+ ),
+ ),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Expanded(
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ Expanded(
+ child: Container(
+ width: 100.rpx,
+ height: 100.rpx,
+ decoration: BoxDecoration(),
+ child: Align(
+ alignment: AlignmentDirectional(0, 0),
+ child: TextFormField(
+ initialValue: userInfoController
+ .model.user!.nick_name,
+ onChanged: (value) {
+ userInfoController.model.user!
+ .tmpNickName = value;
+ },
+ autofocus: false,
+ obscureText: false,
+ decoration: InputDecoration(
+ isDense: true,
+ labelStyle:
+ FlutterFlowTheme.of(context)
+ .labelMedium
+ .override(
+ fontFamily: 'Inter',
+ fontSize: 26.rpx,
+ letterSpacing: 0.0,
+ ),
+ hintText: '未命名'.tr,
+ hintStyle:
+ FlutterFlowTheme.of(context)
+ .labelMedium
+ .override(
+ fontFamily: 'Inter',
+ fontSize: 26.rpx,
+ letterSpacing: 0.0,
+ color: themeController
+ .currentColor.sc4,
+ ),
+ enabledBorder: OutlineInputBorder(
+ borderSide: BorderSide(
+ color: Color(0x00000000),
+ width: 1.rpx,
+ ),
+ borderRadius:
+ BorderRadius.circular(
+ 8.rpx),
+ ),
+ focusedBorder: OutlineInputBorder(
+ borderSide: BorderSide(
+ color: Color(0x00000000),
+ width: 1.rpx,
+ ),
+ borderRadius:
+ BorderRadius.circular(
+ 8.rpx),
+ ),
+ errorBorder: OutlineInputBorder(
+ borderSide: BorderSide(
+ color: FlutterFlowTheme.of(
+ context)
+ .error,
+ width: 1.rpx,
+ ),
+ borderRadius:
+ BorderRadius.circular(
+ 8.rpx),
+ ),
+ focusedErrorBorder:
+ OutlineInputBorder(
+ borderSide: BorderSide(
+ color: FlutterFlowTheme.of(
+ context)
+ .error,
+ width: 1.rpx,
+ ),
+ borderRadius:
+ BorderRadius.circular(
+ 8.rpx),
+ ),
+ filled: false,
+ ),
+ style: FlutterFlowTheme.of(context)
+ .bodyMedium
+ .override(
+ fontFamily: 'Inter',
+ fontSize: 26.rpx,
+ letterSpacing: 0.0,
+ color: themeController
+ .currentColor.sc3,
+ ),
+ textAlign: TextAlign.center,
+ cursorColor: themeController
+ .currentColor.sc3,
+ ),
+ ),
+ ),
+ ),
+ ].divide(SizedBox(width: 27.rpx)),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+
+ Widget getImageWidget(BuildContext context) {
+ try {
+ UserInfoController controller = Get.find();
+ var head = controller.model.user!.tmpHead;
+ return Container(
+ width: 200.rpx,
+ height: 200.rpx,
+ child: Container(
+ clipBehavior: Clip.antiAlias,
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ ),
+ child: head == null || head.isEmpty
+ ? Image.asset(
+ 'assets/img/avatar.png',
+ fit: BoxFit.cover,
+ )
+ : Image.network(
+ head,
+ fit: BoxFit.cover,
+ ),
+ ),
+ );
+ } catch (e) {
+ print(e);
+ }
+ return Container();
+ }
+}
diff --git a/lib/pages/mh_page/user/page/mht_login_page.dart b/lib/pages/mh_page/user/page/mht_login_page.dart
index 75dbcec..973583f 100644
--- a/lib/pages/mh_page/user/page/mht_login_page.dart
+++ b/lib/pages/mh_page/user/page/mht_login_page.dart
@@ -6,6 +6,7 @@ import 'package:flutter/services.dart';
import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:fluwx/fluwx.dart';
import 'package:get_storage/get_storage.dart';
+import 'package:path/path.dart';
import 'package:vbvs_app/common/color/appConstants.dart';
import 'package:vbvs_app/common/color/appFontsize.dart';
import 'package:vbvs_app/common/util/CheckNetwork.dart';
@@ -13,6 +14,7 @@ import 'package:vbvs_app/common/util/CommonVariables.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/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/time/countdown_controller.dart';
import 'package:vbvs_app/pages/mh_page/user/controller/mht_login_controller.dart';
import 'package:vbvs_app/pages/mh_page/user/controller/mht_register_controller.dart';
@@ -84,7 +86,9 @@ class MHTLoginPage extends GetView {
//首次未注册的用户引导去手机号填写页面
//已注册的用户直接跳转首页
if (CommonVariables.isNetWorkOn == false) {
- showToast("网络未连接,请开启设备网络后重试");
+ TopSlideNotification.show(Get.context!,
+ text: "网络未连接,请开启设备网络后重试".tr,
+ textColor: themeController.currentColor.sc9);
return;
}
String msg = await controller.loginByWechatCode(code);
@@ -98,9 +102,11 @@ class MHTLoginPage extends GetView {
// TODO 操作全部跳转页面前成功以后移除监听,防止重复监听,其他方式登录成功也需要移出监听
// fluwxCancelable?.cancel();
} else if (errCode == -4) {
- showToast("用户拒绝授权");
+ TopSlideNotification.show(Get.context!,
+ text: "用户拒绝授权".tr, textColor: themeController.currentColor.sc9);
} else if (errCode == -2) {
- showToast("用户取消授权");
+ TopSlideNotification.show(Get.context!,
+ text: "用户取消授权".tr, textColor: themeController.currentColor.sc9);
}
}
});
@@ -907,8 +913,15 @@ class MHTLoginPage extends GetView {
if (CommonVariables
.isNetWorkOn ==
false) {
- showToast(
- "网络未连接,请开启设备网络后重试");
+ TopSlideNotification.show(
+ context,
+ text:
+ "网络未连接,请开启设备网络后重试"
+ .tr,
+ textColor:
+ themeController
+ .currentColor
+ .sc9);
return;
}
String msg =
@@ -935,7 +948,8 @@ class MHTLoginPage extends GetView {
.value ==
0
? '获取验证码'
- : '${countdownController.countdown.value}' + '秒'.tr,
+ : '${countdownController.countdown.value}' +
+ '秒'.tr,
style: TextStyle(
fontFamily:
'Readex Pro',
@@ -1191,8 +1205,15 @@ class MHTLoginPage extends GetView {
if (CommonVariables
.isNetWorkOn ==
false) {
- showToast(
- "网络未连接,请开启设备网络后重试");
+ TopSlideNotification.show(
+ context,
+ text:
+ "网络未连接,请开启设备网络后重试"
+ .tr,
+ textColor:
+ themeController
+ .currentColor
+ .sc9);
return;
}
String msg =
@@ -1218,7 +1239,8 @@ class MHTLoginPage extends GetView {
.value ==
0
? '获取验证码'
- : '${countdownController.countdown.value}' + '秒'.tr,
+ : '${countdownController.countdown.value}' +
+ '秒'.tr,
style: TextStyle(
fontFamily:
'Readex Pro',
@@ -1254,7 +1276,10 @@ class MHTLoginPage extends GetView {
onTap: () async {
if (CommonVariables.isNetWorkOn ==
false) {
- showToast("网络未连接,请开启设备网络后重试");
+ TopSlideNotification.show(context,
+ text: "网络未连接,请开启设备网络后重试".tr,
+ textColor: themeController
+ .currentColor.sc9);
return;
}
String msg =
@@ -1286,8 +1311,6 @@ class MHTLoginPage extends GetView {
Get.offAndToNamed(
"/mianPageBottomChange");
- } else {
- showToast(msg);
}
},
colors: [
@@ -2142,7 +2165,10 @@ class MHTLoginPage extends GetView {
if (_lastBackPressedTime == null ||
currentTime.difference(_lastBackPressedTime!) > Duration(seconds: 2)) {
_lastBackPressedTime = currentTime;
- showToast("再按一次退出程序", color: color_warning, closeTime: 2);
+ TopSlideNotification.show(
+ context,
+ text: "再按一次退出程序".tr,
+ );
return false; // 阻止退出程序
} else {
return true; // 允许退出程序
diff --git a/lib/pages/mh_page/user/page/register_page.dart b/lib/pages/mh_page/user/page/register_page.dart
index 5e753d0..cacb32a 100644
--- a/lib/pages/mh_page/user/page/register_page.dart
+++ b/lib/pages/mh_page/user/page/register_page.dart
@@ -1,13 +1,16 @@
import 'package:ef/ef.dart';
import 'package:flutter/material.dart';
+import 'package:vbvs_app/common/color/appConstants.dart';
+import 'package:vbvs_app/common/util/CommonVariables.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/register_controller.dart';
+import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/time/countdown_controller.dart';
import 'package:vbvs_app/pages/common/selectDialog.dart';
+import 'package:vbvs_app/pages/mh_page/user/controller/mht_register_controller.dart';
-class RegisterPage extends GetView {
+class RegisterPage extends GetView {
final scaffoldKey = GlobalKey();
BoxConstraints? bodysize;
@@ -16,7 +19,6 @@ class RegisterPage extends GetView {
RegisterPage() {
controller.model.pdshow = true;
controller.model.cpdshow = true;
- Get.put(RegisterController());
}
@override
@@ -442,33 +444,34 @@ class RegisterPage extends GetView {
CountdownController>();
return InkWell(
onTap: () async {
- // if (countdownController
- // .countdown.value !=
- // 0) {
- // return;
- // }
- // if (CommonVariables
- // .isNetWorkOn ==
- // false) {
- // showToast(
- // "网络未连接,请开启设备网络后重试");
- // return;
- // }
- // String msg =
- // await controller
- // .getCode(context);
- // if (msg.isNotEmpty) {
- // return;
- // }
- // countdownController
- // .countdown
- // .value ==
- // 0
- // ? countdownController
- // .startCountdown(
- // AppConstants
- // .code_time)
- // : null;
+ if (countdownController
+ .countdown.value !=
+ 0) {
+ return;
+ }
+ if (CommonVariables
+ .isNetWorkOn ==
+ false) {
+ showToast(
+ "网络未连接,请开启设备网络后重试"
+ .tr);
+ return;
+ }
+ String msg =
+ await controller
+ .getCode(context);
+ if (msg.isNotEmpty) {
+ return;
+ }
+ countdownController
+ .countdown
+ .value ==
+ 0
+ ? countdownController
+ .startCountdown(
+ AppConstants
+ .code_time)
+ : null;
},
child: Text(
countdownController
@@ -741,17 +744,20 @@ class RegisterPage extends GetView {
borderRadius: 16.rpx,
gradientDirection:
GradientDirection.vertical,
- onTap: () {
- // if (CommonVariables.isNetWorkOn ==
- // false) {
- // showToast("网络未连接,请开启设备网络后重试");
- // return;
- // }
- // String msg = await controller
- // .registerUser(context);
- // if (msg == null || msg.isEmpty) {
- // Get.toNamed("/loginPage");
- // }
+ onTap: () async {
+ if (CommonVariables.isNetWorkOn ==
+ false) {
+ TopSlideNotification.show(context,
+ text: "网络未连接,请开启设备网络后重试".tr,
+ textColor: themeController
+ .currentColor.sc9);
+ return;
+ }
+ String msg = await controller
+ .registerUser(context);
+ if (msg == null || msg.isEmpty) {
+ Get.toNamed("/loginPage");
+ }
},
colors: const [
Color(0xFFFCFCFC),
@@ -769,7 +775,7 @@ class RegisterPage extends GetView {
BorderRadius.circular(16.rpx),
),
child: Text(
- "提交",
+ "提交".tr,
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
diff --git a/lib/routers/mh_routers.dart b/lib/routers/mh_routers.dart
index 70f7f3d..f8d4db9 100644
--- a/lib/routers/mh_routers.dart
+++ b/lib/routers/mh_routers.dart
@@ -1,7 +1,7 @@
import 'package:ef/ef.dart';
import 'package:flutter/cupertino.dart';
-import 'package:vbvs_app/controller/mh_controller/muser_info_controller.dart';
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
+import 'package:vbvs_app/controller/user_info_controller.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';
@@ -11,7 +11,7 @@ import 'package:vbvs_app/pages/mh_page/book_info_page.dart';
import 'package:vbvs_app/pages/mh_page/book_success_page.dart';
import 'package:vbvs_app/pages/mh_page/device_people_info.dart';
import 'package:vbvs_app/pages/mh_page/edit_bed.dart';
-import 'package:vbvs_app/pages/mh_page/edit_userinfo_page.dart';
+import 'package:vbvs_app/pages/mh_page/user/page/edit_userinfo_page.dart';
import 'package:vbvs_app/pages/mh_page/experience_store_page.dart';
import 'package:vbvs_app/pages/mh_page/issue_list_page.dart';
import 'package:vbvs_app/pages/mh_page/my_experience_page.dart';
@@ -35,7 +35,7 @@ ThemeController themeController = Get.find();
var mhroutes = {
"/mianPageBottomChange": (contxt) => MainPageBBottomChange(),
"/homeDeviceType": (contxt) => HomeDeviceType(),
- "/editUserInfoPage": (contxt) => EditUserInfoPage(),
+ "/editUserInfoPage": (contxt) => EditUserPage(),
"/peopleInfoPage": (contxt) => PeopleInfoPage(),
"/repairHistoryListPage": (contxt) => RepairHistoryListPage(),
"/deviceRepairPage": (contxt) => DeviceRepairPage(),
@@ -66,7 +66,7 @@ var mhonGenerateRoute = (RouteSettings settings) {
final Function? pageContentBuilder = mhroutes[name]; // 根据路由名称获取对应的页面构建器
if (pageContentBuilder != null) {
- MUserInfoController userInfoController = Get.find();
+ UserInfoController userInfoController = Get.find();
int loginStatus = userInfoController.model.login!;
// 检查用户是否已登录,如果未登录且路由不是登录相关页面,跳转到登录页面
diff --git a/pubspec.yaml b/pubspec.yaml
index f88e2cb..3b3b543 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -81,8 +81,10 @@ flutter:
uses-material-design: true
assets:
- assets/langs/
+ - assets/mhlangs/
- assets/images/
- assets/images/toast/
+ - assets/images/icon/
- assets/img/
- assets/img/menu/
- assets/img/icon/