set_pwd_bloc.dart 3.55 KB
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<SetPwdEvent, SetPwdState> {

  final String? phoneNumber;

  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) : super(SetPwdInitial()) {
    on<PwdEnsureEvent>(_pwdEnsureTextChange);
    on<PwdCheckEvent>(_pwdCheckTextChange);
    on<SetPasswordEvent>(_setPassword);
  }

  void _pwdCheckTextChange(PwdCheckEvent event,Emitter<SetPwdState> 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<SetPwdState> 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<SetPwdState> emitter) async {
    emitter(PasswordSetSuccessState());
  }
}