更新协议方式web

This commit is contained in:
wyf
2025-08-15 14:39:01 +08:00
parent 7cffe978ae
commit 4c2728eb2e
12 changed files with 325 additions and 19 deletions

View File

@@ -1,2 +1,2 @@
flutter.android.versionName=2.0.1 flutter.android.versionName=2.0.2
flutter.android.versionCode=6 flutter.android.versionCode=7

View File

@@ -47,4 +47,7 @@ class ServiceConstant {
static const String user_forgot = "/api/user/forgot"; //找回密码 static const String user_forgot = "/api/user/forgot"; //找回密码
static const String user_changePassword = "/api/user/changePassword"; //修改密码 static const String user_changePassword = "/api/user/changePassword"; //修改密码
static const String personnel_info = "/api/personnel/info"; //人员信息列表 static const String personnel_info = "/api/personnel/info"; //人员信息列表
static const String policy_url =
"https://wyf.it.real.he-info.cn:94/apk/policy";//协议地址
} }

View File

@@ -1,5 +1,6 @@
import 'dart:ui'; 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/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/enum/APPPackageType.dart'; import 'package:vbvs_app/enum/APPPackageType.dart';
@@ -47,15 +48,44 @@ class AppConstants {
]; ];
List<Color> thNormalButton = [ List<Color> thNormalButton = [
themeController.currentColor.sc1, themeController.currentColor.sc1,
themeController.currentColor.sc2, themeController.currentColor.sc2,
]; ]; //太和按钮颜色
//系统参数 //系统参数
//运行打包APP模式 //运行打包APP模式
// int ent_type = APPPackageType.MHT.code; //1.默认太和 2.欢睡 3.眠花糖 int ent_type = APPPackageType.MHT.code; //1.默认太和 2.欢睡 3.眠花糖
int ent_type = APPPackageType.TH.code; //1.默认太和 2.欢睡 3.眠花糖 // int ent_type = APPPackageType.TH.code; //1.默认太和 2.欢睡 3.眠花糖
int text_length = 8; 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";
}
}

View File

@@ -7,6 +7,7 @@ import 'package:flutter/material.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/repair_status.dart'; import 'package:vbvs_app/common/color/repair_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/common/util/myDialog/my_dialog_controller.dart';
import 'package:vbvs_app/common/util/requestWithLog.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/mh_controller/device_list_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/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';
@@ -80,8 +82,14 @@ class ApplyRepairController extends GetControllerEx<ApplyRepairModel> {
String serviceApi = ServiceConstant.upload_file; String serviceApi = ServiceConstant.upload_file;
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}"; String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
String? language = ""; String? language = "";
if (mhLanguageController.selectLanguage != null) { if (AppConstants().ent_type == APPPackageType.MHT.code) {
language = mhLanguageController.selectLanguage.value!.language_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 (language != null && language.isNotEmpty) {
if (queryUrl.contains("?")) { if (queryUrl.contains("?")) {

View File

@@ -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_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/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/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 'package:vbvs_app/routers/mh_routers.dart';
import 'controller/mh_controller/apply_repair_controller.dart'; import 'controller/mh_controller/apply_repair_controller.dart';

View File

@@ -337,7 +337,9 @@ class _SettingPageState extends State<SettingPage> {
padding: EdgeInsetsDirectional.fromSTEB( padding: EdgeInsetsDirectional.fromSTEB(
40.rpx, 0.rpx, 40.rpx, 0.rpx), 40.rpx, 0.rpx, 40.rpx, 0.rpx),
onTap: () { onTap: () {
Get.toNamed("/userAgreementPage"); // Get.toNamed("/userAgreementPage");
Get.toNamed("/privacyPolicyPageNew",
arguments: getPrivacy(2));
}, },
child: Container( child: Container(
child: Padding( child: Padding(
@@ -385,7 +387,9 @@ class _SettingPageState extends State<SettingPage> {
padding: EdgeInsetsDirectional.fromSTEB( padding: EdgeInsetsDirectional.fromSTEB(
0.rpx, 0.rpx, 0.rpx, 0.rpx), 0.rpx, 0.rpx, 0.rpx, 0.rpx),
onTap: () { onTap: () {
Get.toNamed("/privacyPolicyPage"); // Get.toNamed("/privacyPolicyPage");
Get.toNamed("/userPolicyPageNew",
arguments: getPrivacy(1));
}, },
child: Container( child: Container(
child: Padding( child: Padding(
@@ -568,7 +572,8 @@ class _SettingPageState extends State<SettingPage> {
AppConstants().ent_type == 1 AppConstants().ent_type == 1
? 'Copyright © 2022-2025 嘉兴太和信息技术有限责任公司 版权所有' ? 'Copyright © 2022-2025 嘉兴太和信息技术有限责任公司 版权所有'
.tr .tr
: "Copyright © 2022-2025 合肥眠花糖家具有限责任公司 版权所有".tr, : "Copyright © 2022-2025 合肥眠花糖家具有限责任公司 版权所有"
.tr,
style: TextStyle( style: TextStyle(
color: themeController.currentColor.sc4, color: themeController.currentColor.sc4,
fontFamily: 'Inter', fontFamily: 'Inter',

View File

@@ -1451,8 +1451,13 @@ class MHTLoginPage extends GetView<MHTLoginController> {
// "/#/pages/agreement/agreement?type=2&hideHead=true", // "/#/pages/agreement/agreement?type=2&hideHead=true",
// btnName: // btnName:
// "同意并继续"); // "同意并继续");
// Get.toNamed(
// "/userAgreementPage");
Get.toNamed( Get.toNamed(
"/userAgreementPage"); "/userPolicyPageNew",
arguments:
getPrivacy(
2));
}, },
child: Text( child: Text(
'《用户协议》'.tr, '《用户协议》'.tr,
@@ -1498,8 +1503,13 @@ class MHTLoginPage extends GetView<MHTLoginController> {
// "/#/pages/agreement/agreement?type=1&hideHead=true", // "/#/pages/agreement/agreement?type=1&hideHead=true",
// btnName: // btnName:
// "同意并继续"); // "同意并继续");
// Get.toNamed(
// "/privacyPolicyPage");
Get.toNamed( Get.toNamed(
"/privacyPolicyPage"); "/privacyPolicyPageNew",
arguments:
getPrivacy(
1));
}, },
child: Text( child: Text(
'《隐私协议》'.tr, '《隐私协议》'.tr,

View File

@@ -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<PrivacyPolicyNewPage> createState() => _PrivacyPolicyNewPageState();
}
class _PrivacyPolicyNewPageState extends State<PrivacyPolicyNewPage> {
GlobalController globalController = Get.find();
UserInfoController userInfoController = Get.find();
BlueteethBindController blueteethBindController = Get.find();
ThemeController themeController = Get.find();
DeviceTypeController deviceTypeController = Get.find();
ValueNotifier<bool> isPageLoading = ValueNotifier<bool>(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<bool>(
valueListenable: isPageLoading,
builder: (context, isLoading, child) {
return isLoading
? Center(
child: CircularProgressIndicator(), // 加载指示器
)
: SizedBox.shrink();
},
),
],
),
),
),
),
),
);
}
}

View File

@@ -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<UserPrivacyNewPage> createState() => _UserPrivacyNewPageState();
}
class _UserPrivacyNewPageState extends State<UserPrivacyNewPage> {
GlobalController globalController = Get.find();
UserInfoController userInfoController = Get.find();
BlueteethBindController blueteethBindController = Get.find();
ThemeController themeController = Get.find();
DeviceTypeController deviceTypeController = Get.find();
ValueNotifier<bool> isPageLoading = ValueNotifier<bool>(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<bool>(
valueListenable: isPageLoading,
builder: (context, isLoading, child) {
return isLoading
? Center(
child: CircularProgressIndicator(), // 加载指示器
)
: SizedBox.shrink();
},
),
],
),
),
),
),
),
);
}
}

View File

@@ -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/rxhx_mht.dart';
import 'package:vbvs_app/pages/mh_page/user/page/update_password_page.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/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/sleep_report/new_sleep_report_page.dart';
import 'package:vbvs_app/pages/xiaoe/xiaoe_page.dart'; import 'package:vbvs_app/pages/xiaoe/xiaoe_page.dart';
import '../pages/mh_page/bluetooth.dart'; import '../pages/mh_page/bluetooth.dart';
@@ -132,6 +134,10 @@ var mhroutes = {
"/auth_bind_tel": (context, {arguments}) => BindTelWidget( "/auth_bind_tel": (context, {arguments}) => BindTelWidget(
img: arguments, img: arguments,
), ),
"/userPolicyPageNew": (contxt, {arguments}) =>
UserPrivacyNewPage(sleepUri: arguments),
"/privacyPolicyPageNew": (contxt, {arguments}) =>
PrivacyPolicyNewPage(sleepUri: arguments),
}; };
var mhonGenerateRoute = (RouteSettings settings) { var mhonGenerateRoute = (RouteSettings settings) {
final String? name = settings.name; // 获取路由名称,如 /news 或 /search final String? name = settings.name; // 获取路由名称,如 /news 或 /search

View File

@@ -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/mh_page/user/page/bind_tel_page.dart';
import 'package:vbvs_app/pages/person/person_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/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_page.dart';
import 'package:vbvs_app/pages/repair/apply_repair_success.dart'; import 'package:vbvs_app/pages/repair/apply_repair_success.dart';
import 'package:vbvs_app/pages/repair/repair_detail_page.dart'; import 'package:vbvs_app/pages/repair/repair_detail_page.dart';
@@ -110,6 +112,10 @@ var routes = {
"/auth_bind_tel": (context, {arguments}) => BindTelWidget( "/auth_bind_tel": (context, {arguments}) => BindTelWidget(
img: arguments, img: arguments,
), ),
"/userPolicyPageNew": (contxt, {arguments}) =>
UserPrivacyNewPage(sleepUri: arguments),
"/privacyPolicyPageNew": (contxt, {arguments}) =>
PrivacyPolicyNewPage(sleepUri: arguments),
}; };
var onGenerateRoute = (RouteSettings settings) { var onGenerateRoute = (RouteSettings settings) {

View File

@@ -60,7 +60,6 @@ dependencies:
flutter_inappwebview: ^6.1.5 flutter_inappwebview: ^6.1.5
fluwx: ^5.5.2 fluwx: ^5.5.2
connectivity_plus: ^6.1.4 connectivity_plus: ^6.1.4
google_sign_in: ^6.2.1
azlistview: ^2.0.0 azlistview: ^2.0.0
path: ^1.8.0 path: ^1.8.0
flutter_pdfview: ^1.4.0+1 flutter_pdfview: ^1.4.0+1
@@ -74,7 +73,7 @@ dependencies:
video_player: ^2.9.5 video_player: ^2.9.5
chewie: ^1.10.0 chewie: ^1.10.0
map_launcher: ^3.5.0 map_launcher: ^3.5.0
flutter_bmflocation: ^3.8.0
gif: ^2.3.0 gif: ^2.3.0
easyweb: easyweb: