import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:keyboard_actions/keyboard_actions.dart'; import 'package:liftmanager/net/api_service.dart'; import 'package:liftmanager/res/resources.dart'; import 'package:liftmanager/routers/fluro_navigator.dart'; import 'package:liftmanager/utils/theme_utils.dart'; import 'package:liftmanager/utils/toast.dart'; import 'package:liftmanager/utils/utils.dart'; import 'package:liftmanager/widgets/app_bar.dart'; import 'package:liftmanager/widgets/my_button.dart'; import 'package:liftmanager/widgets/text_field.dart'; /// design/1注册登录/index.html#artboard9 class ResetPasswordPage extends StatefulWidget { @override _ResetPasswordPageState createState() => _ResetPasswordPageState(); } class _ResetPasswordPageState extends State { //定义一个controller TextEditingController _phoneController = TextEditingController(); TextEditingController _vCodeController = TextEditingController(); TextEditingController _passwordController = TextEditingController(); final FocusNode _nodeText1 = FocusNode(); final FocusNode _nodeText2 = FocusNode(); final FocusNode _nodeText3 = FocusNode(); bool _isClick = false; @override void initState() { super.initState(); //监听输入改变 _phoneController.addListener(_verify); _vCodeController.addListener(_verify); _passwordController.addListener(_verify); } Future _getVCode() async { await ApiService(context: context).getVCode(_phoneController.text.toString().trim(), onSuccess: (data) { print("成功"); }, onError: (code, msg) { toasts(msg); }); return Future.value(true); } void _verify(){ String name = _phoneController.text; String vCode = _vCodeController.text; String password = _passwordController.text; bool isClick = true; if (name.isEmpty || name.length < 11) { isClick = false; } if (vCode.isEmpty || vCode.length < 6) { isClick = false; } if (password.isEmpty || password.length < 6) { isClick = false; } if (isClick != _isClick){ setState(() { _isClick = isClick; }); } } void _reset(){ String phone = _phoneController.text; String vCode = _vCodeController.text; String password = _passwordController.text; showLoading(context, "正在执行..."); ApiService(context: context).resetPassword( phone, Utils.generateMd5(password), vCode, onSuccess: (data) { dismissLoading(context); showAlert(context, "提示", "重置成功,请登录", "确定", (){ NavigatorUtils.goBack(context); NavigatorUtils.goBack(context); }); }, onError: (code, msg) { dismissLoading(context); toasts(msg); }); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: ThemeUtils.getTabsBg(context), appBar: const MyAppBar( centerTitle: "忘记密码", ), body: defaultTargetPlatform == TargetPlatform.iOS ? FormKeyboardActions( child: _buildBody(), ) : SingleChildScrollView( child: _buildBody(), ) ); } _buildBody(){ return Padding( padding: const EdgeInsets.only(left: 16.0, right: 16.0, top: 20.0), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ Gaps.vGap16, MyTextField( focusNode: _nodeText1, config: Utils.getKeyboardActionsConfig(context, [_nodeText1, _nodeText2, _nodeText3]), controller: _phoneController, maxLength: 11, keyboardType: TextInputType.phone, hintText: "请输入手机号", ), Gaps.vGap8, MyTextField( focusNode: _nodeText2, controller: _vCodeController, keyboardType: TextInputType.number, getVCode: () async { if (_phoneController.text.toString().trim().length == 11) { return await _getVCode(); } else { toasts("请输入有效的手机号"); return false; } }, maxLength: 6, hintText: "请输入验证码", ), Gaps.vGap8, MyTextField( focusNode: _nodeText3, isInputPwd: true, controller: _passwordController, maxLength: 16, keyboardType: TextInputType.visiblePassword, hintText: "请输入密码", ), Gaps.vGap10, Gaps.vGap15, MyButton( onPressed: _isClick ? _reset : null, text: "确认", ) ], ), ); } }