更新登录布局
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.2 KiB |
BIN
assets/img/background.png
Normal file
BIN
assets/img/background.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
@@ -11,5 +11,36 @@
|
|||||||
"设置": "设置",
|
"设置": "设置",
|
||||||
"详情": "详情",
|
"详情": "详情",
|
||||||
"人员资料": "人员资料"
|
"人员资料": "人员资料"
|
||||||
}
|
},
|
||||||
|
"请输入手机号":"请输入手机号",
|
||||||
|
"请输入正确的手机号":"请输入正确的手机号",
|
||||||
|
"请输入密码":"请输入密码",
|
||||||
|
"密码格式提示":"1.密码长度必须至少8位\n2.密码需要字母加数字\n3.特殊字符和大写字母至少包含一个",
|
||||||
|
"请输入确认密码":"请输入确认密码",
|
||||||
|
"两次密码不一致":"两次密码不一致",
|
||||||
|
"请输入验证码":"请输入验证码",
|
||||||
|
"需要同意协议":"需要同意协议",
|
||||||
|
"请选择登录方式":"请选择登录方式",
|
||||||
|
"账户不能为空":"账户不能为空",
|
||||||
|
"密码不能为空":"密码不能为空",
|
||||||
|
"验证码不能为空":"验证码不能为空",
|
||||||
|
"密码登录":"密码登录",
|
||||||
|
"短信登录":"短信登录",
|
||||||
|
"获取验证码":"获取验证码",
|
||||||
|
"登录":"登录",
|
||||||
|
"找回密码":"找回密码",
|
||||||
|
"注册":"注册",
|
||||||
|
"我已阅读并同意":"我已阅读并同意",
|
||||||
|
"与":"与",
|
||||||
|
"《用户协议》":"《用户协议》",
|
||||||
|
"《隐私协议》":"《隐私协议》",
|
||||||
|
"注:首次登录会自动创建账号":"注:首次登录会自动创建账号",
|
||||||
|
"请输入新密码":"请输入新密码",
|
||||||
|
"确认新密码":"确认新密码",
|
||||||
|
"秒":"秒"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -21,6 +21,7 @@ class AppConstants {
|
|||||||
|
|
||||||
double smaller_text_fontSize = 18.rpx; //普通文字字号
|
double smaller_text_fontSize = 18.rpx; //普通文字字号
|
||||||
double small_text_fontSize = 20.rpx; //普通文字字号
|
double small_text_fontSize = 20.rpx; //普通文字字号
|
||||||
|
double middler_text_fontSize = 24.rpx; //普通文字字号
|
||||||
double normal_text_fontSize = 26.rpx; //普通文字字号
|
double normal_text_fontSize = 26.rpx; //普通文字字号
|
||||||
double title_text_fontSize = 30.rpx; //标题文字字号
|
double title_text_fontSize = 30.rpx; //标题文字字号
|
||||||
|
|
||||||
|
|||||||
@@ -19,13 +19,13 @@ class MHLanguageModel {
|
|||||||
|
|
||||||
factory MHLanguageModel.fromJson(Map<String, dynamic> json) {
|
factory MHLanguageModel.fromJson(Map<String, dynamic> json) {
|
||||||
try {
|
try {
|
||||||
return _$LanguageModelFromJson(json);
|
return _$MHLanguageModelFromJson(json);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return MHLanguageModel(); // 或者返回一个带有错误信息的特定实例
|
return MHLanguageModel(); // 或者返回一个带有错误信息的特定实例
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, dynamic> toJson() => _$LanguageModelToJson(this);
|
Map<String, dynamic> toJson() => _$MHLanguageModelToJson(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
class MHLanguageController extends GetControllerEx<MHLanguageModel> {
|
class MHLanguageController extends GetControllerEx<MHLanguageModel> {
|
||||||
|
|||||||
@@ -6,14 +6,14 @@ part of 'mh_language_controller.dart';
|
|||||||
// JsonSerializableGenerator
|
// JsonSerializableGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
MHLanguageModel _$LanguageModelFromJson(Map<String, dynamic> json) =>
|
MHLanguageModel _$MHLanguageModelFromJson(Map<String, dynamic> json) =>
|
||||||
MHLanguageModel()
|
MHLanguageModel()
|
||||||
..filename = json['filename'] as String?
|
..filename = json['filename'] as String?
|
||||||
..language_name = json['language_name'] as String?
|
..language_name = json['language_name'] as String?
|
||||||
..selected = json['selected'] as bool?
|
..selected = json['selected'] as bool?
|
||||||
..language_code = json['language_code'] as String?;
|
..language_code = json['language_code'] as String?;
|
||||||
|
|
||||||
Map<String, dynamic> _$LanguageModelToJson(MHLanguageModel instance) =>
|
Map<String, dynamic> _$MHLanguageModelToJson(MHLanguageModel instance) =>
|
||||||
<String, dynamic>{
|
<String, dynamic>{
|
||||||
'filename': instance.filename,
|
'filename': instance.filename,
|
||||||
'language_name': instance.language_name,
|
'language_name': instance.language_name,
|
||||||
|
|||||||
@@ -63,6 +63,8 @@ import 'package:vbvs_app/model/CustomThemeColor.dart';
|
|||||||
import 'package:vbvs_app/model/user_data.dart';
|
import 'package:vbvs_app/model/user_data.dart';
|
||||||
import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart';
|
import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/MattressControl.dart';
|
import 'package:vbvs_app/pages/mh_page/MattressControl.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/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';
|
||||||
@@ -279,7 +281,8 @@ class MyApp extends StatelessWidget {
|
|||||||
debugShowCheckedModeBanner: false,
|
debugShowCheckedModeBanner: false,
|
||||||
title: '',
|
title: '',
|
||||||
theme: themeController.currentTheme,
|
theme: themeController.currentTheme,
|
||||||
home: MainPageBBottomChange(),
|
// home: MainPageBBottomChange(),
|
||||||
|
initialRoute: "/loginPage",
|
||||||
onGenerateRoute: mhonGenerateRoute,
|
onGenerateRoute: mhonGenerateRoute,
|
||||||
initialBinding: BindingsBuilder(() => [
|
initialBinding: BindingsBuilder(() => [
|
||||||
// Get.lazyPut(() => UserInfoController()),
|
// Get.lazyPut(() => UserInfoController()),
|
||||||
@@ -316,6 +319,8 @@ class MyApp extends StatelessWidget {
|
|||||||
Get.lazyPut(() => DeviceShareListController()),
|
Get.lazyPut(() => DeviceShareListController()),
|
||||||
Get.lazyPut(() => DeviceCalibrationController()),
|
Get.lazyPut(() => DeviceCalibrationController()),
|
||||||
Get.lazyPut(() => RepairController()),
|
Get.lazyPut(() => RepairController()),
|
||||||
|
Get.lazyPut(() => MHTLoginController()),
|
||||||
|
Get.lazyPut(() => MHTRegisterController()),
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -367,7 +372,8 @@ class MyApp extends StatelessWidget {
|
|||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
final selectapp = "th";
|
// final selectapp = "th";
|
||||||
|
final selectapp = "mht";
|
||||||
// This widget is the root of your application.
|
// This widget is the root of your application.
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@@ -110,6 +110,7 @@ class _SingleBlueteethDeviceCompoentWidgetState
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
onCancel: () {
|
onCancel: () {
|
||||||
|
|
||||||
print('用户点击了取消');
|
print('用户点击了取消');
|
||||||
blueteethBindController.currentDeviceMac.value = "";
|
blueteethBindController.currentDeviceMac.value = "";
|
||||||
blueteethBindController.updateAll();
|
blueteethBindController.updateAll();
|
||||||
|
|||||||
@@ -154,11 +154,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:vbvs_app/pages/common/bezier_bottom_navigation_bar.dart';
|
import 'package:vbvs_app/pages/common/bezier_bottom_navigation_bar.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/MattressControl.dart';
|
import 'package:vbvs_app/pages/mh_page/MattressControl.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/find_password_page.dart';
|
|
||||||
import 'package:vbvs_app/pages/mh_page/new_Home_page.dart';
|
import 'package:vbvs_app/pages/mh_page/new_Home_page.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/new_mine_page.dart';
|
import 'package:vbvs_app/pages/mh_page/new_mine_page.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/register_page.dart';
|
import 'package:vbvs_app/pages/mh_page/user/page/register_page.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/score_page.dart';
|
|
||||||
|
|
||||||
class MainPageBBottomChange extends StatefulWidget {
|
class MainPageBBottomChange extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
|
|||||||
189
lib/pages/mh_page/user/controller/mht_login_controller.dart
Normal file
189
lib/pages/mh_page/user/controller/mht_login_controller.dart
Normal file
@@ -0,0 +1,189 @@
|
|||||||
|
import 'package:ef/ef.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutterflow_ui/flutterflow_ui.dart';
|
||||||
|
import 'package:fluwx/fluwx.dart';
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
import 'package:vbvs_app/common/util/MyUtils.dart';
|
||||||
|
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
|
||||||
|
import 'package:vbvs_app/pages/mh_page/user/controller/mht_register_controller.dart';
|
||||||
|
|
||||||
|
part 'mht_login_controller.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class LoginModel {
|
||||||
|
//版本id
|
||||||
|
int? loginStyle = 1; //1.密码登录 2.短信登录
|
||||||
|
|
||||||
|
String? account = '17649984946'; //账户
|
||||||
|
// String? account = '13953240733'; //账户
|
||||||
|
String? password = 'wyf123,.'; //密码
|
||||||
|
// String? account = '15255134931'; //账户
|
||||||
|
// String? password = 'mht123,.'; //密码
|
||||||
|
|
||||||
|
// String? account = '18607922869'; //账户
|
||||||
|
// String? password = '373068'; //密码
|
||||||
|
// String? account = ''; //账户
|
||||||
|
// String? password = ''; //密码
|
||||||
|
|
||||||
|
String? phone; //手机号
|
||||||
|
String? code; //验证码
|
||||||
|
|
||||||
|
String? register_code;
|
||||||
|
|
||||||
|
bool? showPd = true;
|
||||||
|
|
||||||
|
int? forceLogin = 0;
|
||||||
|
|
||||||
|
bool? isIos; //是否为ios设备
|
||||||
|
|
||||||
|
bool? isWeChatNotInstalled; //是否安装微信
|
||||||
|
|
||||||
|
LoginModel();
|
||||||
|
|
||||||
|
static LoginModel fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$LoginModelFromJson(json);
|
||||||
|
Map<String, dynamic> toJson() => _$LoginModelToJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
class MHTLoginController extends GetControllerEx<LoginModel> {
|
||||||
|
// 初始化实例
|
||||||
|
final Fluwx fluwx = Fluwx();
|
||||||
|
// 微信监听返回值
|
||||||
|
FluwxCancelable? fluwxCancelable;
|
||||||
|
|
||||||
|
MHTLoginController() {
|
||||||
|
attr = GetModel(LoginModel()).obs;
|
||||||
|
}
|
||||||
|
|
||||||
|
MHTRegisterController registerController = Get.find();
|
||||||
|
|
||||||
|
//登录
|
||||||
|
Future<String> login(BuildContext context) async {
|
||||||
|
String message = '';
|
||||||
|
String account = '';
|
||||||
|
String password = '';
|
||||||
|
if (model.loginStyle == null) {
|
||||||
|
message = '请选择登录方式'.tr;
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
if (model.loginStyle == 1) {
|
||||||
|
//账号登录
|
||||||
|
if (model.account == null || model.account!.isEmpty) {
|
||||||
|
message = '账户不能为空'.tr;
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
if (model.password == null || model.password!.isEmpty) {
|
||||||
|
message = '密码不能为空'.tr;
|
||||||
|
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
account = model.account!;
|
||||||
|
password = model.password!;
|
||||||
|
}
|
||||||
|
if (model.loginStyle == 2) {
|
||||||
|
//账号登录
|
||||||
|
if (model.phone == null || model.phone!.isEmpty) {
|
||||||
|
message = '请输入手机号'.tr;
|
||||||
|
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
if (!MyUtils.isValidPhoneNumber(model.phone!)) {
|
||||||
|
message = '请输入正确的手机号'.tr;
|
||||||
|
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
if (model.code == null || model.code!.isEmpty) {
|
||||||
|
message = '验证码不能为空'.tr;
|
||||||
|
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
account = model.phone!;
|
||||||
|
password = model.code!;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (registerController.model.register_agree == null ||
|
||||||
|
registerController.model.register_agree != true) {
|
||||||
|
message = "需要同意协议".tr;
|
||||||
|
showToast(message);
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
model.forceLogin = 0;
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<String> getCode(BuildContext context) async {
|
||||||
|
String message = "";
|
||||||
|
if (registerController.model.register_agree == null ||
|
||||||
|
registerController.model.register_agree != true) {
|
||||||
|
message = "需要同意协议".tr;
|
||||||
|
showToast(message);
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
if (model.phone == null || model.phone!.isEmpty) {
|
||||||
|
message = "请输入手机号".tr;
|
||||||
|
showToast(message);
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
if (!MyUtils.isValidPhoneNumber(model.phone!)) {
|
||||||
|
message = '请输入正确的手机号'.tr;
|
||||||
|
showToast(message);
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
//微信登录
|
||||||
|
Future<void> wxLoginSendAuth() async {
|
||||||
|
/*
|
||||||
|
1、目前移动应用上微信登录只提供原生的登录方式,需要用户安装微信客户端才能配合使用。
|
||||||
|
2、对于Android应用,建议总是显示微信登录按钮,当用户手机没有安装微信客户端时,请引导用户下载安装微信客户端。
|
||||||
|
3、对于iOS应用,考虑到iOS应用商店审核指南中的相关规定,建议开发者接入微信登录时,先检测用户手机是否已安装微信客户端
|
||||||
|
(使用sdk中isWXAppInstalled函数 ),对未安装的用户隐藏微信登录按钮,只提供其他登录方式(比如手机号注册登录、游客登录等)
|
||||||
|
*/
|
||||||
|
if (isAndroid) {
|
||||||
|
bool isWeChatInstalled = await fluwx.isWeChatInstalled;
|
||||||
|
debugPrint('is wechat installed: $isWeChatInstalled');
|
||||||
|
if (!isWeChatInstalled) {
|
||||||
|
showToast("请先安装微信APP,再使用微信登录");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fluwx
|
||||||
|
.authBy(
|
||||||
|
which: NormalAuth(
|
||||||
|
scope: 'snsapi_userinfo',
|
||||||
|
state: 'wechat_sdk_zhmht_wxlogin',
|
||||||
|
))
|
||||||
|
.then((data) {
|
||||||
|
//返回true表示成功或者false表示失败,这边没有意义从login_controller页面构造函数监听中去处理
|
||||||
|
debugPrint('msg:$data');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//退出登录
|
||||||
|
Future<void> logout() async {
|
||||||
|
// await repository.logout();
|
||||||
|
}
|
||||||
|
|
||||||
|
loginByWechatCode(String code) async {
|
||||||
|
// return await repository.loginByWechatCode(code);
|
||||||
|
}
|
||||||
|
|
||||||
|
//注销账号
|
||||||
|
deletedAccount() async {
|
||||||
|
// return await repository.deletedAccount();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'mht_login_controller.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
LoginModel _$LoginModelFromJson(Map<String, dynamic> json) => LoginModel()
|
||||||
|
..loginStyle = (json['loginStyle'] as num?)?.toInt()
|
||||||
|
..account = json['account'] as String?
|
||||||
|
..password = json['password'] as String?
|
||||||
|
..phone = json['phone'] as String?
|
||||||
|
..code = json['code'] as String?
|
||||||
|
..register_code = json['register_code'] as String?
|
||||||
|
..showPd = json['showPd'] as bool?
|
||||||
|
..forceLogin = (json['forceLogin'] as num?)?.toInt()
|
||||||
|
..isIos = json['isIos'] as bool?
|
||||||
|
..isWeChatNotInstalled = json['isWeChatNotInstalled'] as bool?;
|
||||||
|
|
||||||
|
Map<String, dynamic> _$LoginModelToJson(LoginModel instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'loginStyle': instance.loginStyle,
|
||||||
|
'account': instance.account,
|
||||||
|
'password': instance.password,
|
||||||
|
'phone': instance.phone,
|
||||||
|
'code': instance.code,
|
||||||
|
'register_code': instance.register_code,
|
||||||
|
'showPd': instance.showPd,
|
||||||
|
'forceLogin': instance.forceLogin,
|
||||||
|
'isIos': instance.isIos,
|
||||||
|
'isWeChatNotInstalled': instance.isWeChatNotInstalled,
|
||||||
|
};
|
||||||
131
lib/pages/mh_page/user/controller/mht_register_controller.dart
Normal file
131
lib/pages/mh_page/user/controller/mht_register_controller.dart
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
import 'package:ef/ef.dart';
|
||||||
|
import 'package:flutter/src/widgets/framework.dart';
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
import 'package:vbvs_app/common/util/MyUtils.dart';
|
||||||
|
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
|
||||||
|
|
||||||
|
part 'mht_register_controller.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class RegisterModel {
|
||||||
|
String? register_phone; //注册手机号
|
||||||
|
String? register_pd; //注册密码
|
||||||
|
String? register_confirm_pd; //注册确认密码
|
||||||
|
String? register_code; //注册验证码
|
||||||
|
|
||||||
|
bool? register_agree = false; //注册协议
|
||||||
|
bool? save_password = false; //记住密码
|
||||||
|
|
||||||
|
bool? pdshow = true; //是否显示密码
|
||||||
|
bool? cpdshow = true; //是否显示密码
|
||||||
|
|
||||||
|
RegisterModel();
|
||||||
|
static RegisterModel fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$RegisterModelFromJson(json);
|
||||||
|
Map<String, dynamic> toJson() => _$RegisterModelToJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
class MHTRegisterController extends GetControllerEx<RegisterModel> {
|
||||||
|
MHTRegisterController() {
|
||||||
|
attr = GetModel(RegisterModel()).obs;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<String> registerUser(BuildContext context) async {
|
||||||
|
String message = "";
|
||||||
|
if (model.register_phone == null || model.register_phone!.isEmpty) {
|
||||||
|
message = "请输入手机号".tr;
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
if (!MyUtils.isValidPhoneNumber(model.register_phone!)) {
|
||||||
|
message = '请输入正确的手机号'.tr;
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
if (model.register_pd == null || model.register_pd!.isEmpty) {
|
||||||
|
message = "请输入密码".tr;
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
String passwordMsg = "密码格式提示".tr;
|
||||||
|
bool hasUppercase = model.register_pd!.contains(RegExp(r'[A-Z]'));
|
||||||
|
bool hasDigit = model.register_pd!.contains(RegExp(r'[0-9]'));
|
||||||
|
bool hasSpecialCharacters =
|
||||||
|
model.register_pd!.contains(RegExp(r'[!@#$%^&*(),.?":{}|<>]'));
|
||||||
|
bool hasLetter = model.register_pd!.contains(RegExp(r'[a-zA-Z]'));
|
||||||
|
|
||||||
|
if (model.register_pd!.length < 8) {
|
||||||
|
message = passwordMsg;
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasLetter || !hasDigit) {
|
||||||
|
message = passwordMsg;
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(hasSpecialCharacters || hasUppercase)) {
|
||||||
|
message = passwordMsg;
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
if (model.register_confirm_pd == null ||
|
||||||
|
model.register_confirm_pd!.isEmpty) {
|
||||||
|
message = "请输入确认密码".tr;
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
if (model.register_pd != model.register_confirm_pd) {
|
||||||
|
message = "两次密码不一致".tr;
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
if (model.register_code == null || model.register_code!.isEmpty) {
|
||||||
|
message = "请输入验证码".tr;
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
if (model.register_agree == null || model.register_agree != true) {
|
||||||
|
message = "需要同意协议".tr;
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
// message = await repository.createUser(
|
||||||
|
// model.register_pd!, model.register_phone!, model.register_code!);
|
||||||
|
// if (message.isNotEmpty) {
|
||||||
|
// showToast(message);
|
||||||
|
// return message;
|
||||||
|
// }
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<String> getCode(BuildContext context) async {
|
||||||
|
String message = "";
|
||||||
|
if (model.register_phone == null || model.register_phone!.isEmpty) {
|
||||||
|
message = "请输入手机号".tr;
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
if (!MyUtils.isValidPhoneNumber(model.register_phone!)) {
|
||||||
|
message = '请输入正确的手机号'.tr;
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: message, textColor: stringToColor("#FF7159"));
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'mht_register_controller.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
RegisterModel _$RegisterModelFromJson(Map<String, dynamic> json) =>
|
||||||
|
RegisterModel()
|
||||||
|
..register_phone = json['register_phone'] as String?
|
||||||
|
..register_pd = json['register_pd'] as String?
|
||||||
|
..register_confirm_pd = json['register_confirm_pd'] as String?
|
||||||
|
..register_code = json['register_code'] as String?
|
||||||
|
..register_agree = json['register_agree'] as bool?
|
||||||
|
..pdshow = json['pdshow'] as bool?
|
||||||
|
..cpdshow = json['cpdshow'] as bool?;
|
||||||
|
|
||||||
|
Map<String, dynamic> _$RegisterModelToJson(RegisterModel instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'register_phone': instance.register_phone,
|
||||||
|
'register_pd': instance.register_pd,
|
||||||
|
'register_confirm_pd': instance.register_confirm_pd,
|
||||||
|
'register_code': instance.register_code,
|
||||||
|
'register_agree': instance.register_agree,
|
||||||
|
'pdshow': instance.pdshow,
|
||||||
|
'cpdshow': instance.cpdshow,
|
||||||
|
};
|
||||||
@@ -58,7 +58,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
children: [
|
children: [
|
||||||
// 中间居中的标题
|
// 中间居中的标题
|
||||||
Text(
|
Text(
|
||||||
'找回密码',
|
'找回密码'.tr,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
@@ -84,9 +84,6 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
child: Column(
|
child: Column(
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
children: [
|
children: [
|
||||||
// TitleComponentWidget(
|
|
||||||
// titleName: '找回密码',
|
|
||||||
// ),
|
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
padding: EdgeInsetsDirectional.fromSTEB(
|
||||||
@@ -134,17 +131,17 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
hintText: '请输入手机号',
|
hintText: '请输入手机号'.tr,
|
||||||
hintStyle: FlutterFlowTheme.of(
|
hintStyle: FlutterFlowTheme.of(
|
||||||
context)
|
context)
|
||||||
.labelMedium
|
.labelMedium
|
||||||
.override(
|
.override(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Color(0xFF929699),
|
color: Color(0xFF929699),
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
enabledBorder: InputBorder.none,
|
enabledBorder: InputBorder.none,
|
||||||
@@ -155,7 +152,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
contentPadding:
|
contentPadding:
|
||||||
EdgeInsetsDirectional
|
EdgeInsetsDirectional
|
||||||
.fromSTEB(20.rpx, 0, 0,
|
.fromSTEB(20.rpx, 0, 0,
|
||||||
10.rpx),
|
0.rpx),
|
||||||
),
|
),
|
||||||
style:
|
style:
|
||||||
FlutterFlowTheme.of(context)
|
FlutterFlowTheme.of(context)
|
||||||
@@ -163,7 +160,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -216,7 +213,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
letterSpacing:
|
letterSpacing:
|
||||||
0,
|
0,
|
||||||
),
|
),
|
||||||
hintText: '请输验证码',
|
hintText: '请输验证码'.tr,
|
||||||
hintStyle:
|
hintStyle:
|
||||||
FlutterFlowTheme.of(
|
FlutterFlowTheme.of(
|
||||||
context)
|
context)
|
||||||
@@ -227,7 +224,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
color: Color(
|
color: Color(
|
||||||
0xFF929699),
|
0xFF929699),
|
||||||
fontSize:
|
fontSize:
|
||||||
20.rpx,
|
26.rpx,
|
||||||
letterSpacing:
|
letterSpacing:
|
||||||
0,
|
0,
|
||||||
),
|
),
|
||||||
@@ -242,7 +239,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
contentPadding:
|
contentPadding:
|
||||||
EdgeInsetsDirectional
|
EdgeInsetsDirectional
|
||||||
.fromSTEB(20.rpx,
|
.fromSTEB(20.rpx,
|
||||||
0, 0, 10.rpx),
|
0, 0, 0.rpx),
|
||||||
),
|
),
|
||||||
style: FlutterFlowTheme.of(
|
style: FlutterFlowTheme.of(
|
||||||
context)
|
context)
|
||||||
@@ -250,7 +247,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -259,18 +256,19 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
),
|
),
|
||||||
Align(
|
Align(
|
||||||
alignment: AlignmentDirectional(
|
alignment: AlignmentDirectional(
|
||||||
0.2, 0.3),
|
0.4, 0.1),
|
||||||
child: Container(
|
child: Container(
|
||||||
width: 3,
|
width: 1.rpx,
|
||||||
height: 30,
|
height: 38.rpx,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Color(0xFFCCCCCC),
|
color:
|
||||||
|
stringToColor("#929699"),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Align(
|
Align(
|
||||||
alignment:
|
alignment:
|
||||||
AlignmentDirectional(0.9, 0),
|
AlignmentDirectional(1.2, 0),
|
||||||
child: Container(
|
child: Container(
|
||||||
width:
|
width:
|
||||||
bodysize!.maxWidth * 0.157,
|
bodysize!.maxWidth * 0.157,
|
||||||
@@ -326,10 +324,9 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
.value ==
|
.value ==
|
||||||
0
|
0
|
||||||
? '获取验证码'
|
? '获取验证码'
|
||||||
: '${countdownController.countdown.value}秒',
|
: '${countdownController.countdown.value}' +
|
||||||
|
'秒'.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily:
|
|
||||||
'Readex Pro',
|
|
||||||
color:
|
color:
|
||||||
Color(0xFF333333),
|
Color(0xFF333333),
|
||||||
fontSize: 20.rpx,
|
fontSize: 20.rpx,
|
||||||
@@ -381,10 +378,10 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
hintText: '请输入新密码',
|
hintText: '请输入新密码'.tr,
|
||||||
hintStyle: FlutterFlowTheme
|
hintStyle: FlutterFlowTheme
|
||||||
.of(context)
|
.of(context)
|
||||||
.labelMedium
|
.labelMedium
|
||||||
@@ -393,7 +390,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
color:
|
color:
|
||||||
Color(0xFF929699),
|
Color(0xFF929699),
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
enabledBorder:
|
enabledBorder:
|
||||||
@@ -406,7 +403,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
contentPadding:
|
contentPadding:
|
||||||
EdgeInsetsDirectional
|
EdgeInsetsDirectional
|
||||||
.fromSTEB(
|
.fromSTEB(
|
||||||
10, 10, 0, 0),
|
10, 26.rpx, 0, 0),
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
// 根据 pdshow 控制图标
|
// 根据 pdshow 控制图标
|
||||||
@@ -431,7 +428,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -477,7 +474,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
hintText: '确认新密码',
|
hintText: '确认新密码',
|
||||||
@@ -489,7 +486,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
color:
|
color:
|
||||||
Color(0xFF929699),
|
Color(0xFF929699),
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
enabledBorder:
|
enabledBorder:
|
||||||
@@ -502,7 +499,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
contentPadding:
|
contentPadding:
|
||||||
EdgeInsetsDirectional
|
EdgeInsetsDirectional
|
||||||
.fromSTEB(
|
.fromSTEB(
|
||||||
10, 10, 0, 0),
|
10, 26.rpx, 0, 0),
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
// 根据 pdshow 控制图标
|
// 根据 pdshow 控制图标
|
||||||
@@ -527,7 +524,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -608,7 +605,7 @@ class FindPasswordPage extends GetView<FindPasswordController> {
|
|||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Color(0XFF003058),
|
color: Color(0XFF003058),
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
fontSize: 30.rpx,
|
fontSize: 26.rpx,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
2151
lib/pages/mh_page/user/page/mht_login_page.dart
Normal file
2151
lib/pages/mh_page/user/page/mht_login_page.dart
Normal file
File diff suppressed because it is too large
Load Diff
@@ -12,36 +12,11 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
BoxConstraints? bodysize;
|
BoxConstraints? bodysize;
|
||||||
|
|
||||||
final ScrollController _scrollController = ScrollController();
|
final ScrollController _scrollController = ScrollController();
|
||||||
// final FocusNode _focusNode1 = FocusNode();
|
|
||||||
// final FocusNode _focusNode2 = FocusNode();
|
|
||||||
// final FocusNode _focusNode3 = FocusNode();
|
|
||||||
// final FocusNode _focusNode4 = FocusNode();
|
|
||||||
|
|
||||||
RegisterPage() {
|
RegisterPage() {
|
||||||
controller.model.pdshow = true;
|
controller.model.pdshow = true;
|
||||||
controller.model.cpdshow = true;
|
controller.model.cpdshow = true;
|
||||||
Get.put(RegisterController());
|
Get.put(RegisterController());
|
||||||
|
|
||||||
// _focusNode1.addListener(() {
|
|
||||||
// if (_focusNode1.hasFocus) {
|
|
||||||
// MyUtils.scrollToFocusedInput(_focusNode1, _scrollController);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// _focusNode2.addListener(() {
|
|
||||||
// if (_focusNode2.hasFocus) {
|
|
||||||
// MyUtils.scrollToFocusedInput(_focusNode2, _scrollController);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// _focusNode3.addListener(() {
|
|
||||||
// if (_focusNode3.hasFocus) {
|
|
||||||
// MyUtils.scrollToFocusedInput(_focusNode3, _scrollController);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// _focusNode4.addListener(() {
|
|
||||||
// if (_focusNode4.hasFocus) {
|
|
||||||
// MyUtils.scrollToFocusedInput(_focusNode4, _scrollController);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -146,17 +121,17 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
.labelMedium
|
.labelMedium
|
||||||
.override(
|
.override(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
hintText: '请输入手机号',
|
hintText: '请输入手机号'.tr,
|
||||||
hintStyle:
|
hintStyle:
|
||||||
FlutterFlowTheme.of(context)
|
FlutterFlowTheme.of(context)
|
||||||
.labelMedium
|
.labelMedium
|
||||||
.override(
|
.override(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Color(0xFF929699),
|
color: Color(0xFF929699),
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
enabledBorder: InputBorder.none,
|
enabledBorder: InputBorder.none,
|
||||||
@@ -172,7 +147,7 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
.bodyMedium
|
.bodyMedium
|
||||||
.override(
|
.override(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -214,17 +189,17 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
hintText: '请输入密码',
|
hintText: '请输入密码'.tr,
|
||||||
hintStyle: FlutterFlowTheme.of(
|
hintStyle: FlutterFlowTheme.of(
|
||||||
context)
|
context)
|
||||||
.labelMedium
|
.labelMedium
|
||||||
.override(
|
.override(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Color(0xFF929699),
|
color: Color(0xFF929699),
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
enabledBorder: InputBorder.none,
|
enabledBorder: InputBorder.none,
|
||||||
@@ -234,8 +209,8 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
InputBorder.none,
|
InputBorder.none,
|
||||||
contentPadding:
|
contentPadding:
|
||||||
EdgeInsetsDirectional
|
EdgeInsetsDirectional
|
||||||
.fromSTEB(20.rpx,
|
.fromSTEB(
|
||||||
20.rpx, 0, 0),
|
10, 26.rpx, 0, 0),
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
// 根据 pdshow 控制图标
|
// 根据 pdshow 控制图标
|
||||||
@@ -260,7 +235,7 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -303,17 +278,17 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
hintText: '确认密码',
|
hintText: '请输入确认密码'.tr,
|
||||||
hintStyle: FlutterFlowTheme.of(
|
hintStyle: FlutterFlowTheme.of(
|
||||||
context)
|
context)
|
||||||
.labelMedium
|
.labelMedium
|
||||||
.override(
|
.override(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Color(0xFF929699),
|
color: Color(0xFF929699),
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
enabledBorder: InputBorder.none,
|
enabledBorder: InputBorder.none,
|
||||||
@@ -323,8 +298,8 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
InputBorder.none,
|
InputBorder.none,
|
||||||
contentPadding:
|
contentPadding:
|
||||||
EdgeInsetsDirectional
|
EdgeInsetsDirectional
|
||||||
.fromSTEB(20.rpx,
|
.fromSTEB(
|
||||||
20.rpx, 0, 0),
|
10, 26.rpx, 0, 0),
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
// 根据 pdshow 控制图标
|
// 根据 pdshow 控制图标
|
||||||
@@ -349,7 +324,7 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -395,10 +370,10 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
hintText: '请输验证码',
|
hintText: '请输入验证码',
|
||||||
hintStyle: FlutterFlowTheme
|
hintStyle: FlutterFlowTheme
|
||||||
.of(context)
|
.of(context)
|
||||||
.labelMedium
|
.labelMedium
|
||||||
@@ -407,7 +382,7 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
color:
|
color:
|
||||||
Color(0xFF929699),
|
Color(0xFF929699),
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
enabledBorder:
|
enabledBorder:
|
||||||
@@ -420,7 +395,7 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
contentPadding:
|
contentPadding:
|
||||||
EdgeInsetsDirectional
|
EdgeInsetsDirectional
|
||||||
.fromSTEB(20.rpx, 0,
|
.fromSTEB(20.rpx, 0,
|
||||||
0, 10.rpx),
|
0, 0.rpx),
|
||||||
),
|
),
|
||||||
style:
|
style:
|
||||||
FlutterFlowTheme.of(context)
|
FlutterFlowTheme.of(context)
|
||||||
@@ -428,7 +403,7 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
fontSize: 20.rpx,
|
fontSize: 26.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -437,18 +412,18 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
),
|
),
|
||||||
Align(
|
Align(
|
||||||
alignment:
|
alignment:
|
||||||
AlignmentDirectional(0.2, 0.1),
|
AlignmentDirectional(0.4, 0.1),
|
||||||
child: Container(
|
child: Container(
|
||||||
width: 3,
|
width: 1.rpx,
|
||||||
height: 30,
|
height: 38.rpx,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Color(0xFFCCCCCC),
|
color: stringToColor("#929699"),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Align(
|
Align(
|
||||||
alignment:
|
alignment:
|
||||||
AlignmentDirectional(0.9, 0),
|
AlignmentDirectional(1.2, 0),
|
||||||
child: Container(
|
child: Container(
|
||||||
width: bodysize!.maxWidth * 0.157,
|
width: bodysize!.maxWidth * 0.157,
|
||||||
height: bodysize!.maxHeight * 0.014,
|
height: bodysize!.maxHeight * 0.014,
|
||||||
@@ -500,8 +475,9 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
.countdown
|
.countdown
|
||||||
.value ==
|
.value ==
|
||||||
0
|
0
|
||||||
? '获取验证码'
|
? '获取验证码'.tr
|
||||||
: '${countdownController.countdown.value}秒',
|
: '${countdownController.countdown.value}' +
|
||||||
|
'秒'.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Color(0xFF333333),
|
color: Color(0xFF333333),
|
||||||
@@ -652,7 +628,7 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
AlignmentDirectional(
|
AlignmentDirectional(
|
||||||
0, 0),
|
0, 0),
|
||||||
child: Text(
|
child: Text(
|
||||||
'我已阅读并同意',
|
'我已阅读并同意'.tr,
|
||||||
style: FlutterFlowTheme
|
style: FlutterFlowTheme
|
||||||
.of(context)
|
.of(context)
|
||||||
.bodyMedium
|
.bodyMedium
|
||||||
@@ -679,15 +655,15 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
"/#/pages/agreement/agreement?type=2&hideHead=true");
|
"/#/pages/agreement/agreement?type=2&hideHead=true");
|
||||||
},
|
},
|
||||||
child: Text(
|
child: Text(
|
||||||
'《用户协议》',
|
'《用户协议》'.tr,
|
||||||
style: FlutterFlowTheme
|
style: FlutterFlowTheme
|
||||||
.of(context)
|
.of(context)
|
||||||
.bodyMedium
|
.bodyMedium
|
||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
color: Color(
|
color: stringToColor(
|
||||||
0xFF1890FF),
|
"FF9F66"),
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
letterSpacing:
|
letterSpacing:
|
||||||
0,
|
0,
|
||||||
@@ -700,7 +676,7 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
AlignmentDirectional(
|
AlignmentDirectional(
|
||||||
0, 0),
|
0, 0),
|
||||||
child: Text(
|
child: Text(
|
||||||
'与',
|
'与'.tr,
|
||||||
style: FlutterFlowTheme
|
style: FlutterFlowTheme
|
||||||
.of(context)
|
.of(context)
|
||||||
.bodyMedium
|
.bodyMedium
|
||||||
@@ -727,15 +703,15 @@ class RegisterPage extends GetView<RegisterController> {
|
|||||||
"/#/pages/agreement/agreement?type=1&hideHead=true");
|
"/#/pages/agreement/agreement?type=1&hideHead=true");
|
||||||
},
|
},
|
||||||
child: Text(
|
child: Text(
|
||||||
'《隐私协议》',
|
'《隐私协议》'.tr,
|
||||||
style: FlutterFlowTheme
|
style: FlutterFlowTheme
|
||||||
.of(context)
|
.of(context)
|
||||||
.bodyMedium
|
.bodyMedium
|
||||||
.override(
|
.override(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
color: Color(
|
color: stringToColor(
|
||||||
0xFF1890FF),
|
"FF9F66"),
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
letterSpacing:
|
letterSpacing:
|
||||||
0,
|
0,
|
||||||
@@ -1,10 +1,8 @@
|
|||||||
import 'package:ef/ef.dart';
|
import 'package:ef/ef.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:path/path.dart';
|
|
||||||
import 'package:vbvs_app/controller/mh_controller/muser_info_controller.dart';
|
import 'package:vbvs_app/controller/mh_controller/muser_info_controller.dart';
|
||||||
|
|
||||||
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
|
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
|
||||||
|
import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/HomeDeviceType.dart';
|
import 'package:vbvs_app/pages/mh_page/HomeDeviceType.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/LanguagePage.dart';
|
import 'package:vbvs_app/pages/mh_page/LanguagePage.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/address_list_page.dart';
|
import 'package:vbvs_app/pages/mh_page/address_list_page.dart';
|
||||||
@@ -15,16 +13,17 @@ import 'package:vbvs_app/pages/mh_page/device_people_info.dart';
|
|||||||
import 'package:vbvs_app/pages/mh_page/edit_bed.dart';
|
import 'package:vbvs_app/pages/mh_page/edit_bed.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/edit_userinfo_page.dart';
|
import 'package:vbvs_app/pages/mh_page/edit_userinfo_page.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/experience_store_page.dart';
|
import 'package:vbvs_app/pages/mh_page/experience_store_page.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/find_password_page.dart';
|
|
||||||
import 'package:vbvs_app/pages/mh_page/issue_list_page.dart';
|
import 'package:vbvs_app/pages/mh_page/issue_list_page.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/my_experience_page.dart';
|
import 'package:vbvs_app/pages/mh_page/my_experience_page.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/people_info.dart';
|
import 'package:vbvs_app/pages/mh_page/people_info.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/register_page.dart';
|
import 'package:vbvs_app/pages/mh_page/user/page/register_page.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/repair_history_page.dart';
|
import 'package:vbvs_app/pages/mh_page/repair_history_page.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/repair_list.dart';
|
import 'package:vbvs_app/pages/mh_page/repair_list.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/room_picker.dart';
|
import 'package:vbvs_app/pages/mh_page/room_picker.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/sleep_habit.dart';
|
import 'package:vbvs_app/pages/mh_page/sleep_habit.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/smys.dart';
|
import 'package:vbvs_app/pages/mh_page/smys.dart';
|
||||||
|
import 'package:vbvs_app/pages/mh_page/user/page/find_password_page.dart';
|
||||||
|
import 'package:vbvs_app/pages/mh_page/user/page/mht_login_page.dart';
|
||||||
|
|
||||||
import '../pages/mh_page/bluetooth.dart';
|
import '../pages/mh_page/bluetooth.dart';
|
||||||
import '../pages/mh_page/edit_address_page.dart';
|
import '../pages/mh_page/edit_address_page.dart';
|
||||||
@@ -34,6 +33,7 @@ import '../pages/mh_page/new_settingPage.dart';
|
|||||||
ThemeController themeController = Get.find();
|
ThemeController themeController = Get.find();
|
||||||
|
|
||||||
var mhroutes = {
|
var mhroutes = {
|
||||||
|
"/mianPageBottomChange": (contxt) => MainPageBBottomChange(),
|
||||||
"/homeDeviceType": (contxt) => HomeDeviceType(),
|
"/homeDeviceType": (contxt) => HomeDeviceType(),
|
||||||
"/editUserInfoPage": (contxt) => EditUserInfoPage(),
|
"/editUserInfoPage": (contxt) => EditUserInfoPage(),
|
||||||
"/peopleInfoPage": (contxt) => PeopleInfoPage(),
|
"/peopleInfoPage": (contxt) => PeopleInfoPage(),
|
||||||
@@ -58,7 +58,8 @@ var mhroutes = {
|
|||||||
BookSuccessPage(data: arguments["data"]),
|
BookSuccessPage(data: arguments["data"]),
|
||||||
"/myExperiencePage": (context) => MyExperiencePage(),
|
"/myExperiencePage": (context) => MyExperiencePage(),
|
||||||
"/registerPage": (context) => RegisterPage(),
|
"/registerPage": (context) => RegisterPage(),
|
||||||
"/findPasswordPage": (context) => FindPasswordPage(),
|
"/findPasswordPage": (context) => FindPasswordPage(),
|
||||||
|
"/loginPage": (context) => MHTLoginPage(),
|
||||||
};
|
};
|
||||||
var mhonGenerateRoute = (RouteSettings settings) {
|
var mhonGenerateRoute = (RouteSettings settings) {
|
||||||
final String? name = settings.name; // 获取路由名称,如 /news 或 /search
|
final String? name = settings.name; // 获取路由名称,如 /news 或 /search
|
||||||
|
|||||||
Reference in New Issue
Block a user