微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么右手边的山谷没有收到“dartz”?

如何解决为什么右手边的山谷没有收到“dartz”?

我正在尝试使用 dartz 获取电子邮件地址验证器的值,但输出始终在左侧,我尝试了相同的代码,使用相同的正则表达式将验证放入验证器中,效果很好!我正在使用 bloc 模式、冻结和 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: ''),);
}

AuthFailure 代码是:

@freezed
abstract class AuthFalires with _$AuthFalires {
  const factory AuthFalires.invalideEmail({required String msg}) =
      _InvalideEmail;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。