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 { final scaffoldKey = GlobalKey(); 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( '找回密码', 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, 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: 20.rpx, letterSpacing: 0, ), hintText: '请输入手机号', hintStyle: FlutterFlowTheme.of( context) .labelMedium .override( fontFamily: 'Readex Pro', color: Color(0xFF929699), fontSize: 20.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: 20.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: '请输验证码', hintStyle: FlutterFlowTheme.of( context) .labelMedium .override( fontFamily: 'Readex Pro', color: Color( 0xFF929699), fontSize: 20.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: 20.rpx, letterSpacing: 0, ), ), ), ), ), Align( alignment: AlignmentDirectional( 0.2, 0.3), child: Container( width: 3, height: 30, decoration: BoxDecoration( color: Color(0xFFCCCCCC), ), ), ), Align( alignment: AlignmentDirectional(0.9, 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}秒', style: TextStyle( fontFamily: 'Readex Pro', 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: 20.rpx, letterSpacing: 0, ), hintText: '请输入新密码', hintStyle: FlutterFlowTheme .of(context) .labelMedium .override( fontFamily: 'Readex Pro', color: Color(0xFF929699), fontSize: 20.rpx, letterSpacing: 0, ), enabledBorder: InputBorder.none, focusedBorder: InputBorder.none, errorBorder: InputBorder.none, focusedErrorBorder: InputBorder.none, contentPadding: EdgeInsetsDirectional .fromSTEB( 10, 10, 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: 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: _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: 20.rpx, letterSpacing: 0, ), hintText: '确认新密码', hintStyle: FlutterFlowTheme .of(context) .labelMedium .override( fontFamily: 'Readex Pro', color: Color(0xFF929699), fontSize: 20.rpx, letterSpacing: 0, ), enabledBorder: InputBorder.none, focusedBorder: InputBorder.none, errorBorder: InputBorder.none, focusedErrorBorder: InputBorder.none, contentPadding: EdgeInsetsDirectional .fromSTEB( 10, 10, 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: 20.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: 30.rpx, ), ), ), )), ), ], ), ), ), ), ), ], ), ), )), )); }); } }