почему юдоль правой стороны не получил «дарц»?

Я пытаюсь получить значение валидатора для адреса электронной почты с помощью 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: ''),
      );
}

0 ответов

Другие вопросы по тегам