почему юдоль правой стороны не получил «дарц»?
Я пытаюсь получить значение валидатора для адреса электронной почты с помощью dartz, но вывод всегда слева, я пробовал тот же код, помещая валидацию внутри валидатора, используя то же регулярное выражение, которое сработало! Я использую библиотеки шаблонов блоков, замороженные и dartz.
код адреса электронной почты:
class _EmailAdressInput extends _ListOfInputs {
const _EmailAdressInput();
@override
Widget build(BuildContext context) {
return BlocBuilder<AuthBloc, AuthBlocState>(builder: (context, state) {
return TextFormField(
focusNode: emailAddressNode,
autovalidateMode: AutovalidateMode.onUserInteraction,
textInputAction: TextInputAction.next,
decoration: InputDecoration(
labelText: 'Email Address',
hintText: 'For Example: user@gmail.com',
contentPadding: EdgeInsets.all(
MediaQuery.of(context).size.width * 0.01,
),
),
validator: (_) {
return state
.emailAdressState
.value
.fold((l) => l.msg, (_) => null);
// if (!RegExp(r"""^(\w|\.|\_|\-)+[@](\w|\_|\-|\.)+[.]\w{2,3}$""")
// .hasMatch(input!)) {
// return 'false';
// }
},
onChanged: (value) {
return context.read<AuthBloc>().add(
AuthBlocEvent.emailAdressPressed(emailAdressPressedValue: value));
},
);
});
}
}
код объекта EmailAdress:
@immutable
class EmailAdress extends ValueObject {
@override
final Either<AuthFalires,String> value ;
factory EmailAdress({required String emailInput}){
return EmailAdress._( emailValidation( input: emailInput));
}
const EmailAdress._(this.value);
}
код валидатора:
Either<AuthFalires,String> emailValidation({required String input}){
if (RegExp(r"""^(\w|\.|\_|\-)+[@](\w|\_|\-|\.)+[.]\w{2,3}$""").hasMatch(input)) {
return right(input);
}else{
return left(const AuthFalires.invalideEmail(msg:'Invalid Email'));
}
}
код блока:
class AuthBloc extends Bloc<AuthBlocEvent, AuthBlocState> {
AuthBloc() : super(AuthBlocState.initial());
@override
Stream<AuthBlocState> mapEventToState(
AuthBlocEvent event,
) async* {
yield* event.map(
emailAdressPressed: (e) async* {
state.copyWith(
emailAdressState: EmailAdress(
emailInput: e.emailAdressPressedValue,
),
);
});
}
}
код события:
@freezed
class AuthBlocEvent with _$AuthBlocEvent {
const factory AuthBlocEvent.emailAdressPressed({required String emailAdressPressedValue }) =
_EmailAdressPressed;
}
код штата:
@freezed
class AuthBlocState with _$AuthBlocState {
const factory AuthBlocState(
{required EmailAdress emailAdressState}) = _AuthBlocState;
factory AuthBlocState.initial() => AuthBlocState(
emailAdressState: EmailAdress(emailInput: ''),
);
}