import 'package:flutter/cupertino.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; part 'set_pwd_event.dart'; part 'set_pwd_state.dart'; class SetPwdBloc extends Bloc { final String? phoneNumber; final String? code; final int? type; final TextEditingController passWordFirstController = TextEditingController(); final TextEditingController passWordSecondController = TextEditingController(); ///密码是否符合规则(第一个输入框) bool _passwordEnsure = false; ///密码是否超过16位(第一个输入框) bool _passwordLarger = false; ///是否显示Icon(第一个输入框) bool _showPwdIcon = false; ///是否显示Icon(第二个输入框) bool _showCheckPwdIcon = false; ///密码是否一致 bool _passwordCheck = true; bool get passwordEnsure => _passwordEnsure; bool get passwordCheck => _passwordCheck; bool get passwordLarger => _passwordLarger; bool get showPwdIcon => _showPwdIcon; bool get showCheckPwdIcon => _showCheckPwdIcon; bool get ensure => _passwordCheck && _passwordEnsure; SetPwdBloc(this.phoneNumber, this.code, this.type) : super(SetPwdInitial()) { on(_pwdEnsureTextChange); on(_pwdCheckTextChange); on(_setPassword); } void _pwdCheckTextChange(PwdCheckEvent event,Emitter emitter) async { if(passWordSecondController.text.isEmpty) { _showCheckPwdIcon = false; emitter(PasswordCheckIconShowState()); } else { if (!_showCheckPwdIcon) { _showCheckPwdIcon = true; emitter(PasswordCheckIconShowState()); } } if(passWordFirstController.text == passWordSecondController.text) { _passwordCheck = true; emitter(SetCheckPwdState()); } else { _passwordCheck = false; emitter(SetCheckPwdState()); } } void _pwdEnsureTextChange(PwdEnsureEvent event,Emitter emitter) async { if (passWordFirstController.text.isEmpty) { if (_showPwdIcon) { _showPwdIcon = false; emitter(PasswordIconShowState()); } } else { if (!_showPwdIcon) { _showPwdIcon = true; emitter(PasswordIconShowState()); } if(passWordSecondController.text.isNotEmpty) { if (passWordFirstController.text == passWordSecondController.text) { _passwordCheck = true; } else { _passwordCheck = false; } emitter(SetCheckPwdState()); } if (passWordFirstController.text.length >= 8 && passWordFirstController.text.length <=16) { ///符合密码要求 if(!_passwordEnsure) { _passwordEnsure = true; emitter(SetEnsurePwdState()); } if(passWordSecondController.text.isNotEmpty) { if (passWordFirstController.text == passWordSecondController.text) { } } if (_passwordLarger) { _passwordLarger = false; emitter(PasswordLargeState()); } } else { if(passWordFirstController.text.length > 16) { ///超过十六位 if (!_passwordLarger) { _passwordLarger = true; emitter(PasswordLargeState()); } } else { if (_passwordLarger) { _passwordLarger = false; emitter(PasswordLargeState()); } } ///密码不符合要求 if(_passwordEnsure) { _passwordEnsure = false; emitter(SetEnsurePwdState()); } } } } void _setPassword(SetPasswordEvent event,Emitter emitter) async { emitter(PasswordSetSuccessState()); } }