更新默认本地语言

This commit is contained in:
wyf
2025-08-11 14:55:09 +08:00
parent 50e1ebea20
commit da6da14d6a
16 changed files with 1468 additions and 1290 deletions

View File

@@ -146,7 +146,7 @@
"其他手机登录页": { "其他手机登录页": {
"输入内容": "Enter phone number/email", "输入内容": "Enter phone number/email",
"输入验证码": "Enter verification code", "输入验证码": "Enter verification code",
"获取验证码":"Get verification code", "获取验证码": "Get code",
"登录": "Login", "登录": "Login",
"请输入手机号": "Please enter phone number/email", "请输入手机号": "Please enter phone number/email",
"不正确手机号": "Please enter valid phone number or email", "不正确手机号": "Please enter valid phone number or email",
@@ -176,9 +176,6 @@
"退出成功": "Logout successful", "退出成功": "Logout successful",
"退出失败": "Logout failed" "退出失败": "Logout failed"
}, },
"关于我们":{
"标题":"About Us"
},
"服务器": { "服务器": {
"失败": "Server error, please contact administrator" "失败": "Server error, please contact administrator"
}, },
@@ -236,7 +233,6 @@
}, },
"未命名": "Unnamed", "未命名": "Unnamed",
"未知时间": "Unknown", "未知时间": "Unknown",
"设备ID":"Device ID",
"更新时间": "Update time", "更新时间": "Update time",
"已分享": "Shared", "已分享": "Shared",
"设备来源": "Device source", "设备来源": "Device source",
@@ -349,9 +345,9 @@
"连接中...": "Connecting", "连接中...": "Connecting",
"刷新": "Refresh", "刷新": "Refresh",
"版本": "Version:", "版本": "Version:",
"日报":"Daily", "日报": "Day",
"报":"Monthly", "报": "Week",
"报":"Weekly", "报": "Month",
"4g设备配置wifi提示": "4G device doesn't require WiFi configuration", "4g设备配置wifi提示": "4G device doesn't require WiFi configuration",
"微信客服提示": "Please install WeChat APP first to contact support", "微信客服提示": "Please install WeChat APP first to contact support",
"打开微信客服提示": "Opening WeChat support...", "打开微信客服提示": "Opening WeChat support...",
@@ -422,6 +418,24 @@
"次": "times", "次": "times",
"秒": "sec", "秒": "sec",
"暂无": "none", "暂无": "none",
"失败": "Failed" "失败": "Failed",
"关于我们": "About Us",
"周一": "Mon",
"周二": "Tue",
"周三": "Wed",
"周四": "Thu",
"周五": "Fri",
"周六": "Sat",
"周日": "Sun",
"无报告": "none",
"姓名": "Name",
"年龄": "Age",
"设备ID": "Device ID",
"体重": "Weight",
"分": "",
"位置权限说明": "Location Permission Description",
"获得位置信息,连接附近的蓝牙设备与推荐附近门店": "Obtain location information, connect to nearby Bluetooth devices, and recommend nearby stores",
"蓝牙权限说明": "Bluetooth Permission Description",
"搜索链接附近的蓝牙设备": "Search and connect to nearby Bluetooth devices",
"附近设备权限说明": "Nearby Device Permission Description"
} }

View File

@@ -142,7 +142,6 @@
"配网失败": "配网失败", "配网失败": "配网失败",
"配网中": "配网中", "配网中": "配网中",
"需配网": "请给设备配置网络!" "需配网": "请给设备配置网络!"
}, },
"其他手机登录页": { "其他手机登录页": {
"输入内容": "输入手机号码/邮箱", "输入内容": "输入手机号码/邮箱",
@@ -177,9 +176,6 @@
"退出成功": "退出成功", "退出成功": "退出成功",
"退出失败": "退出失败" "退出失败": "退出失败"
}, },
"关于我们":{
"标题":"关于我们"
},
"服务器": { "服务器": {
"失败": "服务器内部错误,请联系管理员" "失败": "服务器内部错误,请联系管理员"
}, },
@@ -237,7 +233,6 @@
}, },
"未命名": "未命名", "未命名": "未命名",
"未知时间": "-", "未知时间": "-",
"设备ID":"设备ID",
"更新时间": "更新时间", "更新时间": "更新时间",
"已分享": "已分享", "已分享": "已分享",
"设备来源": "设备来源", "设备来源": "设备来源",
@@ -436,8 +431,24 @@
"暂无": "暂无", "暂无": "暂无",
"设备连接超时,请重试": "设备连接超时,请点击刷新重试", "设备连接超时,请重试": "设备连接超时,请点击刷新重试",
"设备连接失败": "设备连接失败,请点击刷新重试", "设备连接失败": "设备连接失败,请点击刷新重试",
"失败":"服务器内部错误,请联系管理员" "失败": "服务器内部错误,请联系管理员",
"关于我们": "关于我们",
"周一": "周一",
"周二": "周二",
"周三": "周三",
"周四": "周四",
"周五": "周五",
"周六": "周六",
"周日": "周日",
"无报告": "无报告",
"姓名": "姓名",
"年龄": "年龄",
"设备ID": "设备ID",
"体重": "体重",
"分":"分",
"位置权限说明":"位置权限说明",
"获得位置信息,连接附近的蓝牙设备与推荐附近门店":"获得位置信息,连接附近的蓝牙设备与推荐附近门店",
"蓝牙权限说明":"蓝牙权限说明",
"搜索链接附近的蓝牙设备":"搜索链接附近的蓝牙设备",
"附近设备权限说明":"附近设备权限说明"
} }

View File

@@ -176,9 +176,6 @@
"退出成功": "退出成功", "退出成功": "退出成功",
"退出失败": "退出失敗" "退出失败": "退出失敗"
}, },
"关于我们":{
"标题":"關於我們"
},
"服务器": { "服务器": {
"失败": "服務器內部錯誤,請聯繫管理員" "失败": "服務器內部錯誤,請聯繫管理員"
}, },
@@ -421,5 +418,23 @@
"昨日数据": "昨日數據", "昨日数据": "昨日數據",
"次": "次", "次": "次",
"秒": "秒", "秒": "秒",
"失败": "失敗" "失败": "失敗",
"关于我们": "關於我們",
"周一": "週一",
"周二": "週二",
"周三": "週三",
"周四": "週四",
"周五": "週五",
"周六": "週六",
"周日": "週日",
"无报告": "无报告",
"姓名": "姓名",
"年龄": "年齡",
"体重": "體重",
"分": "分",
"位置权限说明": "位置權限說明",
"获得位置信息,连接附近的蓝牙设备与推荐附近门店": "獲得位置信息,連接附近的藍牙設備與推薦附近門店",
"蓝牙权限说明": "藍牙權限說明",
"搜索链接附近的蓝牙设备": "搜索連接附近的藍牙設備",
"附近设备权限说明": "附近設備權限說明"
} }

View File

@@ -1,10 +1,10 @@
class ServiceConstant { class ServiceConstant {
// static const String baseHost = "zhmht.swes.com.cn:27021"; //服务地址 眠花糖测试地址 // static const String baseHost = "zhmht.swes.com.cn:27021"; //服务地址 眠花糖测试地址
static const String baseHost = "zhmht.swes.com.cn:27020"; //服务地址 眠花糖正式地址 // static const String baseHost = "zhmht.swes.com.cn:27020"; //服务地址 眠花糖正式地址
// static const String baseHost = "vsbs-test.he-info.cn"; //服务地址 本地测试地址 static const String baseHost = "vsbs-test.he-info.cn"; //服务地址 本地测试地址
// static const String baseHost = "vsbst-api.he-info.cn";//服务地址 // static const String baseHost = "vsbst-api.he-info.cn";//服务地址
// static const String service_address = "http://$baseHost"; static const String service_address = "http://$baseHost";
static const String service_address = "https://$baseHost"; // static const String service_address = "https://$baseHost";
static String server_service = "/vsbs_app_server"; //服务名称 static String server_service = "/vsbs_app_server"; //服务名称

View File

@@ -17,42 +17,6 @@ class SleepdateWidget extends StatelessWidget {
this.highlightColor = Colors.black, // 默认值黑色 this.highlightColor = Colors.black, // 默认值黑色
}); });
@override
// Widget build(BuildContext context) {
// return ClickableContainer(
// onTap: onTap,
// backgroundColor: Colors.transparent,
// highlightColor: Colors.transparent,
// padding: EdgeInsets.all(4.rpx),
// child: Container(
// width: 90.rpx,
// height: 90.rpx,
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(30.rpx),
// color: isSelected ? highlightColor : Colors.transparent, // 使用传入的颜色
// ),
// child: Padding(
// padding:
// EdgeInsetsDirectional.fromSTEB(10.rpx, 10.rpx, 10.rpx, 10.rpx),
// child: Container(
// decoration: BoxDecoration(
// color: Color(0xFF757575),
// shape: BoxShape.circle,
// ),
// alignment: Alignment.center,
// child: Text(
// '${date.day}',
// style: TextStyle(
// color: Colors.white,
// fontSize: 26.rpx,
// letterSpacing: 0.0,
// ),
// ),
// ),
// ),
// ),
// );
// }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Color? fillColor; Color? fillColor;

View File

@@ -6,7 +6,6 @@ import 'package:ef/ef.dart';
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
import 'package:vbvs_app/common/color/ServiceConstant.dart'; import 'package:vbvs_app/common/color/ServiceConstant.dart';
import 'package:vbvs_app/common/color/app_uri_status.dart'; import 'package:vbvs_app/common/color/app_uri_status.dart';
import 'package:vbvs_app/controller/mh_controller/mh_language_controller.dart';
import 'package:vbvs_app/controller/setting/language/language_controller.dart'; import 'package:vbvs_app/controller/setting/language/language_controller.dart';
import 'package:vbvs_app/model/api_response.dart'; import 'package:vbvs_app/model/api_response.dart';
@@ -40,7 +39,7 @@ class DeviceTypeController extends GetControllerEx<DeviceTypeModel> {
attr = GetModel(DeviceTypeModel()).obs; attr = GetModel(DeviceTypeModel()).obs;
} }
RxList deviceTypeList = [].obs; RxList deviceTypeList = [].obs;
MHLanguageController languageController = Get.find(); LanguageController languageController = Get.find();
Future<ApiResponse> getDeviceType() async { Future<ApiResponse> getDeviceType() async {
ApiResponse apiResponse = ApiResponse(code: -1, msg: "请求失败".tr); ApiResponse apiResponse = ApiResponse(code: -1, msg: "请求失败".tr);

View File

@@ -181,6 +181,10 @@ class MessageController extends GetControllerEx<MessageModel> {
queryUrl += "?lang=$language"; queryUrl += "?lang=$language";
} }
} }
if (type != null) {
queryUrl = "$queryUrl&type=$type";
}
queryUrl = "$queryUrl&mid=ALL";
var response = await EasyDartModule.dio.post(queryUrl); var response = await EasyDartModule.dio.post(queryUrl);
if (response != null) { if (response != null) {

View File

@@ -5,6 +5,8 @@ import 'package:ef/ef.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
import 'package:vbvs_app/common/color/appConstants.dart';
import 'package:vbvs_app/enum/APPPackageType.dart';
import 'package:vbvs_app/language/AppLanguage.dart'; import 'package:vbvs_app/language/AppLanguage.dart';
part 'mh_language_controller.g.dart'; // 由json_serializable自动生成的部分 part 'mh_language_controller.g.dart'; // 由json_serializable自动生成的部分
@@ -47,10 +49,25 @@ class MHLanguageController extends GetControllerEx<MHLanguageModel> {
final Map<String, dynamic> manifestMap = json.decode(manifestContent); final Map<String, dynamic> manifestMap = json.decode(manifestContent);
// 筛选出 langs 目录下的 .json 文件 // 筛选出 langs 目录下的 .json 文件
final langFiles = manifestMap.keys
int code = AppConstants().ent_type;
final langFiles;
if (APPPackageType.TH.code == code) {
langFiles = manifestMap.keys
.where((String key) =>
key.startsWith('assets/langs/') && key.endsWith('.json'))
.toList();
} else if (APPPackageType.MHT.code == code) {
langFiles = manifestMap.keys
.where((String key) => .where((String key) =>
key.startsWith('assets/mhlangs/') && key.endsWith('.json')) key.startsWith('assets/mhlangs/') && key.endsWith('.json'))
.toList(); .toList();
} else {
langFiles = manifestMap.keys
.where((String key) =>
key.startsWith('assets/langs/') && key.endsWith('.json'))
.toList();
}
// 2. 遍历所有语言文件 // 2. 遍历所有语言文件
for (final filePath in langFiles) { for (final filePath in langFiles) {

View File

@@ -6,6 +6,7 @@ import 'package:get_storage/get_storage.dart';
import 'package:img_picker/img_picker.dart'; import 'package:img_picker/img_picker.dart';
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
import 'package:vbvs_app/common/color/ServiceConstant.dart'; import 'package:vbvs_app/common/color/ServiceConstant.dart';
import 'package:vbvs_app/common/color/appConstants.dart';
import 'package:vbvs_app/common/color/app_uri_status.dart'; import 'package:vbvs_app/common/color/app_uri_status.dart';
import 'package:vbvs_app/common/util/DailyLogUtils.dart'; import 'package:vbvs_app/common/util/DailyLogUtils.dart';
import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/common/util/MyUtils.dart';
@@ -14,6 +15,7 @@ import 'package:vbvs_app/controller/home/home_controller.dart';
import 'package:vbvs_app/controller/login/login_controller.dart'; import 'package:vbvs_app/controller/login/login_controller.dart';
import 'package:vbvs_app/controller/message/message_controller.dart'; import 'package:vbvs_app/controller/message/message_controller.dart';
import 'package:vbvs_app/controller/time/countdown_controller.dart'; import 'package:vbvs_app/controller/time/countdown_controller.dart';
import 'package:vbvs_app/enum/APPPackageType.dart';
import 'package:vbvs_app/model/api_response.dart'; import 'package:vbvs_app/model/api_response.dart';
import 'package:vbvs_app/model/user_data.dart'; import 'package:vbvs_app/model/user_data.dart';
import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart'; import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart';
@@ -225,7 +227,11 @@ class UserInfoController extends GetControllerEx<UserInfoModel> {
} }
ApiResponse logOut() { ApiResponse logOut() {
int code = AppConstants().ent_type;
if (APPPackageType.MHT.code == code) {
MHTHomeController mhtHomeController = Get.find(); MHTHomeController mhtHomeController = Get.find();
mhtHomeController.personnelList.value = [];
}
ApiResponse apiResponse = ApiResponse(code: 1, msg: "退出成功".tr); ApiResponse apiResponse = ApiResponse(code: 1, msg: "退出成功".tr);
EasyDartModule.logger.info("退出登录"); EasyDartModule.logger.info("退出登录");
DailyLogUtils.writeLog("退出登录"); DailyLogUtils.writeLog("退出登录");
@@ -246,9 +252,9 @@ class UserInfoController extends GetControllerEx<UserInfoModel> {
messageController.model.system_message_read = 0; messageController.model.system_message_read = 0;
CountdownController countdownController = Get.find(); CountdownController countdownController = Get.find();
countdownController.countdown.value = 0; countdownController.countdown.value = 0;
mhtHomeController.personnelList.value = [];
return apiResponse; return apiResponse;
} }
ApiResponse deleteAccount() { ApiResponse deleteAccount() {
MHTHomeController mhtHomeController = Get.find(); MHTHomeController mhtHomeController = Get.find();
ApiResponse apiResponse = ApiResponse(code: 1, msg: "注销成功".tr); ApiResponse apiResponse = ApiResponse(code: 1, msg: "注销成功".tr);

View File

@@ -91,7 +91,7 @@ Future<void> main() async {
final Locale? deviceLocale = Get.deviceLocale; final Locale? deviceLocale = Get.deviceLocale;
print('系统语言: ${deviceLocale?.languageCode}'); print('系统语言: ${deviceLocale?.languageCode}');
await loadLanguageSetting(); await loadLanguageSetting(deviceLocale?.languageCode);
await initLanguageSetting(); await initLanguageSetting();
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
@@ -121,12 +121,37 @@ Future<void> main() async {
}); });
} }
loadLanguageSetting() async { // languageCode 系统默认语言码 en/zh
await ef.kvdb.openDir("mht"); loadLanguageSetting(String? languageCode) async {
String? language = await ef.kvdb.read("mht/language"); int code = AppConstants().ent_type;
String? language;
language ??= 'zh_CN'; if (APPPackageType.MHT.code == code) {
await AppLanguage().loadLanguage(language, project: APPPackageType.MHT.code); await ef.kvdb.openDir("mht");
language = await ef.kvdb.read("mht/language");
} else if (APPPackageType.TH.code == code) {
await ef.kvdb.openDir("th");
language = await ef.kvdb.read("th/language");
} else {
await ef.kvdb.openDir("th");
language = await ef.kvdb.read("th/language");
}
// 如果 kvdb 没有存储
if (language == null || language.isEmpty) {
if (languageCode == null || languageCode.isEmpty) {
language = 'en_US'; // 系统默认为空时用 en_US
} else {
language = (languageCode.toLowerCase() == 'zh') ? 'zh_CN' : 'en_US';
}
}
await AppLanguage().loadLanguage(
language,
project: (APPPackageType.MHT.code == code)
? APPPackageType.MHT.code
: APPPackageType.TH.code,
);
} }
void initwebService() { void initwebService() {

View File

@@ -1,5 +1,6 @@
import 'package:EasyDartModule/EasyDartModule.dart' as edm; import 'package:EasyDartModule/EasyDartModule.dart' as edm;
import 'package:ef/ef.dart'; import 'package:ef/ef.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutterflow_ui/flutterflow_ui.dart'; import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:fluwx/fluwx.dart'; import 'package:fluwx/fluwx.dart';
@@ -19,6 +20,8 @@ import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
import 'package:vbvs_app/controller/time/countdown_controller.dart'; import 'package:vbvs_app/controller/time/countdown_controller.dart';
import 'package:vbvs_app/controller/user_info_controller.dart'; import 'package:vbvs_app/controller/user_info_controller.dart';
import 'package:vbvs_app/model/api_response.dart'; import 'package:vbvs_app/model/api_response.dart';
import 'package:vbvs_app/pages/user/privacy_scheme_page.dart';
import 'package:vbvs_app/pages/user/user_scheme_page.dart';
class OtherLoginPage extends StatefulWidget { class OtherLoginPage extends StatefulWidget {
const OtherLoginPage({super.key}); const OtherLoginPage({super.key});
@@ -34,10 +37,32 @@ class _OtherLoginPageState extends State<OtherLoginPage> {
CountdownController countdownController = Get.find(); CountdownController countdownController = Get.find();
LoginController loginController = Get.find(); LoginController loginController = Get.find();
late TapGestureRecognizer _tapRecognizer2;
late TapGestureRecognizer _tapRecognizer4;
@override
void dispose() {
_tapRecognizer2.dispose();
_tapRecognizer4.dispose();
super.dispose();
}
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
super.initState(); _tapRecognizer2 = TapGestureRecognizer()
..onTap = () {
// 协议2点击事件逻辑
print('点击了协议2');
// Get.to(() => UserSchemePage());
Get.toNamed("/userSchemePage");
};
_tapRecognizer4 = TapGestureRecognizer()
..onTap = () {
// 协议4点击事件逻辑
print('点击了协议4');
Get.toNamed("/privacyPage");
};
super.initState(); super.initState();
LoginController loginController = Get.find(); LoginController loginController = Get.find();
Fluwx fluwx = loginController.fluwx; Fluwx fluwx = loginController.fluwx;
@@ -668,6 +693,86 @@ class _OtherLoginPageState extends State<OtherLoginPage> {
checkColor: Colors.white, checkColor: Colors.white,
), ),
)), )),
// Expanded(
// child: Padding(
// padding: EdgeInsetsDirectional.fromSTEB(
// 0.rpx, 10.rpx, 0.rpx, 0.rpx),
// child: Container(
// width: bodysize.maxWidth,
// constraints: BoxConstraints(
// minWidth: 500.rpx,
// minHeight: 90.rpx,
// ),
// child: RichText(
// text: TextSpan(
// children: [
// TextSpan(
// text: '登录页.协议1'.tr,
// style: TextStyle(
// fontFamily: 'Inter',
// letterSpacing: 0.0,
// fontSize: 20.rpx,
// color: themeController
// .currentColor.sc3,
// ),
// ),
// TextSpan(
// text: '登录页.协议2'.tr,
// style: TextStyle(
// fontFamily: 'Inter',
// letterSpacing: 0.0,
// fontSize: 20.rpx,
// color:
// stringToColor("#FF9F66"),
// ),
// ),
// TextSpan(
// text: '登录页.协议3'.tr,
// style: TextStyle(
// fontFamily: 'Inter',
// letterSpacing: 0.0,
// fontSize: 20.rpx,
// color: themeController
// .currentColor.sc3,
// ),
// ),
// TextSpan(
// text: '登录页.协议4'.tr,
// style: TextStyle(
// fontFamily: 'Inter',
// letterSpacing: 0.0,
// fontSize: 20.rpx,
// color:
// stringToColor("#FF9F66"),
// ),
// ),
// TextSpan(
// text: '登录页.协议5'.tr,
// style: TextStyle(
// fontFamily: 'Inter',
// letterSpacing: 0.0,
// fontSize: 20.rpx,
// color: themeController
// .currentColor.sc3,
// ),
// ),
// TextSpan(
// text: '登录页.协议6'.tr,
// style: TextStyle(
// fontFamily: 'Inter',
// letterSpacing: 0.0,
// fontSize: 20.rpx,
// color:
// stringToColor("#FF9F66"),
// ),
// ),
// ],
// ),
// ),
// ),
// ),
// ),
Expanded( Expanded(
child: Padding( child: Padding(
padding: EdgeInsetsDirectional.fromSTEB( padding: EdgeInsetsDirectional.fromSTEB(
@@ -700,6 +805,7 @@ class _OtherLoginPageState extends State<OtherLoginPage> {
color: color:
stringToColor("#FF9F66"), stringToColor("#FF9F66"),
), ),
recognizer: _tapRecognizer2,
), ),
TextSpan( TextSpan(
text: '登录页.协议3'.tr, text: '登录页.协议3'.tr,
@@ -720,27 +826,28 @@ class _OtherLoginPageState extends State<OtherLoginPage> {
color: color:
stringToColor("#FF9F66"), stringToColor("#FF9F66"),
), ),
recognizer: _tapRecognizer4,
), ),
TextSpan( // TextSpan(
text: '登录页.协议5'.tr, // text: '登录页.协议5'.tr,
style: TextStyle( // style: TextStyle(
fontFamily: 'Inter', // fontFamily: 'Inter',
letterSpacing: 0.0, // letterSpacing: 0.0,
fontSize: 20.rpx, // fontSize: 20.rpx,
color: themeController // color: themeController
.currentColor.sc3, // .currentColor.sc3,
), // ),
), // ),
TextSpan( // TextSpan(
text: '登录页.协议6'.tr, // text: '登录页.协议6'.tr,
style: TextStyle( // style: TextStyle(
fontFamily: 'Inter', // fontFamily: 'Inter',
letterSpacing: 0.0, // letterSpacing: 0.0,
fontSize: 20.rpx, // fontSize: 20.rpx,
color: // color:
stringToColor("#FF9F66"), // stringToColor("#FF9F66"),
), // ),
), // ),
], ],
), ),
), ),

View File

@@ -7,6 +7,7 @@ import 'package:vbvs_app/component/tool/ClickableContainer.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart'; import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/main_bottom/global_controller.dart'; import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
import 'package:vbvs_app/controller/user_info_controller.dart'; import 'package:vbvs_app/controller/user_info_controller.dart';
import 'package:vbvs_app/enum/LoginStatus.dart';
class EPage extends StatefulWidget { class EPage extends StatefulWidget {
const EPage({super.key}); const EPage({super.key});
@@ -69,7 +70,17 @@ class _EPageState extends State<EPage> {
highlightColor: Colors.transparent, highlightColor: Colors.transparent,
padding: EdgeInsets.all(0.rpx), padding: EdgeInsets.all(0.rpx),
onTap: () { onTap: () {
UserInfoController userInfoController = Get.find();
bool isLoggedIn =
userInfoController.model.login == LoginStatus.LOGIN.code;
if (!isLoggedIn) {
TopSlideNotification.show(context,
text: "必须登录提示".tr,
textColor: themeController.currentColor.sc9);
Get.toNamed("/otherLoginPage");
} else {
TopSlideNotification.show(context, text: "待开发功能".tr); TopSlideNotification.show(context, text: "待开发功能".tr);
}
}, },
child: Container( child: Container(
// child: widget.webView, // child: widget.webView,

View File

@@ -995,16 +995,14 @@ class _HomePageState extends State<HomePage> {
} }
return Expanded( return Expanded(
child: SingleChildScrollView(child: child: SingleChildScrollView(
Column( child: Column(
children: [ children: [
SizedBox(height: 26.rpx), // 第一个上方间距 SizedBox(height: 26.rpx), // 第一个上方间距
...List.generate(deviceList.length, (i) { ...List.generate(deviceList.length, (i) {
String mac = macList[i]; String mac = macList[i];
List<dynamic> dailyDataList = List<dynamic> dailyDataList = reportData[mac]!;
reportData[mac]!; Map? targetDevice = deviceList.firstWhereOrNull(
Map? targetDevice =
deviceList.firstWhereOrNull(
(device) => device['mac'] == mac, (device) => device['mac'] == mac,
); );
List stateModule = []; List stateModule = [];
@@ -1020,11 +1018,9 @@ class _HomePageState extends State<HomePage> {
targetDevice: targetDevice!, targetDevice: targetDevice!,
sleepDateWidgets: List.generate( sleepDateWidgets: List.generate(
dailyDataList.length, (j) { dailyDataList.length, (j) {
var dayData = dailyDataList[j]; var dayData = dailyDataList[j];
DateTime date = DateTime DateTime date =
.fromMillisecondsSinceEpoch( DateTime.fromMillisecondsSinceEpoch(
dayData['time'] is String dayData['time'] is String
? int.parse(dayData['time']) ? int.parse(dayData['time'])
: dayData['time'], : dayData['time'],
@@ -1059,8 +1055,7 @@ class _HomePageState extends State<HomePage> {
stateModule[j]['time'] = stateModule[j]['time'] =
currentTime; currentTime;
stateModule[j]['mac'] = goalMac; stateModule[j]['mac'] = goalMac;
stateModule[j]['person'] = stateModule[j]['person'] = person;
person;
return SleepDataModuleWidget( return SleepDataModuleWidget(
data: stateModule[j]); data: stateModule[j]);
}) })
@@ -1073,8 +1068,7 @@ class _HomePageState extends State<HomePage> {
); );
}), }),
], ],
) )),
),
); );
}), }),
], ],

View File

@@ -141,7 +141,8 @@ class MainPageBottomChange extends GetView<MainPageController> {
bool isLoggedIn = userInfoController.model.login == bool isLoggedIn = userInfoController.model.login ==
LoginStatus.LOGIN.code; LoginStatus.LOGIN.code;
if ((index == 1 || index == 2) && !isLoggedIn) { // if ((index == 1 || index == 2) && !isLoggedIn) {
if ((index == 2) && !isLoggedIn) {
TopSlideNotification.show( TopSlideNotification.show(
context, context,
text: "必须登录提示".tr, text: "必须登录提示".tr,

View File

@@ -6,7 +6,6 @@ import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/tool/ClickableContainer.dart'; import 'package:vbvs_app/component/tool/ClickableContainer.dart';
import 'package:vbvs_app/component/tool/CustomCard.dart'; import 'package:vbvs_app/component/tool/CustomCard.dart';
import 'package:vbvs_app/controller/mh_controller/mh_language_controller.dart';
import 'package:vbvs_app/controller/setting/language/language_controller.dart'; import 'package:vbvs_app/controller/setting/language/language_controller.dart';
import 'package:vbvs_app/language/AppLanguage.dart'; import 'package:vbvs_app/language/AppLanguage.dart';
import 'package:vbvs_app/pages/device_bind/componnet/FancyCircleCheckbox.dart'; import 'package:vbvs_app/pages/device_bind/componnet/FancyCircleCheckbox.dart';
@@ -19,7 +18,7 @@ class LanguageSetting extends StatefulWidget {
} }
class _LanguageSettingState extends State<LanguageSetting> { class _LanguageSettingState extends State<LanguageSetting> {
MHLanguageController languageController = Get.find(); LanguageController languageController = Get.find();
@override @override
void initState() { void initState() {
// languageController.initLanuageList(); // languageController.initLanuageList();
@@ -129,6 +128,15 @@ class _LanguageSettingState extends State<LanguageSetting> {
.language_code); // 加载语言 .language_code); // 加载语言
languageController languageController
.updateAll(); // 更新操作 .updateAll(); // 更新操作
try {
// ef.kv.set("language",
// language.language_code);
await ef.kvdb.write(
"th/language",
language.language_code);
} catch (e) {
print(e);
}
}, },
child: Row( child: Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,

View File

@@ -57,7 +57,7 @@ var routes = {
// "/loginPage": (contxt) => LoginPage(), // "/loginPage": (contxt) => LoginPage(),
// "/otherLoginPage": (contxt) => OtherLoginPage(), // "/otherLoginPage": (contxt) => OtherLoginPage(),
"/loginPage": (contxt) => OtherLoginPage(), "/loginPage": (contxt) => OtherLoginPage(),
// "/otherLoginPage": (contxt) => OtherLoginPage(), "/otherLoginPage": (contxt) => OtherLoginPage(),
"/deviceType": (contxt, {arguments}) => DeviceTypePage(), "/deviceType": (contxt, {arguments}) => DeviceTypePage(),
"/blueteethDevice": (contxt) => BlueteethDevicePage(), "/blueteethDevice": (contxt) => BlueteethDevicePage(),
"/personPage": (contxt) => PersonPage(), "/personPage": (contxt) => PersonPage(),
@@ -119,7 +119,9 @@ var onGenerateRoute = (RouteSettings settings) {
// 如果用户未登录且访问的不是登录页面等,展示提示并重定向 // 如果用户未登录且访问的不是登录页面等,展示提示并重定向
if (settings.name != "/loginPage" && if (settings.name != "/loginPage" &&
settings.name != "/otherLoginPage" && settings.name != "/otherLoginPage" &&
settings.name != "/mianPageBottomChange") { settings.name != "/mianPageBottomChange" &&
settings.name != "/userSchemePage" &&
settings.name != "/privacyPage") {
TopSlideNotification.show( TopSlideNotification.show(
Get.context!, Get.context!,
text: "必须登录提示".tr, text: "必须登录提示".tr,