Merge remote-tracking branch 'origin/master'

This commit is contained in:
czz
2025-07-23 13:56:03 +08:00
12 changed files with 682 additions and 296 deletions

View File

@@ -238,7 +238,7 @@ class WebviewTestController extends GetControllerEx<WebviewTestModel> {
// 删除已有的同 mac 项
instantData.removeWhere((element) => element['mac'] == mac);
// 添加新的数据
instantData.add(newData);
instantData.add(newData);
}
}
} catch (e) {

View File

@@ -961,8 +961,10 @@ class MHTLoginPage extends GetView<MHTLoginController> {
),
),
),
);
}),
Obx(() {
return Visibility(
visible: controller.model.loginStyle == 2
@@ -1219,6 +1221,7 @@ class MHTLoginPage extends GetView<MHTLoginController> {
),
),
),
);
}),
Padding(

View File

@@ -1,6 +1,7 @@
import 'package:ef/ef.dart';
import 'package:flutter/material.dart';
import 'package:vbvs_app/common/color/appConstants.dart';
import 'package:vbvs_app/common/color/appFontsize.dart';
import 'package:vbvs_app/common/util/CommonVariables.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
@@ -93,7 +94,7 @@ class RegisterPage extends GetView<MHTRegisterController> {
0, 184.rpx, 0, 0),
child: Container(
width: double.infinity,
height: bodysize!.maxHeight * 0.06,
height: 46,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius: BorderRadius.circular(12),
@@ -103,7 +104,7 @@ class RegisterPage extends GetView<MHTRegisterController> {
),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
35.rpx, 0, 35.rpx, 0),
10, 0, 35.rpx, 0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
@@ -148,293 +149,664 @@ class RegisterPage extends GetView<MHTRegisterController> {
),
),
),
Align(
alignment: AlignmentDirectional(-1, 0),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 32.rpx, 0, 0),
child: Container(
width: double.infinity,
height: bodysize!.maxHeight * 0.06,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius: BorderRadius.circular(12),
),
constraints: BoxConstraints(
minHeight: 92.rpx,
),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
35.rpx, 0, 35.rpx, 0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Container(
child: Align(
alignment:
AlignmentDirectional(
-1, 0),
child: Obx(() =>
TextFormField(
onChanged: (value) {
controller.model
.register_pd =
value;
},
obscureText: controller
.model.pdshow!,
decoration:
InputDecoration(
isDense: true,
hintText: '请输入密码'.tr,
hintStyle: TextStyle(
fontFamily:
'Readex Pro',
color: Color(
0xFF929699),
fontSize: 26.rpx,
),
border:
InputBorder.none,
suffixIcon:
IconButton(
icon: Icon(
controller.model
.pdshow!
? Icons
.visibility_off
: Icons
.visibility,
color: Color(
0xFF333333),
size: 16,
),
onPressed: () {
controller.model
.pdshow =
!controller
.model
.pdshow!;
controller
.updateAll();
},
),
),
style: TextStyle(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
color: Colors.black,
),
)),
),
),
),
],
),
),
),
),
),
// 确认密码输入框
Align(
alignment: AlignmentDirectional(-1, 0),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 32.rpx, 0, 0),
child: Container(
width: double.infinity,
height: bodysize!.maxHeight * 0.06,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius: BorderRadius.circular(12),
),
constraints: BoxConstraints(
minHeight: 92.rpx,
),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
35.rpx, 0, 35.rpx, 0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Container(
child: Align(
alignment:
AlignmentDirectional(
-1, 0),
child: Obx(() =>
TextFormField(
onChanged: (value) {
controller.model
.register_confirm_pd =
value;
},
obscureText: controller
.model.cpdshow!,
decoration:
InputDecoration(
isDense: true,
hintText:
'请输入确认密码'.tr,
hintStyle: TextStyle(
fontFamily:
'Readex Pro',
color: Color(
0xFF929699),
fontSize: 26.rpx,
),
border:
InputBorder.none,
suffixIcon:
IconButton(
icon: Icon(
controller.model
.pdshow!
? Icons
.visibility_off
: Icons
.visibility,
color: Color(
0xFF333333),
size: 16,
),
onPressed: () {
controller.model
.cpdshow =
!controller
.model
.cpdshow!;
controller
.updateAll();
},
),
),
style: TextStyle(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
color: Colors.black,
),
)),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0.rpx, 17, 0.rpx, 0),
child: Container(
width: bodysize!.maxWidth,
height: 46,
decoration: BoxDecoration(),
child: Stack(
children: [
Align(
alignment: AlignmentDirectional(0, 0),
child: Container(
width: MediaQuery.sizeOf(context)
.width,
height: 46,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius:
BorderRadius.circular(12),
),
],
),
),
),
),
),
// 验证码输入框
Align(
alignment: AlignmentDirectional(-1, 0),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 32.rpx, 0, 0),
child: Container(
width: double.infinity,
height: bodysize!.maxHeight * 0.06,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius: BorderRadius.circular(12),
),
constraints: BoxConstraints(
minHeight: 92.rpx,
),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
35.rpx, 0, 35.rpx, 0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Container(
child: Align(
alignment:
AlignmentDirectional(
-1, 0),
child: TextFormField(
child: Align(
alignment:
AlignmentDirectional(0, 0),
child: Obx(() {
return TextFormField(
obscureText: controller
.model.pdshow!,
onChanged: (value) {
controller.model
.register_code =
value;
.register_pd = value;
},
initialValue: controller
.model.register_pd,
decoration: InputDecoration(
isDense: true,
hintText: '请输入验证码',
labelStyle: TextStyle(
fontFamily:
'Readex Pro',
fontSize: AppFontsize
.normal_text_size,
letterSpacing: 0,
),
hintText: '请输入密码',
hintStyle: TextStyle(
fontFamily:
'Readex Pro',
color:
Color(0xFF929699),
fontSize: 26.rpx,
fontSize: AppFontsize
.normal_text_size,
letterSpacing: 0,
),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
errorBorder:
InputBorder.none,
focusedErrorBorder:
InputBorder.none,
contentPadding:
EdgeInsetsDirectional
.fromSTEB(
10, 12, 0, 0),
suffixIcon: IconButton(
icon: Icon(
// 根据 pdshow 控制图标
controller
.model.pdshow!
? Icons
.visibility_off
: Icons
.visibility,
color:
Color(0xFF333333),
size: 16,
),
onPressed: () {
// 切换 pdshow 状态
controller.model
.pdshow =
!controller.model
.pdshow!;
controller
.updateAll();
},
),
border: InputBorder.none,
),
style: TextStyle(
fontFamily: 'Readex Pro',
fontSize: 26.rpx,
color: Colors.black,
fontSize: AppFontsize
.normal_text_size,
letterSpacing: 0,
),
),
),
),
),
Container(
width: 1.rpx,
height: 38.rpx,
color: Color(0xFF929699),
),
Obx(() {
final countdownController = Get
.find<CountdownController>();
return InkWell(
onTap: () async {
if (countdownController
.countdown.value !=
0) return;
String msg = await controller
.getCode(context);
if (msg.isEmpty) {
countdownController
.startCountdown(
AppConstants
.code_time);
}
},
child: Text(
countdownController.countdown
.value ==
0
? '获取验证码'.tr
: '${countdownController.countdown.value}'
.tr,
style: TextStyle(
fontFamily: 'Readex Pro',
color: Color(0xFF333333),
fontSize: 20.rpx,
),
),
);
}),
],
);
})),
),
),
),
],
),
),
),
// Align(
// alignment: AlignmentDirectional(-1, 0),
// child: Padding(
// padding: EdgeInsetsDirectional.fromSTEB(
// 0, 32.rpx, 0, 0),
// child: Container(
// width: double.infinity,
// height: bodysize!.maxHeight * 0.06,
// decoration: BoxDecoration(
// color: Color(0xFFF3F5F6),
// borderRadius: BorderRadius.circular(12),
// ),
// constraints: BoxConstraints(
// minHeight: 92.rpx,
// ),
// child: Padding(
// padding: EdgeInsetsDirectional.fromSTEB(
// 35.rpx, 0, 35.rpx, 0),
// child: Row(
// mainAxisSize: MainAxisSize.max,
// mainAxisAlignment:
// MainAxisAlignment.spaceBetween,
// children: [
// Expanded(
// child: Container(
// child: Align(
// alignment:
// AlignmentDirectional(
// -1, 0),
// child: Obx(() =>
// TextFormField(
// onChanged: (value) {
// controller.model
// .register_pd =
// value;
// },
// obscureText: controller
// .model.pdshow!,
// decoration:
// InputDecoration(
// isDense: true,
// hintText: '请输入密码'.tr,
// hintStyle: TextStyle(
// fontFamily:
// 'Readex Pro',
// color: Color(
// 0xFF929699),
// fontSize: 26.rpx,
// ),
// border:
// InputBorder.none,
// suffixIcon:
// IconButton(
// icon: Icon(
// controller.model
// .pdshow!
// ? Icons
// .visibility_off
// : Icons
// .visibility,
// color: Color(
// 0xFF333333),
// size: 16,
// ),
// onPressed: () {
// controller.model
// .pdshow =
// !controller
// .model
// .pdshow!;
// controller
// .updateAll();
// },
// ),
// ),
// style: TextStyle(
// fontFamily:
// 'Readex Pro',
// fontSize: 26.rpx,
// color: Colors.black,
// ),
// )),
// ),
// ),
// ),
// ],
// ),
// ),
// ),
// ),
// ),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0.rpx, 17, 0.rpx, 0),
child: Container(
width: bodysize!.maxWidth,
height: 46,
decoration: BoxDecoration(),
child: Stack(
children: [
Align(
alignment: AlignmentDirectional(0, 0),
child: Container(
width: MediaQuery.sizeOf(context)
.width,
height: 46,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius:
BorderRadius.circular(12),
),
child: Align(
alignment:
AlignmentDirectional(0, 0),
child: Obx(() {
return TextFormField(
obscureText: controller
.model.cpdshow!,
onChanged: (value) {
controller.model
.register_confirm_pd =
value;
},
initialValue: controller
.model
.register_confirm_pd,
decoration: InputDecoration(
labelStyle: TextStyle(
fontFamily:
'Readex Pro',
fontSize: AppFontsize
.normal_text_size,
letterSpacing: 0,
),
hintText: '请确认密码',
hintStyle: TextStyle(
fontFamily:
'Readex Pro',
color:
Color(0xFF929699),
fontSize: AppFontsize
.normal_text_size,
letterSpacing: 0,
),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
errorBorder:
InputBorder.none,
focusedErrorBorder:
InputBorder.none,
contentPadding:
EdgeInsetsDirectional
.fromSTEB(
10, 12, 0, 0),
suffixIcon: IconButton(
icon: Icon(
// 根据 pdshow 控制图标
controller
.model.cpdshow!
? Icons
.visibility_off
: Icons
.visibility,
color:
Color(0xFF333333),
size: 16,
),
onPressed: () {
// 切换 pdshow 状态
controller.model
.cpdshow =
!controller.model
.cpdshow!;
controller
.updateAll();
},
),
),
style: TextStyle(
fontFamily: 'Readex Pro',
fontSize: AppFontsize
.normal_text_size,
letterSpacing: 0,
),
);
})),
),
),
],
),
),
),
// Align(
// alignment: AlignmentDirectional(-1, 0),
// child: Padding(
// padding: EdgeInsetsDirectional.fromSTEB(
// 0, 32.rpx, 0, 0),
// child: Container(
// width: double.infinity,
// height: bodysize!.maxHeight * 0.06,
// decoration: BoxDecoration(
// color: Color(0xFFF3F5F6),
// borderRadius: BorderRadius.circular(12),
// ),
// constraints: BoxConstraints(
// minHeight: 92.rpx,
// ),
// child: Padding(
// padding: EdgeInsetsDirectional.fromSTEB(
// 35.rpx, 0, 35.rpx, 0),
// child: Row(
// mainAxisSize: MainAxisSize.max,
// mainAxisAlignment:
// MainAxisAlignment.spaceBetween,
// children: [
// Expanded(
// child: Container(
// child: Align(
// alignment:
// AlignmentDirectional(
// -1, 0),
// child: Obx(() =>
// TextFormField(
// onChanged: (value) {
// controller.model
// .register_confirm_pd =
// value;
// },
// obscureText: controller
// .model.cpdshow!,
// decoration:
// InputDecoration(
// isDense: true,
// hintText:
// '请输入确认密码'.tr,
// hintStyle: TextStyle(
// fontFamily:
// 'Readex Pro',
// color: Color(
// 0xFF929699),
// fontSize: 26.rpx,
// ),
// border:
// InputBorder.none,
// suffixIcon:
// IconButton(
// icon: Icon(
// controller.model
// .pdshow!
// ? Icons
// .visibility_off
// : Icons
// .visibility,
// color: Color(
// 0xFF333333),
// size: 16,
// ),
// onPressed: () {
// controller.model
// .cpdshow =
// !controller
// .model
// .cpdshow!;
// controller
// .updateAll();
// },
// ),
// ),
// style: TextStyle(
// fontFamily:
// 'Readex Pro',
// fontSize: 26.rpx,
// color: Colors.black,
// ),
// )),
// ),
// ),
// ),
// ],
// ),
// ),
// ),
// ),
// ),
// Align(
// alignment: AlignmentDirectional(-1, 0),
// child: Padding(
// padding: EdgeInsetsDirectional.fromSTEB(
// 0, 32.rpx, 0, 0),
// child: Container(
// width: double.infinity,
// height: bodysize!.maxHeight * 0.06,
// decoration: BoxDecoration(
// color: Color(0xFFF3F5F6),
// borderRadius: BorderRadius.circular(12),
// ),
// constraints: BoxConstraints(
// minHeight: 92.rpx,
// ),
// child: Padding(
// padding: EdgeInsetsDirectional.fromSTEB(
// 10, 0, 35.rpx, 0),
// child: Row(
// mainAxisSize: MainAxisSize.max,
// mainAxisAlignment:
// MainAxisAlignment.spaceBetween,
// children: [
// Expanded(
// child: Container(
// child: Align(
// alignment:
// AlignmentDirectional(
// -1, 0),
// child: TextFormField(
// onChanged: (value) {
// controller.model
// .register_code =
// value;
// },
// decoration: InputDecoration(
// isDense: true,
// hintText: '请输入验证码',
// hintStyle: TextStyle(
// fontFamily:
// 'Readex Pro',
// color:
// Color(0xFF929699),
// fontSize: 26.rpx,
// ),
// border: InputBorder.none,
// ),
// style: TextStyle(
// fontFamily: 'Readex Pro',
// fontSize: 26.rpx,
// color: Colors.black,
// ),
// ),
// ),
// ),
// ),
// Container(
// width: 1.rpx,
// height: 38.rpx,
// color: Color(0xFF929699),
// ),
// Obx(() {
// final countdownController = Get
// .find<CountdownController>();
// return InkWell(
// onTap: () async {
// if (countdownController
// .countdown.value !=
// 0) return;
// String msg = await controller
// .getCode(context);
// if (msg.isEmpty) {
// countdownController
// .startCountdown(
// AppConstants
// .code_time);
// }
// },
// child: Text(
// countdownController.countdown
// .value ==
// 0
// ? '获取验证码'.tr
// : '${countdownController.countdown.value}秒'
// .tr,
// style: TextStyle(
// fontFamily: 'Readex Pro',
// color: Color(0xFF333333),
// fontSize: 20.rpx,
// ),
// ),
// );
// }),
// ],
// ),
// ),
// ),
// ),
// ),
// 其他部分保持不变...
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0.rpx, 17, 0.rpx, 0),
child: Container(
width: bodysize!.maxWidth,
height: 46,
decoration: BoxDecoration(),
child: Stack(
children: [
Align(
alignment: AlignmentDirectional(0, 0),
child: Container(
width: MediaQuery.sizeOf(context)
.width,
height: 46,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius:
BorderRadius.circular(12),
),
child: Align(
alignment:
AlignmentDirectional(0, 0),
child: TextFormField(
// focusNode: _focusNode4,
onChanged: (value) {
controller.model
.register_code = value;
},
obscureText: false,
decoration: InputDecoration(
labelStyle: TextStyle(
fontFamily: 'Readex Pro',
fontSize: AppFontsize
.normal_text_size,
letterSpacing: 0,
),
hintText: '请输入验证码',
hintStyle: TextStyle(
fontFamily: 'Readex Pro',
color: Color(0xFF929699),
fontSize: AppFontsize
.normal_text_size,
letterSpacing: 0,
),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
errorBorder: InputBorder.none,
focusedErrorBorder:
InputBorder.none,
contentPadding:
EdgeInsetsDirectional
.fromSTEB(
10, 0, 0, 5),
),
style: TextStyle(
fontFamily: 'Readex Pro',
fontSize: AppFontsize
.normal_text_size,
letterSpacing: 0,
),
),
),
),
),
Align(
alignment:
AlignmentDirectional(0.2, 0.1),
child: Container(
width: 1.rpx,
height: 38.rpx,
decoration: BoxDecoration(
color: stringToColor("#929699"),
),
),
),
Align(
alignment:
AlignmentDirectional(0.9, 0),
child: Container(
width: MediaQuery.sizeOf(context)
.width *
0.157,
height: MediaQuery.sizeOf(context)
.height *
0.014,
constraints: BoxConstraints(
minWidth: 118,
minHeight: 30,
),
decoration: BoxDecoration(),
child: Align(
alignment:
AlignmentDirectional(0, 0),
child: Obx(() {
final CountdownController
countdownController =
Get.find<
CountdownController>();
return InkWell(
onTap: () async {
if (countdownController
.countdown.value !=
0) {
return;
}
if (CommonVariables
.isNetWorkOn ==
false) {
TopSlideNotification.show(
context,
text:
"网络未连接,请开启设备网络后重试"
.tr,
textColor:
themeController
.currentColor
.sc9);
return;
}
String msg =
await controller
.getCode(context);
if (msg.isNotEmpty) {
return;
}
countdownController
.countdown
.value ==
0
? countdownController
.startCountdown(
AppConstants
.code_time)
: null;
},
child: Text(
countdownController
.countdown
.value ==
0
? '获取验证码'
: '${countdownController.countdown.value}' +
''.tr,
style: TextStyle(
fontFamily: 'Readex Pro',
color: Color(0xFF333333),
fontSize: AppFontsize
.normal_text_size,
letterSpacing: 0,
),
),
);
}),
),
),
),
],
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 19, 0, 0),
@@ -577,10 +949,12 @@ class RegisterPage extends GetView<MHTRegisterController> {
0, 0),
child: InkWell(
onTap: () {
showCustomConfirmOfWebViewDialog(
context,
"用户协议",
"/#/pages/agreement/agreement?type=2&hideHead=true");
// showCustomConfirmOfWebViewDialog(
// context,
// "用户协议",
// "/#/pages/agreement/agreement?type=2&hideHead=true");
Get.toNamed(
"/userAgreementPage");
},
child: Text(
'《用户协议》'.tr,
@@ -617,10 +991,12 @@ class RegisterPage extends GetView<MHTRegisterController> {
0, 0),
child: InkWell(
onTap: () {
showCustomConfirmOfWebViewDialog(
context,
"隐私协议",
"/#/pages/agreement/agreement?type=1&hideHead=true");
// showCustomConfirmOfWebViewDialog(
// context,
// "隐私协议",
// "/#/pages/agreement/agreement?type=1&hideHead=true");
Get.toNamed(
"/privacyPolicyPage");
},
child: Text(
'《隐私协议》'.tr,