多语言

This commit is contained in:
czz
2025-07-30 16:48:48 +08:00
parent 92b6896176
commit 300e3b31f6
96 changed files with 3741 additions and 2710 deletions

View File

@@ -7,6 +7,7 @@ import 'package:flutter/services.dart';
import 'package:vbvs_app/common/util/CommonVariables.dart';
import 'package:vbvs_app/component/NullDataComponentWidget.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/WebSocketMessage.dart';
import 'package:vbvs_app/pages/common/bezier_bottom_navigation_bar.dart';
@@ -17,14 +18,35 @@ import 'package:vbvs_app/pages/mh_page/new_mine_page.dart';
import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart';
import 'package:EasyDartModule/EasyDartModule.dart' as edm;
// class MainPageBBottomChange extends StatefulWidget {
// // 全局 key用于静态访问 _HomePageState
// static final GlobalKey<_HomePageState> globalKey =
// GlobalKey<_HomePageState>();
// MainPageBBottomChange({Key? key}) : super(key: globalKey);
// // 静态方法:外部调用,跳转 tab
// static void jumpTo(int index) {
// final state = globalKey.currentState;
// if (state != null) {
// state.switchTab(index);
// }
// }
// static int? getCurrentIndex() {
// final state = globalKey.currentState;
// return state?.selectedIndex;
// }
// @override
// _HomePageState createState() => _HomePageState();
// }
class MainPageBBottomChange extends StatefulWidget {
// 全局 key用于静态访问 _HomePageState
static final GlobalKey<_HomePageState> globalKey =
GlobalKey<_HomePageState>();
final GlobalKey<_HomePageState>? externalKey;
MainPageBBottomChange({Key? key}) : super(key: globalKey);
MainPageBBottomChange({Key? key, this.externalKey})
: super(key: key ?? externalKey);
// 静态方法:外部调用,跳转 tab
static void jumpTo(int index) {
final state = globalKey.currentState;
if (state != null) {
@@ -37,6 +59,9 @@ class MainPageBBottomChange extends StatefulWidget {
return state?.selectedIndex;
}
static final GlobalKey<_HomePageState> globalKey =
GlobalKey<_HomePageState>();
@override
_HomePageState createState() => _HomePageState();
}
@@ -47,8 +72,8 @@ class _HomePageState extends State<MainPageBBottomChange>
late AnimationController _controller;
late Animation<double> _positionAnimation;
double currentPosition = 0.0;
final List<String> titles = ['首页', '报告', '控制', '我的'];
MHLanguageController languageController = Get.find();
List<String> get titles => ['首页', '报告', '控制', '我的'];
final List<String> path = [
"assets/images/bar_home.svg",
"assets/images/bar_heart.svg",
@@ -113,11 +138,15 @@ class _HomePageState extends State<MainPageBBottomChange>
DateTime? _lastBackPressedTime; // 记录上一次返回的时间
@override
Widget build(BuildContext context) {
return PopScope(
return Obx(() {
final currentLanguage =
languageController.selectLanguage.value; // 监听此变量变化
return PopScope(
canPop: false,
onPopInvokedWithResult: (disposition, result) async {
if (Platform.isAndroid) {
var flag = await _handleBackPressed(context); // 自定义返回逻辑
var flag = await _handleBackPressed(context);
if (flag) {
SystemNavigator.pop();
}
@@ -134,9 +163,13 @@ class _HomePageState extends State<MainPageBBottomChange>
animatedPosition: _positionAnimation.value,
onTap: _onTabTapped,
path: path,
titles: titles,
titles: titles
.map((title) => title.tr) // 这里依赖 .tr 会自动根据 Get.locale 变化刷新
.toList(),
),
));
),
);
});
}
void switchTab(int index) {
@@ -226,7 +259,7 @@ class _HomePageState extends State<MainPageBBottomChange>
//如果当前没有连接该设备,则返回
return;
}
if (webviewTestController.selectDevice['blueToothStatus']!=2) {
if (webviewTestController.selectDevice['blueToothStatus'] != 2) {
return;
}
edm.EasyDartModule.websocket.sendData(jsonEncode(WebSocketMessage(

View File

@@ -994,86 +994,9 @@ class _HomePageState extends State<HomePage> {
);
}
// return Expanded(
// child: SingleChildScrollView(
// child: Column(
// children: List.generate(
// deviceList.length,
// (i) {
// String mac = macList[i];
// List<dynamic> dailyDataList =
// reportData[mac]!;
// Map? targetDevice =
// deviceList.firstWhereOrNull(
// (device) => device['mac'] == mac,
// );
// List stateModule = [];
// String currentTime = "";
// String goalMac = targetDevice?['mac'];
// var person = targetDevice?['person'];
// return DynamicReportDetailWidget(
// key: ValueKey(
// '${targetDevice!['mac']}_${homeController.model.type}'), // 添加唯一key
// targetDevice: targetDevice!,
// sleepDateWidgets: List.generate(
// dailyDataList.length,
// (j) {
// var dayData = dailyDataList[j];
// DateTime date =
// DateTime.fromMillisecondsSinceEpoch(
// dayData['time'] is String
// ? int.parse(dayData['time'])
// : dayData['time'],
// );
// if (dayData['selected'] != null &&
// dayData['selected'] == true &&
// dayData['state'] != null) {
// stateModule = dayData['state'];
// currentTime = dayData['time'];
// }
// return SleepDateWidget(
// mac: mac,
// time: dayData['time'],
// date: date,
// score: dayData['score']?['socre']
// ?.toString() ??
// '',
// comment: dayData['score']?['name'],
// textColor: dayData['score']
// ?['color'] ==
// null
// ? null
// : stringToColor(
// dayData['score']?['color']),
// isSelected: dayData['selected'],
// );
// },
// ),
// sleepDataModuleWidgets: stateModule
// .isNotEmpty
// ? List.generate(
// stateModule.length,
// (j) {
// stateModule[j]['onto'] = true;
// stateModule[j]['time'] =
// currentTime;
// stateModule[j]['mac'] = goalMac;
// stateModule[j]['person'] = person;
// return SleepDataModuleWidget(
// data: stateModule[j],
// );
// },
// )
// : [],
// );
// },
// ),
// ),
// ),
// );
return Expanded(
child: SingleChildScrollView(
child: Column(
child: SingleChildScrollView(child:
Column(
children: [
SizedBox(height: 26.rpx), // 第一个上方间距
...List.generate(deviceList.length, (i) {
@@ -1097,6 +1020,8 @@ class _HomePageState extends State<HomePage> {
targetDevice: targetDevice!,
sleepDateWidgets: List.generate(
dailyDataList.length, (j) {
var dayData = dailyDataList[j];
DateTime date = DateTime
.fromMillisecondsSinceEpoch(
@@ -1148,7 +1073,7 @@ class _HomePageState extends State<HomePage> {
);
}),
],
),
)
),
);
}),