更新登录布局

This commit is contained in:
wyf
2025-06-07 18:00:29 +08:00
parent 48b3b06f17
commit 71a4504f78
17 changed files with 2651 additions and 108 deletions

View File

@@ -0,0 +1,627 @@
import 'package:ef/ef.dart';
import 'package:flutter/material.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/tool/CustomCard.dart';
import 'package:vbvs_app/controller/mh_controller/find_password_controller.dart';
import 'package:vbvs_app/controller/time/countdown_controller.dart';
class FindPasswordPage extends GetView<FindPasswordController> {
final scaffoldKey = GlobalKey<ScaffoldState>();
BoxConstraints? bodysize;
final ScrollController _scrollController = ScrollController();
final FocusNode _focusNode1 = FocusNode();
final FocusNode _focusNode2 = FocusNode();
FindPasswordPage() {
controller.model.pdshow = true;
controller.model.cpdshow = true;
_focusNode1.addListener(() {
if (_focusNode1.hasFocus) {
MyUtils.scrollToFocusedInput(_focusNode1, _scrollController);
}
});
_focusNode2.addListener(() {
if (_focusNode2.hasFocus) {
MyUtils.scrollToFocusedInput(_focusNode2, _scrollController);
}
});
}
@override
Widget build(BuildContext context) {
return LayoutBuilder(builder: (context, cc) {
bodysize = cc;
return GestureDetector(
onTap: () => FocusScope.of(context).unfocus(),
child: Container(
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/images/new_background.png'), // 本地图片
fit: BoxFit.fill, // 填满整个 Container
),
),
child: Scaffold(
// key: scaffoldKey,
backgroundColor: Colors.transparent,
appBar: AppBar(
backgroundColor: Colors.transparent,
automaticallyImplyLeading: false,
iconTheme: IconThemeData(color: Colors.white),
titleSpacing: 0,
title: Container(
width: double.infinity,
height: 180.rpx,
child: Stack(
alignment: Alignment.center,
children: [
// 中间居中的标题
Text(
'找回密码'.tr,
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: 30.rpx,
),
),
// 左侧图标
Positioned(
left: 20.rpx,
child: returnIconButtomNew,
),
],
),
),
actions: [],
centerTitle: false,
),
body: SingleChildScrollView(
controller: _scrollController,
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 1,
child: Column(
mainAxisSize: MainAxisSize.max,
children: [
Expanded(
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
98.rpx, 0, 98.rpx, 0),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.886,
decoration: BoxDecoration(),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 1,
decoration: BoxDecoration(),
child: Column(
mainAxisSize: MainAxisSize.max,
children: [
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 184.rpx, 0, 0),
child: Container(
width: bodysize!.maxWidth,
height: 92.rpx,
decoration: BoxDecoration(),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.06,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius:
BorderRadius.circular(12),
),
child: Align(
alignment:
AlignmentDirectional(0, 0),
child: TextFormField(
// focusNode: _focusNode1,
onChanged: (value) {
controller.model.phone = value;
},
// autofocus: true,
obscureText: false,
decoration: InputDecoration(
labelStyle:
FlutterFlowTheme.of(context)
.labelMedium
.override(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
hintText: '请输入手机号'.tr,
hintStyle: FlutterFlowTheme.of(
context)
.labelMedium
.override(
fontFamily: 'Readex Pro',
color: Color(0xFF929699),
fontSize: 26.rpx,
letterSpacing: 0,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
errorBorder: InputBorder.none,
focusedErrorBorder:
InputBorder.none,
contentPadding:
EdgeInsetsDirectional
.fromSTEB(20.rpx, 0, 0,
0.rpx),
),
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
),
),
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 32.rpx, 0, 0),
child: Container(
width: bodysize!.maxWidth,
height: 92.rpx,
decoration: BoxDecoration(),
child: Stack(
children: [
Align(
alignment:
AlignmentDirectional(0, 0),
child: Container(
width: bodysize!.maxWidth,
height: 92.rpx,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius:
BorderRadius.circular(12),
),
child: Align(
alignment:
AlignmentDirectional(
0, 0),
child: TextFormField(
// autofocus: true,
// focusNode: _focusNode2,
onChanged: (value) {
controller.model.code =
value;
},
obscureText: false,
decoration: InputDecoration(
labelStyle:
FlutterFlowTheme.of(
context)
.labelMedium
.override(
fontFamily:
'Readex Pro',
fontSize:
20.rpx,
letterSpacing:
0,
),
hintText: '请输验证码'.tr,
hintStyle:
FlutterFlowTheme.of(
context)
.labelMedium
.override(
fontFamily:
'Readex Pro',
color: Color(
0xFF929699),
fontSize:
26.rpx,
letterSpacing:
0,
),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
errorBorder:
InputBorder.none,
focusedErrorBorder:
InputBorder.none,
contentPadding:
EdgeInsetsDirectional
.fromSTEB(20.rpx,
0, 0, 0.rpx),
),
style: FlutterFlowTheme.of(
context)
.bodyMedium
.override(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
),
),
),
),
Align(
alignment: AlignmentDirectional(
0.4, 0.1),
child: Container(
width: 1.rpx,
height: 38.rpx,
decoration: BoxDecoration(
color:
stringToColor("#929699"),
),
),
),
Align(
alignment:
AlignmentDirectional(1.2, 0),
child: Container(
width:
bodysize!.maxWidth * 0.157,
height:
bodysize!.maxHeight * 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) {
// showToast(
// "网络未连接,请开启设备网络后重试");
// 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(
color:
Color(0xFF333333),
fontSize: 20.rpx,
letterSpacing: 0,
),
),
);
}),
),
),
),
],
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 32.rpx, 0, 0),
child: Container(
width: bodysize!.maxWidth,
height: 92.rpx,
decoration: BoxDecoration(),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.06,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius:
BorderRadius.circular(12),
),
child: Align(
alignment:
AlignmentDirectional(0, 0),
child: Obx(() {
return TextFormField(
// autofocus: true,
// focusNode: _focusNode1,
onChanged: (value) {
controller.model.pd = value;
},
// obscureText: true,
obscureText:
controller.model.pdshow!,
decoration: InputDecoration(
labelStyle:
FlutterFlowTheme.of(
context)
.labelMedium
.override(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
hintText: '请输入新密码'.tr,
hintStyle: FlutterFlowTheme
.of(context)
.labelMedium
.override(
fontFamily:
'Readex Pro',
color:
Color(0xFF929699),
fontSize: 26.rpx,
letterSpacing: 0,
),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
errorBorder: InputBorder.none,
focusedErrorBorder:
InputBorder.none,
contentPadding:
EdgeInsetsDirectional
.fromSTEB(
10, 26.rpx, 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();
},
),
),
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
);
}),
),
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 32.rpx, 0, 0),
child: Container(
width: bodysize!.maxWidth,
height: 92.rpx,
decoration: BoxDecoration(),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.06,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius:
BorderRadius.circular(12),
),
child: Align(
alignment:
AlignmentDirectional(0, 0),
child: Obx(() {
return TextFormField(
// autofocus: true,
// focusNode: _focusNode2,
onChanged: (value) {
controller.model.confirm =
value;
},
// obscureText: true,
obscureText:
controller.model.cpdshow!,
decoration: InputDecoration(
labelStyle:
FlutterFlowTheme.of(
context)
.labelMedium
.override(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
hintText: '确认新密码',
hintStyle: FlutterFlowTheme
.of(context)
.labelMedium
.override(
fontFamily:
'Readex Pro',
color:
Color(0xFF929699),
fontSize: 26.rpx,
letterSpacing: 0,
),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
errorBorder: InputBorder.none,
focusedErrorBorder:
InputBorder.none,
contentPadding:
EdgeInsetsDirectional
.fromSTEB(
10, 26.rpx, 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:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
);
}),
),
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
42.rpx, 38.rpx, 42.rpx, 0),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.022,
constraints: BoxConstraints(
minWidth: 466,
minHeight: 30,
),
decoration: BoxDecoration(),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.022,
constraints: BoxConstraints(
minWidth: 466,
minHeight: 30,
),
decoration: BoxDecoration(),
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 58.rpx, 0, 0),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.056,
decoration: BoxDecoration(),
child: CustomCard(
borderRadius: 16.rpx,
gradientDirection:
GradientDirection.vertical,
onTap: () {
// if (CommonVariables.isNetWorkOn ==
// false) {
// showToast("网络未连接,请开启设备网络后重试");
// return;
// }
// String msg = await controller
// .confirmCode(context);
// if (msg.isEmpty) {
// // Get.toNamed("/userInfoPage");
// // Get.toNamed("/resetPasswordPage");
// Get.toNamed("/loginPage");
// }
},
colors: const [
Color(0xFFFCFCFC),
Color(0xFFF8FAF9),
Color(0XFFECF6F3),
Color(0XFFD9F0E9),
Color(0xFFCEECE3)
],
child: Container(
width: double.infinity,
height: 90.rpx,
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(
16.rpx),
),
child: Text(
"提交",
style: FlutterFlowTheme.of(
context)
.bodyMedium
.override(
fontFamily: 'Readex Pro',
color: Color(0XFF003058),
letterSpacing: 0,
fontSize: 26.rpx,
),
),
),
)),
),
],
),
),
),
),
),
],
),
),
)),
));
});
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,799 @@
import 'package:ef/ef.dart';
import 'package:flutter/material.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/tool/CustomCard.dart';
import 'package:vbvs_app/controller/mh_controller/register_controller.dart';
import 'package:vbvs_app/controller/time/countdown_controller.dart';
import 'package:vbvs_app/pages/common/selectDialog.dart';
class RegisterPage extends GetView<RegisterController> {
final scaffoldKey = GlobalKey<ScaffoldState>();
BoxConstraints? bodysize;
final ScrollController _scrollController = ScrollController();
RegisterPage() {
controller.model.pdshow = true;
controller.model.cpdshow = true;
Get.put(RegisterController());
}
@override
Widget build(BuildContext context) {
return LayoutBuilder(builder: (context, cc) {
bodysize = cc;
return GestureDetector(
// onTap: () => FocusScope.of(context).unfocus(),
child: Container(
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/images/new_background.png'), // 本地图片
fit: BoxFit.fill, // 填满整个 Container
),
),
child: Scaffold(
backgroundColor: Colors.transparent,
// key: scaffoldKey,
appBar: AppBar(
backgroundColor: Colors.transparent,
automaticallyImplyLeading: false,
iconTheme: IconThemeData(color: Colors.white),
titleSpacing: 0,
title: Container(
width: double.infinity,
height: 180.rpx,
child: Stack(
alignment: Alignment.center,
children: [
// 中间居中的标题
Text(
'用户注册',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: 30.rpx,
),
),
// 左侧图标
Positioned(
left: 20.rpx,
child: returnIconButtomNew,
),
],
),
),
actions: [],
centerTitle: false,
),
body: SingleChildScrollView(
controller: _scrollController,
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 1,
child: Column(
mainAxisSize: MainAxisSize.max,
children: [
// TitleComponentWidget(
// titleName: '用户注册',
// ),
Expanded(
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
98.rpx, 0, 98.rpx, 0),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.886,
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 1,
child: Column(
mainAxisSize: MainAxisSize.max,
children: [
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 184.rpx, 0, 0),
child: Container(
width: bodysize!.maxWidth,
height: 92.rpx,
decoration: BoxDecoration(),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.06,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius: BorderRadius.circular(12),
),
child: Align(
alignment: AlignmentDirectional(0, 0),
child: TextFormField(
// autofocus: true,
// focusNode: _focusNode1,
onChanged: (value) {
controller.model.register_phone =
value;
},
obscureText: false,
decoration: InputDecoration(
labelStyle:
FlutterFlowTheme.of(context)
.labelMedium
.override(
fontFamily: 'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
hintText: '请输入手机号'.tr,
hintStyle:
FlutterFlowTheme.of(context)
.labelMedium
.override(
fontFamily: 'Readex Pro',
color: Color(0xFF929699),
fontSize: 26.rpx,
letterSpacing: 0,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
errorBorder: InputBorder.none,
focusedErrorBorder:
InputBorder.none,
contentPadding:
EdgeInsetsDirectional.fromSTEB(
20.rpx, 0, 0, 10.rpx),
),
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
),
),
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 32.rpx, 0, 0),
child: Container(
width: bodysize!.maxWidth,
height: 92.rpx,
decoration: BoxDecoration(),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.06,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius: BorderRadius.circular(12),
),
child: Align(
alignment: AlignmentDirectional(0, 0),
child: Obx(() {
return TextFormField(
// autofocus: true,
// focusNode: _focusNode2,
onChanged: (value) {
controller.model.register_pd =
value;
},
// obscureText: true,
obscureText:
controller.model.pdshow!,
decoration: InputDecoration(
labelStyle:
FlutterFlowTheme.of(context)
.labelMedium
.override(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
hintText: '请输入密码'.tr,
hintStyle: FlutterFlowTheme.of(
context)
.labelMedium
.override(
fontFamily: 'Readex Pro',
color: Color(0xFF929699),
fontSize: 26.rpx,
letterSpacing: 0,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
errorBorder: InputBorder.none,
focusedErrorBorder:
InputBorder.none,
contentPadding:
EdgeInsetsDirectional
.fromSTEB(
10, 26.rpx, 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();
},
),
),
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
);
})),
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 32.rpx, 0, 0),
child: Container(
width: bodysize!.maxWidth,
height: 92.rpx,
decoration: BoxDecoration(),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.06,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius: BorderRadius.circular(12),
),
child: Align(
alignment: AlignmentDirectional(0, 0),
child: Obx(() {
return TextFormField(
// autofocus: true,
onChanged: (value) {
controller.model
.register_confirm_pd =
value;
},
// focusNode: _focusNode3,
// obscureText: true,
obscureText:
controller.model.cpdshow!,
decoration: InputDecoration(
labelStyle:
FlutterFlowTheme.of(context)
.labelMedium
.override(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
hintText: '请输入确认密码'.tr,
hintStyle: FlutterFlowTheme.of(
context)
.labelMedium
.override(
fontFamily: 'Readex Pro',
color: Color(0xFF929699),
fontSize: 26.rpx,
letterSpacing: 0,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
errorBorder: InputBorder.none,
focusedErrorBorder:
InputBorder.none,
contentPadding:
EdgeInsetsDirectional
.fromSTEB(
10, 26.rpx, 0, 0),
suffixIcon: IconButton(
icon: Icon(
// 根据 pdshow 控制图标
controller.model.pdshow!
? Icons.visibility_off
: Icons.visibility,
color: Color(0xFF333333),
size: 16,
),
onPressed: () {
// 切换 pdshow 状态
controller.model.cpdshow =
!controller
.model.cpdshow!;
controller.updateAll();
},
),
),
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
);
})),
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 32.rpx, 0, 0),
child: Container(
width: bodysize!.maxWidth,
height: 92.rpx,
decoration: BoxDecoration(),
child: Stack(
children: [
Align(
alignment: AlignmentDirectional(0, 0),
child: Container(
width: bodysize!.maxWidth,
height: 92.rpx,
decoration: BoxDecoration(
color: Color(0xFFF3F5F6),
borderRadius:
BorderRadius.circular(12),
),
child: Align(
alignment:
AlignmentDirectional(0, 0),
child: TextFormField(
// autofocus: true,
onChanged: (value) {
controller.model
.register_code = value;
},
// focusNode: _focusNode4,
obscureText: false,
decoration: InputDecoration(
labelStyle:
FlutterFlowTheme.of(
context)
.labelMedium
.override(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
hintText: '请输入验证码',
hintStyle: FlutterFlowTheme
.of(context)
.labelMedium
.override(
fontFamily:
'Readex Pro',
color:
Color(0xFF929699),
fontSize: 26.rpx,
letterSpacing: 0,
),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
errorBorder: InputBorder.none,
focusedErrorBorder:
InputBorder.none,
contentPadding:
EdgeInsetsDirectional
.fromSTEB(20.rpx, 0,
0, 0.rpx),
),
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily:
'Readex Pro',
fontSize: 26.rpx,
letterSpacing: 0,
),
),
),
),
),
Align(
alignment:
AlignmentDirectional(0.4, 0.1),
child: Container(
width: 1.rpx,
height: 38.rpx,
decoration: BoxDecoration(
color: stringToColor("#929699"),
),
),
),
Align(
alignment:
AlignmentDirectional(1.2, 0),
child: Container(
width: bodysize!.maxWidth * 0.157,
height: bodysize!.maxHeight * 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) {
// showToast(
// "网络未连接,请开启设备网络后重试");
// 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
? '获取验证码'.tr
: '${countdownController.countdown.value}' +
''.tr,
style: TextStyle(
fontFamily: 'Readex Pro',
color: Color(0xFF333333),
fontSize: 20.rpx,
letterSpacing: 0,
),
),
);
}),
),
),
),
],
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 19, 0, 0),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.022,
constraints: BoxConstraints(
minWidth: 466,
minHeight: 30,
),
decoration: BoxDecoration(),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.022,
constraints: BoxConstraints(
minWidth: 466,
minHeight: 30,
),
decoration: BoxDecoration(),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.start,
children: [
Align(
alignment:
AlignmentDirectional(0, 0),
child: Padding(
padding: EdgeInsetsDirectional
.fromSTEB(0, 3, 0, 0),
child: Container(
width: 36,
height: 36,
decoration: BoxDecoration(),
child: Align(
alignment:
AlignmentDirectional(
0, 0),
child: Theme(
data: ThemeData(
checkboxTheme:
CheckboxThemeData(
visualDensity:
VisualDensity
.compact,
materialTapTargetSize:
MaterialTapTargetSize
.shrinkWrap,
shape:
RoundedRectangleBorder(
borderRadius:
BorderRadius
.circular(
64),
),
),
unselectedWidgetColor:
Color(0xFFD3D3D3),
),
child: Obx(
() => Checkbox(
value: controller
.model
.register_agree ??
false,
onChanged:
(newValue) async {
controller.model
.register_agree =
newValue;
controller
.updateAll();
// 获取设备信息,需要用户点击确认隐私协议与用户协议选择框时才能获取
// if (newValue ==
// true) {
// Deviceconfig
// .initPlatformState();
// }
},
side: BorderSide(
width: 1.5,
color: FlutterFlowTheme
.of(context)
.secondaryText,
),
activeColor:
const Color(
0xFF84F5FF),
checkColor:
Color(0xFF003058),
visualDensity:
VisualDensity(
horizontal:
-4.0,
vertical:
-4.0), // 变小
),
)),
),
),
),
),
Flexible(
child: Padding(
padding: EdgeInsetsDirectional
.fromSTEB(0, 0, 0, 0),
child: Container(
width:
MediaQuery.sizeOf(context)
.width *
0.622,
height:
MediaQuery.sizeOf(context)
.height *
1,
constraints: BoxConstraints(
minWidth: 466,
minHeight: 30,
),
decoration: BoxDecoration(),
child: Container(
width: 100,
height: 100,
decoration: BoxDecoration(),
child: Row(
mainAxisSize:
MainAxisSize.max,
children: [
Align(
alignment:
AlignmentDirectional(
0, 0),
child: Text(
'我已阅读并同意'.tr,
style: FlutterFlowTheme
.of(context)
.bodyMedium
.override(
fontFamily:
'Readex Pro',
color: Colors
.white,
fontSize: 12,
letterSpacing:
0,
),
),
),
Align(
alignment:
AlignmentDirectional(
0, 0),
child: InkWell(
onTap: () {
showCustomConfirmOfWebViewDialog(
context,
"用户协议",
"/#/pages/agreement/agreement?type=2&hideHead=true");
},
child: Text(
'《用户协议》'.tr,
style: FlutterFlowTheme
.of(context)
.bodyMedium
.override(
fontFamily:
'Readex Pro',
color: stringToColor(
"FF9F66"),
fontSize: 12,
letterSpacing:
0,
),
),
),
),
Align(
alignment:
AlignmentDirectional(
0, 0),
child: Text(
''.tr,
style: FlutterFlowTheme
.of(context)
.bodyMedium
.override(
fontFamily:
'Readex Pro',
color: Colors
.white,
fontSize: 12,
letterSpacing:
0,
),
),
),
Align(
alignment:
AlignmentDirectional(
0, 0),
child: InkWell(
onTap: () {
showCustomConfirmOfWebViewDialog(
context,
"隐私协议",
"/#/pages/agreement/agreement?type=1&hideHead=true");
},
child: Text(
'《隐私协议》'.tr,
style: FlutterFlowTheme
.of(context)
.bodyMedium
.override(
fontFamily:
'Readex Pro',
color: stringToColor(
"FF9F66"),
fontSize: 12,
letterSpacing:
0,
),
),
),
),
],
),
),
),
),
),
],
),
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 29, 0, 0),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.056,
decoration: BoxDecoration(),
child: CustomCard(
borderRadius: 16.rpx,
gradientDirection:
GradientDirection.vertical,
onTap: () {
// if (CommonVariables.isNetWorkOn ==
// false) {
// showToast("网络未连接,请开启设备网络后重试");
// return;
// }
// String msg = await controller
// .registerUser(context);
// if (msg == null || msg.isEmpty) {
// Get.toNamed("/loginPage");
// }
},
colors: const [
Color(0xFFFCFCFC),
Color(0xFFF8FAF9),
Color(0XFFECF6F3),
Color(0XFFD9F0E9),
Color(0xFFCEECE3)
],
child: Container(
width: double.infinity,
height: 90.rpx,
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(16.rpx),
),
child: Text(
"提交",
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Readex Pro',
color:
stringToColor("#011D33"),
letterSpacing: 0,
fontSize: 30.rpx,
),
),
),
)),
),
],
),
),
),
),
),
],
),
),
)),
));
});
}
}