簡體   English   中英

在顫動中允許電子郵件驗證器中的空格

[英]Allow spaces in EMail validator in flutter

我在顫振上使用電子郵件驗證器包來驗證用於登錄的電子郵件。 我對這個包有一個問題,我想在用戶登錄時允許電子郵件中有空格,因為無論如何我都會修剪文本,所以我不希望它在結尾有空格時顯示錯誤。

 child: TextFormField(
            keyboardType: TextInputType.emailAddress,
            controller: emailController,
            cursorColor: Colors.white,
            textInputAction: TextInputAction.next,
            decoration:   const InputDecoration(labelText: 'Email'),
            autovalidateMode: AutovalidateMode.onUserInteraction,
            validator: (email) =>
            email != null && !EmailValidator.validate(email)
            ? 'Enter a valid Email' : null,

try {
      await _auth.signInWithEmailAndPassword(
        email: emailController.text.trim(),
        password: passwordController.text.trim(),
      );

任何人都知道該怎么做,或者是否有比使用這個包更好的方法?

您不需要使用任何包來驗證電子郵件,您可以簡單地使用RegExp進行驗證,如下所示,在這個空間是允許的,然后您可以在任何您想使用的地方修剪它

validator: (value) {
    bool emailValid = RegExp(r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+").hasMatch(value!);
    if (value == null || value.isEmpty) {
        return 'Please Enter Email Address';
    }else if (emailValid == false){
        return 'Please Enter Valid Email Address';
    }
   return null;
},

如果您有任何問題,請告訴我。 謝謝

您可以先修剪電子郵件,然后檢查驗證。

 validator: (email) {
            if(email != null) {
                email = email.trim();
      (!EmailValidator.validate(email))
            ? 'Enter a valid Email' : null,
             }  
         return null;  

 }

使用 TextFormField 驗證的最佳實踐是不允許用戶放置不相關的數據

TextFormField(
                controller: _etcEmail,
                keyboardType: TextInputType.emailAddress,
                textInputAction: TextInputAction.done,
               inputFormatter: [
                   // FilteringTextInputFormatter.allow(RegExp(r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+")),
                  // FilteringTextInputFormatter.deny(RegExp(r" ")),               
                   FilteringTextInputFormatter.allow(RegExp(r" ")),

               ],
                hintText: 'Email',
                validator: (value) {
                  if (value!.isEmpty) {
                    ScaffoldMessenger.of(context).showSnackBar(SnackBar(
                        backgroundColor: Colors.pinkAccent,
                        behavior: SnackBarBehavior.floating,
                        padding: EdgeInsets.all(5),
                        content: (Text('Email Field is Required'))));
                  }
                },
                read: false,
              )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM