From 4c2728eb2ea577ff78d89a3e6715ee3bfe84122e Mon Sep 17 00:00:00 2001 From: wyf <494641114@qq.com> Date: Fri, 15 Aug 2025 14:39:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=8D=8F=E8=AE=AE=E6=96=B9?= =?UTF-8?q?=E5=BC=8Fweb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/version.properties | 4 +- lib/common/color/ServiceConstant.dart | 3 + lib/common/color/appConstants.dart | 44 ++++++- .../apply_repair_controller.dart | 12 +- lib/main.dart | 1 - lib/pages/mh_page/new_settingPage.dart | 11 +- .../mh_page/user/page/mht_login_page.dart | 14 +- lib/pages/policy/privacy_policy.dart | 120 ++++++++++++++++++ lib/pages/policy/user_policy.dart | 120 ++++++++++++++++++ lib/routers/mh_routers.dart | 6 + lib/routers/routers.dart | 6 + pubspec.yaml | 3 +- 12 files changed, 325 insertions(+), 19 deletions(-) create mode 100644 lib/pages/policy/privacy_policy.dart create mode 100644 lib/pages/policy/user_policy.dart diff --git a/android/version.properties b/android/version.properties index eca4561..7d048e4 100644 --- a/android/version.properties +++ b/android/version.properties @@ -1,2 +1,2 @@ -flutter.android.versionName=2.0.1 -flutter.android.versionCode=6 \ No newline at end of file +flutter.android.versionName=2.0.2 +flutter.android.versionCode=7 \ No newline at end of file diff --git a/lib/common/color/ServiceConstant.dart b/lib/common/color/ServiceConstant.dart index c1e9985..0967deb 100644 --- a/lib/common/color/ServiceConstant.dart +++ b/lib/common/color/ServiceConstant.dart @@ -47,4 +47,7 @@ class ServiceConstant { static const String user_forgot = "/api/user/forgot"; //找回密码 static const String user_changePassword = "/api/user/changePassword"; //修改密码 static const String personnel_info = "/api/personnel/info"; //人员信息列表 + + static const String policy_url = + "https://wyf.it.real.he-info.cn:94/apk/policy";//协议地址 } diff --git a/lib/common/color/appConstants.dart b/lib/common/color/appConstants.dart index e361664..ad3db4f 100644 --- a/lib/common/color/appConstants.dart +++ b/lib/common/color/appConstants.dart @@ -1,5 +1,6 @@ import 'dart:ui'; +import 'package:vbvs_app/common/color/ServiceConstant.dart'; import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/enum/APPPackageType.dart'; @@ -47,15 +48,44 @@ class AppConstants { ]; List thNormalButton = [ - themeController.currentColor.sc1, - themeController.currentColor.sc2, - ]; - - + themeController.currentColor.sc1, + themeController.currentColor.sc2, + ]; //太和按钮颜色 //系统参数 //运行打包APP模式 - // int ent_type = APPPackageType.MHT.code; //1.默认太和 2.欢睡 3.眠花糖 - int ent_type = APPPackageType.TH.code; //1.默认太和 2.欢睡 3.眠花糖 + int ent_type = APPPackageType.MHT.code; //1.默认太和 2.欢睡 3.眠花糖 + // int ent_type = APPPackageType.TH.code; //1.默认太和 2.欢睡 3.眠花糖 int text_length = 8; } + +//获取协议地址 +// 1.隐私协议 2.用户协议 +String getPrivacy(int type) { + String? language = "zh_CN"; + if (AppConstants().ent_type == APPPackageType.MHT.code) { + if (mhLanguageController.selectLanguage != null) { + language = mhLanguageController.selectLanguage.value!.language_code; + } + } else { + if (languageController.selectLanguage != null) { + language = languageController.selectLanguage.value!.language_code; + } + } + if (AppConstants().ent_type == APPPackageType.MHT.code) { + if (type == 1) { + return ServiceConstant.policy_url + "/mht_privacy_policy_$language.html"; + } + return ServiceConstant.policy_url + "/mht_user_policy_$language.html"; + } else if (AppConstants().ent_type == APPPackageType.TH.code) { + if (type == 1) { + return ServiceConstant.policy_url + "/th_privacy_policy_$language.html"; + } + return ServiceConstant.policy_url + "/th_user_policy_$language.html"; + } else { + if (type == 1) { + return ServiceConstant.policy_url + "/th_privacy_policy_$language.html"; + } + return ServiceConstant.policy_url + "/th_user_policy_$language.html"; + } +} diff --git a/lib/controller/mh_controller/apply_repair_controller.dart b/lib/controller/mh_controller/apply_repair_controller.dart index 7b9eb2d..ff79e31 100644 --- a/lib/controller/mh_controller/apply_repair_controller.dart +++ b/lib/controller/mh_controller/apply_repair_controller.dart @@ -7,6 +7,7 @@ import 'package:flutter/material.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/repair_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/common/util/myDialog/my_dialog_controller.dart'; import 'package:vbvs_app/common/util/requestWithLog.dart'; import 'package:vbvs_app/controller/mh_controller/device_list_controller.dart'; import 'package:vbvs_app/controller/user_info_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'; @@ -80,8 +82,14 @@ class ApplyRepairController extends GetControllerEx { String serviceApi = ServiceConstant.upload_file; String queryUrl = "${serviceAddress}${serviceName}${serviceApi}"; String? language = ""; - if (mhLanguageController.selectLanguage != null) { - language = mhLanguageController.selectLanguage.value!.language_code; + if (AppConstants().ent_type == APPPackageType.MHT.code) { + if (mhLanguageController.selectLanguage != null) { + language = mhLanguageController.selectLanguage.value!.language_code; + } + } else { + if (languageController.selectLanguage != null) { + language = languageController.selectLanguage.value!.language_code; + } } if (language != null && language.isNotEmpty) { if (queryUrl.contains("?")) { diff --git a/lib/main.dart b/lib/main.dart index 5847263..8ffbf98 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -79,7 +79,6 @@ import 'package:vbvs_app/pages/mh_page/user/controller/bind_tel_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'; import 'package:vbvs_app/pages/mh_page/user/controller/update_password_controller.dart'; -import 'package:vbvs_app/pages/mh_page/user/page/bind_tel_page.dart'; import 'package:vbvs_app/routers/mh_routers.dart'; import 'controller/mh_controller/apply_repair_controller.dart'; diff --git a/lib/pages/mh_page/new_settingPage.dart b/lib/pages/mh_page/new_settingPage.dart index cd5b83e..8f6f362 100644 --- a/lib/pages/mh_page/new_settingPage.dart +++ b/lib/pages/mh_page/new_settingPage.dart @@ -337,7 +337,9 @@ class _SettingPageState extends State { padding: EdgeInsetsDirectional.fromSTEB( 40.rpx, 0.rpx, 40.rpx, 0.rpx), onTap: () { - Get.toNamed("/userAgreementPage"); + // Get.toNamed("/userAgreementPage"); + Get.toNamed("/privacyPolicyPageNew", + arguments: getPrivacy(2)); }, child: Container( child: Padding( @@ -385,7 +387,9 @@ class _SettingPageState extends State { padding: EdgeInsetsDirectional.fromSTEB( 0.rpx, 0.rpx, 0.rpx, 0.rpx), onTap: () { - Get.toNamed("/privacyPolicyPage"); + // Get.toNamed("/privacyPolicyPage"); + Get.toNamed("/userPolicyPageNew", + arguments: getPrivacy(1)); }, child: Container( child: Padding( @@ -568,7 +572,8 @@ class _SettingPageState extends State { AppConstants().ent_type == 1 ? 'Copyright © 2022-2025 嘉兴太和信息技术有限责任公司 版权所有' .tr - : "Copyright © 2022-2025 合肥眠花糖家具有限责任公司 版权所有".tr, + : "Copyright © 2022-2025 合肥眠花糖家具有限责任公司 版权所有" + .tr, style: TextStyle( color: themeController.currentColor.sc4, fontFamily: 'Inter', 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 70f0251..20f78ae 100644 --- a/lib/pages/mh_page/user/page/mht_login_page.dart +++ b/lib/pages/mh_page/user/page/mht_login_page.dart @@ -1451,8 +1451,13 @@ class MHTLoginPage extends GetView { // "/#/pages/agreement/agreement?type=2&hideHead=true", // btnName: // "同意并继续"); + // Get.toNamed( + // "/userAgreementPage"); Get.toNamed( - "/userAgreementPage"); + "/userPolicyPageNew", + arguments: + getPrivacy( + 2)); }, child: Text( '《用户协议》'.tr, @@ -1498,8 +1503,13 @@ class MHTLoginPage extends GetView { // "/#/pages/agreement/agreement?type=1&hideHead=true", // btnName: // "同意并继续"); + // Get.toNamed( + // "/privacyPolicyPage"); Get.toNamed( - "/privacyPolicyPage"); + "/privacyPolicyPageNew", + arguments: + getPrivacy( + 1)); }, child: Text( '《隐私协议》'.tr, diff --git a/lib/pages/policy/privacy_policy.dart b/lib/pages/policy/privacy_policy.dart new file mode 100644 index 0000000..d544c4e --- /dev/null +++ b/lib/pages/policy/privacy_policy.dart @@ -0,0 +1,120 @@ +import 'package:ef/ef.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_inappwebview/flutter_inappwebview.dart'; +import 'package:vbvs_app/common/util/FitTool.dart'; +import 'package:vbvs_app/common/util/MyUtils.dart'; +import 'package:vbvs_app/controller/device/blueteeth_bind_controller.dart'; +import 'package:vbvs_app/controller/device/device_type_controller.dart'; +import 'package:vbvs_app/controller/main_bottom/global_controller.dart'; +import 'package:vbvs_app/controller/theme_controller/ThemeController.dart'; +import 'package:vbvs_app/controller/user_info_controller.dart'; + +class PrivacyPolicyNewPage extends StatefulWidget { + var sleepUri; + PrivacyPolicyNewPage({super.key, required this.sleepUri}); + + @override + State createState() => _PrivacyPolicyNewPageState(); +} + +class _PrivacyPolicyNewPageState extends State { + GlobalController globalController = Get.find(); + UserInfoController userInfoController = Get.find(); + BlueteethBindController blueteethBindController = Get.find(); + ThemeController themeController = Get.find(); + DeviceTypeController deviceTypeController = Get.find(); + + ValueNotifier isPageLoading = ValueNotifier(true); + + @override + void initState() { + super.initState(); + } + + @override + void dispose() { + // 清理 ValueNotifier + isPageLoading.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return LayoutBuilder( + builder: (context, bodySize) => GestureDetector( + // onTap: () => FocusScope.of(context).unfocus(),, + child: Container( + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage('assets/img/bgNoImg.png'), // 本地图片 + fit: BoxFit.fill, // 填满整个 Container + ), + ), + child: Scaffold( + backgroundColor: Colors.transparent, // 背景透明 + appBar: AppBar( + backgroundColor: themeController.currentColor.sc17, + 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: TextStyle( + fontFamily: 'Readex Pro', + color: themeController.currentColor.sc3, + letterSpacing: 0, + fontSize: 30.rpx, + ), + ), + + /// 左边返回按钮 + Positioned( + left: 0, + child: returnIconButtomNew(), + ), + ], + ), + ), + ), + body: SafeArea( + top: true, + child: Stack( + children: [ + InAppWebView( + key: UniqueKey(), + initialUrlRequest: URLRequest(url: WebUri(widget.sleepUri)), + onLoadStart: (controller, url) { + // 页面开始加载时显示加载指示器 + isPageLoading.value = true; + }, + onLoadStop: (controller, url) { + // 页面加载完成后隐藏加载指示器 + isPageLoading.value = false; + }, + ), + ValueListenableBuilder( + valueListenable: isPageLoading, + builder: (context, isLoading, child) { + return isLoading + ? Center( + child: CircularProgressIndicator(), // 加载指示器 + ) + : SizedBox.shrink(); + }, + ), + ], + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/pages/policy/user_policy.dart b/lib/pages/policy/user_policy.dart new file mode 100644 index 0000000..634bc65 --- /dev/null +++ b/lib/pages/policy/user_policy.dart @@ -0,0 +1,120 @@ +import 'package:ef/ef.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_inappwebview/flutter_inappwebview.dart'; +import 'package:vbvs_app/common/util/FitTool.dart'; +import 'package:vbvs_app/common/util/MyUtils.dart'; +import 'package:vbvs_app/controller/device/blueteeth_bind_controller.dart'; +import 'package:vbvs_app/controller/device/device_type_controller.dart'; +import 'package:vbvs_app/controller/main_bottom/global_controller.dart'; +import 'package:vbvs_app/controller/theme_controller/ThemeController.dart'; +import 'package:vbvs_app/controller/user_info_controller.dart'; + +class UserPrivacyNewPage extends StatefulWidget { + var sleepUri; + UserPrivacyNewPage({super.key, required this.sleepUri}); + + @override + State createState() => _UserPrivacyNewPageState(); +} + +class _UserPrivacyNewPageState extends State { + GlobalController globalController = Get.find(); + UserInfoController userInfoController = Get.find(); + BlueteethBindController blueteethBindController = Get.find(); + ThemeController themeController = Get.find(); + DeviceTypeController deviceTypeController = Get.find(); + + ValueNotifier isPageLoading = ValueNotifier(true); + + @override + void initState() { + super.initState(); + } + + @override + void dispose() { + // 清理 ValueNotifier + isPageLoading.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return LayoutBuilder( + builder: (context, bodySize) => GestureDetector( + // onTap: () => FocusScope.of(context).unfocus(),, + child: Container( + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage('assets/img/bgNoImg.png'), // 本地图片 + fit: BoxFit.fill, // 填满整个 Container + ), + ), + child: Scaffold( + backgroundColor: Colors.transparent, // 背景透明 + appBar: AppBar( + backgroundColor: themeController.currentColor.sc17, + 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: TextStyle( + fontFamily: 'Readex Pro', + color: themeController.currentColor.sc3, + letterSpacing: 0, + fontSize: 30.rpx, + ), + ), + + /// 左边返回按钮 + Positioned( + left: 0, + child: returnIconButtomNew(), + ), + ], + ), + ), + ), + body: SafeArea( + top: true, + child: Stack( + children: [ + InAppWebView( + key: UniqueKey(), + initialUrlRequest: URLRequest(url: WebUri(widget.sleepUri)), + onLoadStart: (controller, url) { + // 页面开始加载时显示加载指示器 + isPageLoading.value = true; + }, + onLoadStop: (controller, url) { + // 页面加载完成后隐藏加载指示器 + isPageLoading.value = false; + }, + ), + ValueListenableBuilder( + valueListenable: isPageLoading, + builder: (context, isLoading, child) { + return isLoading + ? Center( + child: CircularProgressIndicator(), // 加载指示器 + ) + : SizedBox.shrink(); + }, + ), + ], + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/routers/mh_routers.dart b/lib/routers/mh_routers.dart index cb605fa..070daa9 100644 --- a/lib/routers/mh_routers.dart +++ b/lib/routers/mh_routers.dart @@ -51,6 +51,8 @@ import 'package:vbvs_app/pages/mh_page/user/page/mht_login_page.dart'; import 'package:vbvs_app/pages/mh_page/user/page/rxhx_mht.dart'; import 'package:vbvs_app/pages/mh_page/user/page/update_password_page.dart'; import 'package:vbvs_app/pages/mh_page/user_agreement_page.dart'; +import 'package:vbvs_app/pages/policy/privacy_policy.dart'; +import 'package:vbvs_app/pages/policy/user_policy.dart'; import 'package:vbvs_app/pages/sleep_report/new_sleep_report_page.dart'; import 'package:vbvs_app/pages/xiaoe/xiaoe_page.dart'; import '../pages/mh_page/bluetooth.dart'; @@ -132,6 +134,10 @@ var mhroutes = { "/auth_bind_tel": (context, {arguments}) => BindTelWidget( img: arguments, ), + "/userPolicyPageNew": (contxt, {arguments}) => + UserPrivacyNewPage(sleepUri: arguments), + "/privacyPolicyPageNew": (contxt, {arguments}) => + PrivacyPolicyNewPage(sleepUri: arguments), }; var mhonGenerateRoute = (RouteSettings settings) { final String? name = settings.name; // 获取路由名称,如 /news 或 /search diff --git a/lib/routers/routers.dart b/lib/routers/routers.dart index 0c2f06b..b22f452 100644 --- a/lib/routers/routers.dart +++ b/lib/routers/routers.dart @@ -34,6 +34,8 @@ import 'package:vbvs_app/pages/main_bottom/mine_page.dart'; import 'package:vbvs_app/pages/mh_page/user/page/bind_tel_page.dart'; import 'package:vbvs_app/pages/person/person_page.dart'; import 'package:vbvs_app/pages/person/update_person_page.dart'; +import 'package:vbvs_app/pages/policy/privacy_policy.dart'; +import 'package:vbvs_app/pages/policy/user_policy.dart'; import 'package:vbvs_app/pages/repair/apply_repair_page.dart'; import 'package:vbvs_app/pages/repair/apply_repair_success.dart'; import 'package:vbvs_app/pages/repair/repair_detail_page.dart'; @@ -110,6 +112,10 @@ var routes = { "/auth_bind_tel": (context, {arguments}) => BindTelWidget( img: arguments, ), + "/userPolicyPageNew": (contxt, {arguments}) => + UserPrivacyNewPage(sleepUri: arguments), + "/privacyPolicyPageNew": (contxt, {arguments}) => + PrivacyPolicyNewPage(sleepUri: arguments), }; var onGenerateRoute = (RouteSettings settings) { diff --git a/pubspec.yaml b/pubspec.yaml index 7451f81..ec8a198 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -60,7 +60,6 @@ dependencies: flutter_inappwebview: ^6.1.5 fluwx: ^5.5.2 connectivity_plus: ^6.1.4 - google_sign_in: ^6.2.1 azlistview: ^2.0.0 path: ^1.8.0 flutter_pdfview: ^1.4.0+1 @@ -74,7 +73,7 @@ dependencies: video_player: ^2.9.5 chewie: ^1.10.0 map_launcher: ^3.5.0 - flutter_bmflocation: ^3.8.0 + gif: ^2.3.0 easyweb: