簡體   English   中英

必須提供電子郵件地址/電子郵件地址格式錯誤

[英]An email address must be provided / The email address is badly formatted

我收到“顫振:[firebase_auth/missing-email] 必須提供電子郵件地址。” 當我注冊。 使用 dummy@gmail.com

和“顫振:[firebase_auth/invalid-email] 電子郵件地址格式錯誤。” 當我使用注冊帳戶登錄時。 (以前有一個電子郵件,也通過 firebase 網站創建了一個帳戶,兩者都獲得相同的消息)

我將 trim() 視為一種可能的解決方案,但不知道如何實現它。 我確保沒有空格...你能告訴我我的代碼有什么問題或遺漏了嗎?

這是我的注冊頁面上的一些代碼(在我的登錄頁面上看起來幾乎相同),如果您需要查看更多信息,請告訴我

  String email = '';
  String password = '';
  String error = '';
TextFormField(
                        textInputAction: TextInputAction.next,
                        style: TextStyle(color: Colors.white),
                        decoration: textInputDecoration.copyWith(
                          hintText: ('Enter Email'),
                          hintStyle: TextStyle(color: Colors.white),
                          enabledBorder: UnderlineInputBorder(
                            borderSide: BorderSide(color: Colors.white),
                          ),
                        ),
                        keyboardType: TextInputType.emailAddress,
                        validator: (value) {
                          if (value!.isEmpty) {
                            return 'Email is required';
                          }
                          if (value.isNotEmpty) {
                            final RegExp regex = RegExp(
                                r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$');
                            if (!regex.hasMatch(value))
                              return 'Enter a valid email';
                            else
                              return null;
                          } else {
                            return 'Enter a valid email';
                          }
                        },
                      ),
ElevatedButton(
                          child: Text(
                            'Register',
                            style: TextStyle(color: Colors.white),
                          ),
                          style: ElevatedButton.styleFrom(
                              primary: Color(0xFF162242)),
                          onPressed: () async {
                            if (_formKey.currentState!.validate()) {
                              setState(() => loading = true);
                              dynamic result =
                                  await _auth.registerWithEmailAndPassword(
                                      email, password);

                              if (result == null) {
                                setState(() {
                                  error = 'please enter valid email';
                                  loading = false;
                                });
                              }
                            }
                          }),

等等,我想知道你到底在做什么!

您已將電子郵件和密碼明確定義為空字符串。

 String email = '';
 String password = '';
 String error = '';

並將這些空字符串傳遞給_auth.registerWithEmailAndPassword(email, password)

解決方案是使用 TextEditingController 對象並從輸入字段中收集值,然后將它們傳遞給注冊方法。

final emailCtrl =TextEditingController();
final passCtrl = TextEditingController();

...

TextFormField(
  controller: emailCtrl,
  ....
),

TextFormField(
  controller: passCtrl,
  ....
),

...


ElevatedButton(
  onPressed: () async {
    String email = emailCtrl.text.trim();
    String pass = passCtrl.text.trim();
    ...
    dynamic result = await _auth.registerWithEmailAndPassword(email, password);
    ...
  }
)

暫無
暫無

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

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