更新默认本地语言
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
class ServiceConstant {
|
||||
// static const String baseHost = "zhmht.swes.com.cn:27021"; //服务地址 眠花糖测试地址
|
||||
static const String baseHost = "zhmht.swes.com.cn:27020"; //服务地址 眠花糖正式地址
|
||||
// static const String baseHost = "vsbs-test.he-info.cn"; //服务地址 本地测试地址
|
||||
// static const String baseHost = "zhmht.swes.com.cn:27020"; //服务地址 眠花糖正式地址
|
||||
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 const String service_address = "https://$baseHost";
|
||||
static const String service_address = "http://$baseHost";
|
||||
// static const String service_address = "https://$baseHost";
|
||||
|
||||
static String server_service = "/vsbs_app_server"; //服务名称
|
||||
|
||||
|
||||
@@ -17,42 +17,6 @@ class SleepdateWidget extends StatelessWidget {
|
||||
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
|
||||
Widget build(BuildContext context) {
|
||||
Color? fillColor;
|
||||
|
||||
@@ -6,7 +6,6 @@ import 'package:ef/ef.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:vbvs_app/common/color/ServiceConstant.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/model/api_response.dart';
|
||||
|
||||
@@ -40,7 +39,7 @@ class DeviceTypeController extends GetControllerEx<DeviceTypeModel> {
|
||||
attr = GetModel(DeviceTypeModel()).obs;
|
||||
}
|
||||
RxList deviceTypeList = [].obs;
|
||||
MHLanguageController languageController = Get.find();
|
||||
LanguageController languageController = Get.find();
|
||||
|
||||
Future<ApiResponse> getDeviceType() async {
|
||||
ApiResponse apiResponse = ApiResponse(code: -1, msg: "请求失败".tr);
|
||||
|
||||
@@ -181,6 +181,10 @@ class MessageController extends GetControllerEx<MessageModel> {
|
||||
queryUrl += "?lang=$language";
|
||||
}
|
||||
}
|
||||
if (type != null) {
|
||||
queryUrl = "$queryUrl&type=$type";
|
||||
}
|
||||
queryUrl = "$queryUrl&mid=ALL";
|
||||
var response = await EasyDartModule.dio.post(queryUrl);
|
||||
|
||||
if (response != null) {
|
||||
|
||||
@@ -5,6 +5,8 @@ import 'package:ef/ef.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
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';
|
||||
|
||||
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);
|
||||
|
||||
// 筛选出 langs 目录下的 .json 文件
|
||||
final langFiles = manifestMap.keys
|
||||
.where((String key) =>
|
||||
key.startsWith('assets/mhlangs/') && key.endsWith('.json'))
|
||||
.toList();
|
||||
|
||||
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) =>
|
||||
key.startsWith('assets/mhlangs/') && key.endsWith('.json'))
|
||||
.toList();
|
||||
} else {
|
||||
langFiles = manifestMap.keys
|
||||
.where((String key) =>
|
||||
key.startsWith('assets/langs/') && key.endsWith('.json'))
|
||||
.toList();
|
||||
}
|
||||
|
||||
// 2. 遍历所有语言文件
|
||||
for (final filePath in langFiles) {
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:get_storage/get_storage.dart';
|
||||
import 'package:img_picker/img_picker.dart';
|
||||
import 'package:json_annotation/json_annotation.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/util/DailyLogUtils.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/message/message_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/user_data.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() {
|
||||
MHTHomeController mhtHomeController = Get.find();
|
||||
int code = AppConstants().ent_type;
|
||||
if (APPPackageType.MHT.code == code) {
|
||||
MHTHomeController mhtHomeController = Get.find();
|
||||
mhtHomeController.personnelList.value = [];
|
||||
}
|
||||
ApiResponse apiResponse = ApiResponse(code: 1, msg: "退出成功".tr);
|
||||
EasyDartModule.logger.info("退出登录");
|
||||
DailyLogUtils.writeLog("退出登录");
|
||||
@@ -246,10 +252,10 @@ class UserInfoController extends GetControllerEx<UserInfoModel> {
|
||||
messageController.model.system_message_read = 0;
|
||||
CountdownController countdownController = Get.find();
|
||||
countdownController.countdown.value = 0;
|
||||
mhtHomeController.personnelList.value = [];
|
||||
return apiResponse;
|
||||
}
|
||||
ApiResponse deleteAccount() {
|
||||
|
||||
ApiResponse deleteAccount() {
|
||||
MHTHomeController mhtHomeController = Get.find();
|
||||
ApiResponse apiResponse = ApiResponse(code: 1, msg: "注销成功".tr);
|
||||
EasyDartModule.logger.info("注销账号");
|
||||
@@ -273,7 +279,7 @@ class UserInfoController extends GetControllerEx<UserInfoModel> {
|
||||
CountdownController countdownController = Get.find();
|
||||
countdownController.countdown.value = 0;
|
||||
mhtHomeController.personnelList.value = [];
|
||||
|
||||
|
||||
return apiResponse;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ Future<void> main() async {
|
||||
final Locale? deviceLocale = Get.deviceLocale;
|
||||
print('系统语言: ${deviceLocale?.languageCode}');
|
||||
|
||||
await loadLanguageSetting();
|
||||
await loadLanguageSetting(deviceLocale?.languageCode);
|
||||
await initLanguageSetting();
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
@@ -121,12 +121,37 @@ Future<void> main() async {
|
||||
});
|
||||
}
|
||||
|
||||
loadLanguageSetting() async {
|
||||
await ef.kvdb.openDir("mht");
|
||||
String? language = await ef.kvdb.read("mht/language");
|
||||
// languageCode 系统默认语言码 en/zh
|
||||
loadLanguageSetting(String? languageCode) async {
|
||||
int code = AppConstants().ent_type;
|
||||
String? language;
|
||||
|
||||
language ??= 'zh_CN';
|
||||
await AppLanguage().loadLanguage(language, project: APPPackageType.MHT.code);
|
||||
if (APPPackageType.MHT.code == 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() {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:EasyDartModule/EasyDartModule.dart' as edm;
|
||||
import 'package:ef/ef.dart';
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutterflow_ui/flutterflow_ui.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/user_info_controller.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 {
|
||||
const OtherLoginPage({super.key});
|
||||
@@ -34,10 +37,32 @@ class _OtherLoginPageState extends State<OtherLoginPage> {
|
||||
CountdownController countdownController = Get.find();
|
||||
LoginController loginController = Get.find();
|
||||
|
||||
late TapGestureRecognizer _tapRecognizer2;
|
||||
late TapGestureRecognizer _tapRecognizer4;
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_tapRecognizer2.dispose();
|
||||
_tapRecognizer4.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
void 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();
|
||||
LoginController loginController = Get.find();
|
||||
Fluwx fluwx = loginController.fluwx;
|
||||
@@ -668,6 +693,86 @@ class _OtherLoginPageState extends State<OtherLoginPage> {
|
||||
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(
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
@@ -700,6 +805,7 @@ class _OtherLoginPageState extends State<OtherLoginPage> {
|
||||
color:
|
||||
stringToColor("#FF9F66"),
|
||||
),
|
||||
recognizer: _tapRecognizer2,
|
||||
),
|
||||
TextSpan(
|
||||
text: '登录页.协议3'.tr,
|
||||
@@ -720,27 +826,28 @@ class _OtherLoginPageState extends State<OtherLoginPage> {
|
||||
color:
|
||||
stringToColor("#FF9F66"),
|
||||
),
|
||||
recognizer: _tapRecognizer4,
|
||||
),
|
||||
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"),
|
||||
),
|
||||
),
|
||||
// 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"),
|
||||
// ),
|
||||
// ),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@@ -7,6 +7,7 @@ import 'package:vbvs_app/component/tool/ClickableContainer.dart';
|
||||
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
|
||||
import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
|
||||
import 'package:vbvs_app/controller/user_info_controller.dart';
|
||||
import 'package:vbvs_app/enum/LoginStatus.dart';
|
||||
|
||||
class EPage extends StatefulWidget {
|
||||
const EPage({super.key});
|
||||
@@ -69,7 +70,17 @@ class _EPageState extends State<EPage> {
|
||||
highlightColor: Colors.transparent,
|
||||
padding: EdgeInsets.all(0.rpx),
|
||||
onTap: () {
|
||||
TopSlideNotification.show(context, text: "待开发功能".tr);
|
||||
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);
|
||||
}
|
||||
},
|
||||
child: Container(
|
||||
// child: widget.webView,
|
||||
|
||||
@@ -995,86 +995,80 @@ class _HomePageState extends State<HomePage> {
|
||||
}
|
||||
|
||||
return Expanded(
|
||||
child: SingleChildScrollView(child:
|
||||
Column(
|
||||
children: [
|
||||
SizedBox(height: 26.rpx), // 第一个上方间距
|
||||
...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'];
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
SizedBox(height: 26.rpx), // 第一个上方间距
|
||||
...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 Column(
|
||||
children: [
|
||||
DynamicReportDetailWidget(
|
||||
key: ValueKey(
|
||||
'${targetDevice!['mac']}_${homeController.model.type}'),
|
||||
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'] == 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]);
|
||||
})
|
||||
: [],
|
||||
),
|
||||
SizedBox(
|
||||
height:
|
||||
26.rpx), // 每个 widget 下方间距(包括最后一个)
|
||||
],
|
||||
);
|
||||
}),
|
||||
],
|
||||
)
|
||||
),
|
||||
return Column(
|
||||
children: [
|
||||
DynamicReportDetailWidget(
|
||||
key: ValueKey(
|
||||
'${targetDevice!['mac']}_${homeController.model.type}'),
|
||||
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'] == 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]);
|
||||
})
|
||||
: [],
|
||||
),
|
||||
SizedBox(
|
||||
height:
|
||||
26.rpx), // 每个 widget 下方间距(包括最后一个)
|
||||
],
|
||||
);
|
||||
}),
|
||||
],
|
||||
)),
|
||||
);
|
||||
}),
|
||||
],
|
||||
|
||||
@@ -141,7 +141,8 @@ class MainPageBottomChange extends GetView<MainPageController> {
|
||||
bool isLoggedIn = userInfoController.model.login ==
|
||||
LoginStatus.LOGIN.code;
|
||||
|
||||
if ((index == 1 || index == 2) && !isLoggedIn) {
|
||||
// if ((index == 1 || index == 2) && !isLoggedIn) {
|
||||
if ((index == 2) && !isLoggedIn) {
|
||||
TopSlideNotification.show(
|
||||
context,
|
||||
text: "必须登录提示".tr,
|
||||
|
||||
@@ -6,7 +6,6 @@ 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/controller/mh_controller/mh_language_controller.dart';
|
||||
import 'package:vbvs_app/controller/setting/language/language_controller.dart';
|
||||
import 'package:vbvs_app/language/AppLanguage.dart';
|
||||
import 'package:vbvs_app/pages/device_bind/componnet/FancyCircleCheckbox.dart';
|
||||
@@ -19,7 +18,7 @@ class LanguageSetting extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _LanguageSettingState extends State<LanguageSetting> {
|
||||
MHLanguageController languageController = Get.find();
|
||||
LanguageController languageController = Get.find();
|
||||
@override
|
||||
void initState() {
|
||||
// languageController.initLanuageList();
|
||||
@@ -129,6 +128,15 @@ class _LanguageSettingState extends State<LanguageSetting> {
|
||||
.language_code); // 加载语言
|
||||
languageController
|
||||
.updateAll(); // 更新操作
|
||||
try {
|
||||
// ef.kv.set("language",
|
||||
// language.language_code);
|
||||
await ef.kvdb.write(
|
||||
"th/language",
|
||||
language.language_code);
|
||||
} catch (e) {
|
||||
print(e);
|
||||
}
|
||||
},
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
|
||||
@@ -57,11 +57,11 @@ var routes = {
|
||||
// "/loginPage": (contxt) => LoginPage(),
|
||||
// "/otherLoginPage": (contxt) => OtherLoginPage(),
|
||||
"/loginPage": (contxt) => OtherLoginPage(),
|
||||
// "/otherLoginPage": (contxt) => OtherLoginPage(),
|
||||
"/otherLoginPage": (contxt) => OtherLoginPage(),
|
||||
"/deviceType": (contxt, {arguments}) => DeviceTypePage(),
|
||||
"/blueteethDevice": (contxt) => BlueteethDevicePage(),
|
||||
"/personPage": (contxt) => PersonPage(),
|
||||
"/bindDeviceSuccess": (contxt) => BindDeviceSuccess(),
|
||||
"/bindDeviceSuccess": (contxt) => BindDeviceSuccess(),
|
||||
"/wifiPage": (contxt, {arguments}) => WifiPage(type: arguments),
|
||||
"/wifiPagePerson": (contxt, {arguments}) => WifiPagePerson(type: arguments),
|
||||
"/updateUserPage": (contxt) => UpdateUserPage(),
|
||||
@@ -119,7 +119,9 @@ var onGenerateRoute = (RouteSettings settings) {
|
||||
// 如果用户未登录且访问的不是登录页面等,展示提示并重定向
|
||||
if (settings.name != "/loginPage" &&
|
||||
settings.name != "/otherLoginPage" &&
|
||||
settings.name != "/mianPageBottomChange") {
|
||||
settings.name != "/mianPageBottomChange" &&
|
||||
settings.name != "/userSchemePage" &&
|
||||
settings.name != "/privacyPage") {
|
||||
TopSlideNotification.show(
|
||||
Get.context!,
|
||||
text: "必须登录提示".tr,
|
||||
|
||||
Reference in New Issue
Block a user