【发布时间】:2021-12-01 02:42:33
【问题描述】:
当我想确认我的密码,但我无法比较第一个和最后一个密码时。
这是我的密码类。它工作正常,但 confirmPassword 部分不行。
class Password extends FormzInput<String, PasswordValidationError> {
const Password.pure() : super.pure('');
const Password.dirty([String value = '']) : super.dirty(value);
static final _passwordRegExp = RegExp(r'^[A-Za-z\d@$!%*?&]{8,}$');
@override
PasswordValidationError? validator(String value) {
if (value.isEmpty) {
return PasswordValidationError.empty;
}
return _passwordRegExp.hasMatch(value)
? null
: PasswordValidationError.invalid;
}
}
您可以询问验证器中的值是什么。让我给你看看。
void passwordChanged(String value) {
final password = Password.dirty(value);
emit(state.copyWith(
password: password,
status: Formz.validate(
[state.name, state.email, password, state.confirmPassword]),
));
}
这是我的正常密码字段。现在让我们看一下确认部分。
class ConfirmPassword
extends FormzInput<String, ConfirmedPasswordValidationError> {
const ConfirmPassword.pure() : super.pure('');
const ConfirmPassword.dirty([String value = '']) : super.dirty(value);
static final _confirmPasswordRegExp = RegExp(r'^[A-Za-z\d@$!%*?&]{8,}$');
@override
ConfirmedPasswordValidationError? validator(String value) {
if (value.isEmpty) {
return ConfirmedPasswordValidationError.empty;
} else if (!_confirmPasswordRegExp.hasMatch(value)) {
return ConfirmedPasswordValidationError.invalid;
}
return (password**I mentioned here** == value)
? null
: ConfirmedPasswordValidationError.mismatch;
}
}
验证器中的值:
void confirmPasswordChanged(String value) {
final confirmPassword =
ConfirmPassword.dirty(value);
emit(state.copyWith(
confirmPassword:
state.password.valid ? confirmPassword : const ConfirmPassword.pure(),
status: Formz.validate(
[state.name, state.email, state.password, confirmPassword]),
));
}
我如何才能到达 confirmPassword 部分中的第一个(正常)值字段?或者有什么办法可以和formz一起使用?
【问题讨论】:
-
你找到解决办法了吗?
-
不,我没有...
标签: flutter validation dart bloc