更新控制页多语言

This commit is contained in:
wyf
2025-08-08 10:22:51 +08:00
parent 88a03a361c
commit 48d8645fd9
15 changed files with 51 additions and 29 deletions

View File

@@ -1,3 +1,3 @@
[ [
"assets/miniapp/mhtControl_1.0.49.zip" "assets/miniapp/mhtControl_1.0.54.zip"
] ]

View File

@@ -546,8 +546,8 @@
"正在打开微信客服...": "Opening WeChat Support...", "正在打开微信客服...": "Opening WeChat Support...",
"起床时间:": "Wake Up:", "起床时间:": "Wake Up:",
"入睡时间:": "Sleep Time", "入睡时间:": "Sleep Time",
"入睡时间": "Sleep Onset Time", "入睡时间": "Sleep Time",
"起床时间": "起床时间", "起床时间": "Wake Time",
"次": "Times", "次": "Times",
"次/分": "times/min", "次/分": "times/min",
"毫秒": "ms", "毫秒": "ms",
@@ -597,5 +597,6 @@
"去查看": "View now", "去查看": "View now",
"正常值": "range:", "正常值": "range:",
"绑定设备": "Bind Device", "绑定设备": "Bind Device",
"设备分享提醒": "Device Sharing Alert","生命体征":"Vital signs" "设备分享提醒": "Device Sharing Alert","生命体征":"Vital signs",
"无报告":"none"
} }

View File

@@ -593,5 +593,6 @@
"该设备的历史数据将被清除": "该设备的历史数据将被清除","有一条新的设备分享消息":"有一条新的设备分享消息","去查看":"去查看", "该设备的历史数据将被清除": "该设备的历史数据将被清除","有一条新的设备分享消息":"有一条新的设备分享消息","去查看":"去查看",
"正常值":"正常值:", "正常值":"正常值:",
"绑定设备":"绑定设备", "绑定设备":"绑定设备",
"设备分享提醒":"设备分享提醒","生命体征":"生命体征" "设备分享提醒":"设备分享提醒","生命体征":"生命体征",
"无报告":"无报告"
} }

View File

@@ -596,5 +596,6 @@
"正常值": "正常值:", "正常值": "正常值:",
"绑定设备": "绑定设备", "绑定设备": "绑定设备",
"设备分享提醒": "設備分享提醒", "设备分享提醒": "設備分享提醒",
"生命体征": "生命體徵" "生命体征": "生命體徵",
"无报告":"无报告"
} }

View File

@@ -34,7 +34,7 @@ class _SleepCalendarWidgetState extends State<SleepCalendarWidget> {
CalendarController calendarController = Get.find(); CalendarController calendarController = Get.find();
RxMap sleepDate = <dynamic, dynamic>{}.obs; RxMap sleepDate = <dynamic, dynamic>{}.obs;
RxList showLabel = <dynamic>[ RxList showLabel = <dynamic>[
{"level": 5, "name": "无报告", "color": "#9E9E9E"} {"level": 5, "name": "无报告".tr, "color": "#9E9E9E"}
].obs; ].obs;
// @override // @override
// void initState() { // void initState() {
@@ -149,7 +149,7 @@ class _SleepCalendarWidgetState extends State<SleepCalendarWidget> {
), ),
), ),
Obx(() => Text( Obx(() => Text(
'${calendarController.displayedMonth.value.year}${calendarController.displayedMonth.value.month}', '${calendarController.displayedMonth.value.year}/${calendarController.displayedMonth.value.month}',
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 30.rpx, fontSize: 30.rpx,

View File

@@ -19,9 +19,7 @@ import 'package:vbvs_app/common/util/CheckNetwork.dart';
import 'package:vbvs_app/common/util/CommonVariables.dart'; import 'package:vbvs_app/common/util/CommonVariables.dart';
import 'package:vbvs_app/common/util/Dio.dart'; import 'package:vbvs_app/common/util/Dio.dart';
import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/common/util/requestWithLog.dart'; import 'package:vbvs_app/common/util/requestWithLog.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/date/CalendarController.dart'; import 'package:vbvs_app/controller/date/CalendarController.dart';
import 'package:vbvs_app/controller/device/blueteeth_bind_controller.dart'; import 'package:vbvs_app/controller/device/blueteeth_bind_controller.dart';
import 'package:vbvs_app/controller/device/body_device_controller.dart'; import 'package:vbvs_app/controller/device/body_device_controller.dart';

View File

@@ -5,6 +5,7 @@ import 'package:ef/ef.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:vbvs_app/common/util/CommonVariables.dart'; import 'package:vbvs_app/common/util/CommonVariables.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/NullDataComponentWidget.dart'; import 'package:vbvs_app/component/NullDataComponentWidget.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.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/mh_controller/mh_language_controller.dart';
@@ -195,6 +196,9 @@ class _HomePageState extends State<MainPageBBottomChange>
UserInfoController userInfoController = Get.find(); UserInfoController userInfoController = Get.find();
WebviewTestController webviewTestController = Get.find(); WebviewTestController webviewTestController = Get.find();
if (index == 2) { if (index == 2) {
WebviewTestController webviewTestController = Get.find();
webviewTestController.web.jsbridge?.dart
.switchLanguage(mhLanguageController.selectLanguage.value!.language_code);
await webviewTestController.web.jsbridge?.dart.pageActive(true); await webviewTestController.web.jsbridge?.dart.pageActive(true);
//激活websocket //激活websocket
edm.EasyDartModule.websocket.sendData(jsonEncode(WebSocketMessage( edm.EasyDartModule.websocket.sendData(jsonEncode(WebSocketMessage(

View File

@@ -12,6 +12,7 @@ import 'package:vbvs_app/enum/APPPackageType.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';
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';
import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart';
class LanguagePage extends StatefulWidget { class LanguagePage extends StatefulWidget {
const LanguagePage({super.key}); const LanguagePage({super.key});
@@ -33,7 +34,6 @@ class _LanguagePageState extends State<LanguagePage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return LayoutBuilder( return LayoutBuilder(
builder: (context, bodySize) => GestureDetector( builder: (context, bodySize) => GestureDetector(
// onTap: () => FocusScope.of(context).unfocus(),,
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
image: DecorationImage( image: DecorationImage(
@@ -147,8 +147,17 @@ class _LanguagePageState extends State<LanguagePage> {
try { try {
// ef.kv.set("language", // ef.kv.set("language",
// language.language_code); // language.language_code);
ef.kvdb.write("mht/language", await ef.kvdb.write(
"mht/language",
language.language_code); language.language_code);
//todo 通知语言
WebviewTestController
webviewTestController =
Get.find();
webviewTestController
.web.jsbridge?.dart
.switchLanguage(language
.language_code);
} catch (e) { } catch (e) {
print(e); print(e);
} }
@@ -192,7 +201,6 @@ class _LanguagePageState extends State<LanguagePage> {
lang.selected = (lang == lang.selected = (lang ==
language); // 根据选择更新状态 language); // 根据选择更新状态
} }
await AppLanguage().loadLanguage( await AppLanguage().loadLanguage(
language language
.language_code, .language_code,
@@ -222,6 +230,15 @@ class _LanguagePageState extends State<LanguagePage> {
"mht/language", "mht/language",
language language
.language_code); .language_code);
//todo 通知语言
WebviewTestController
webviewTestController =
Get.find();
webviewTestController
.web.jsbridge?.dart
.switchLanguage(language
.language_code);
} catch (e) { } catch (e) {
print(e); print(e);
} }
@@ -239,15 +256,6 @@ class _LanguagePageState extends State<LanguagePage> {
); );
}), }),
), ),
// ClickableContainer(
// backgroundColor: Colors.transparent, // 容器背景色
// highlightColor: themeController
// .currentColor.sc21, // 点击时的背景色
// padding: EdgeInsetsDirectional.fromSTEB(
// 40.rpx, 0.rpx, 40.rpx, 0.rpx),
// onTap: () {},
// child: Container(),
// ),
] ]
.divide(SizedBox(height: 0.rpx)) .divide(SizedBox(height: 0.rpx))
.addToStart(SizedBox(height: 30.rpx)) .addToStart(SizedBox(height: 30.rpx))

View File

@@ -278,8 +278,8 @@ class _BluetoothPageState extends State<BluetoothPage> {
"/mhtWifiAfterPage", "/mhtWifiAfterPage",
arguments: obsData, arguments: obsData,
), ),
// _buildMenuButton( _buildMenuButton(
// context, '睡眠习惯', "/sleepHabitPage"), context, '睡眠习惯', "/sleepHabitPage"),
_buildMenuButton( _buildMenuButton(
context, '分享设备'.tr, "/deviceSharePage", context, '分享设备'.tr, "/deviceSharePage",
arguments: obsData), arguments: obsData),
@@ -447,10 +447,11 @@ class _BluetoothPageState extends State<BluetoothPage> {
onTap(); // 自定义点击逻辑优先执行 onTap(); // 自定义点击逻辑优先执行
} else if (path?.isNotEmpty == true) { } else if (path?.isNotEmpty == true) {
if (path == "/sleepHabitPage") { if (path == "/sleepHabitPage") {
Get.back();
WebviewTestController webviewTestController = Get.find(); WebviewTestController webviewTestController = Get.find();
webviewTestController.web.jsbridge?.dart.toSleepHabit(); webviewTestController.web.jsbridge?.dart.toSleepHabit();
return; return;
} }
final result = await Get.toNamed(path!, arguments: arguments); final result = await Get.toNamed(path!, arguments: arguments);
if (result != null && onResult != null) { if (result != null && onResult != null) {
onResult(result); // ✅ 有回调就处理返回值 onResult(result); // ✅ 有回调就处理返回值

View File

@@ -151,7 +151,8 @@ class DeviceInfoWidget extends GetView {
try { try {
WebviewTestController webviewTestController = WebviewTestController webviewTestController =
Get.find(); Get.find();
webviewTestController.web.jsbridge?.dart
.switchLanguage(mhLanguageController.selectLanguage.value!.language_code);
webviewTestController.web.jsbridge?.dart webviewTestController.web.jsbridge?.dart
.pageActive(false); .pageActive(false);
// await Future.delayed(Duration(seconds: 1)); // await Future.delayed(Duration(seconds: 1));

View File

@@ -4,6 +4,7 @@ import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:vbvs_app/common/color/appConstants.dart'; import 'package:vbvs_app/common/color/appConstants.dart';
import 'package:vbvs_app/common/util/DailyLogUtils.dart'; import 'package:vbvs_app/common/util/DailyLogUtils.dart';
import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/tool/CustomCard.dart'; import 'package:vbvs_app/component/tool/CustomCard.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart'; import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart'; import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart';
@@ -85,7 +86,11 @@ class _HomeDeviceStausWidgetState extends State<HomeDeviceStausWidget> {
onTap: () async { onTap: () async {
try { try {
var device = widget.deviceStatus; var device = widget.deviceStatus;
WebviewTestController webviewTestController = Get.find(); WebviewTestController webviewTestController = Get.find();
webviewTestController.web.jsbridge?.dart.switchLanguage(
mhLanguageController
.selectLanguage.value!.language_code);
webviewTestController.web.jsbridge?.dart webviewTestController.web.jsbridge?.dart
.pageActive(false); .pageActive(false);
await Future.delayed(Duration(seconds: 1)); await Future.delayed(Duration(seconds: 1));

View File

@@ -98,7 +98,7 @@ class _SnoreViewWidgetWidgetState extends State<BreathePauseNewWidget> {
Container( Container(
child: Text( child: Text(
// "呼吸暂停监测介绍。", // "呼吸暂停监测介绍。",
"呼吸暂停监测是指用户在睡眠过程中产生的呼吸暂停的图表说明。", "呼吸暂停监测是指用户在睡眠过程中产生的呼吸暂停的图表说明。".tr,
style: TextStyle( style: TextStyle(
fontSize: 26.rpx, fontSize: 26.rpx,
color: Colors.black, color: Colors.black,

View File

@@ -128,7 +128,7 @@ class _SnoreViewWidgetWidgetState extends State<SnoreViewWidgetWidget> {
Container( Container(
child: Text( child: Text(
// "打鼾监测介绍。", // "打鼾监测介绍。",
"打鼾监测是指用户在睡眠过程中打鼾频次的图表说明。", "打鼾监测是指用户在睡眠过程中打鼾频次的图表说明。".tr,
style: TextStyle( style: TextStyle(
fontSize: 26.rpx, fontSize: 26.rpx,
color: Colors.black, color: Colors.black,

View File

@@ -88,6 +88,7 @@ dev_dependencies:
flutter_lints: ^4.0.0 flutter_lints: ^4.0.0
build_runner: ^2.4.6 build_runner: ^2.4.6
json_serializable: ^6.8.0 json_serializable: ^6.8.0
dependency_overrides: dependency_overrides:
http_parser: ^4.1.0 http_parser: ^4.1.0
@@ -98,6 +99,7 @@ dependency_overrides:
geolocator_android: 4.4.1 geolocator_android: 4.4.1
geocoding: 4.0.0 geocoding: 4.0.0
fluwx: 5.5.2 fluwx: 5.5.2
font_awesome_flutter: 10.5.0
flutter: flutter:
uses-material-design: true uses-material-design: true