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 { final scaffoldKey = GlobalKey(); 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, ), ), ), )), ), ], ), ), ), ), ), ], ), ), )), )); }); } }