Flutter PlatformException недопустимый формат электронной почты - PullRequest
0 голосов
/ 10 июля 2020

Я настраиваю свое приложение на go и добавил поле «полное имя» для хранения в firebase и отображения на странице профиля пользователя. Я получаю сообщение об ошибке «PlatformException (ERROR_INVALID_EMAIL, адрес электронной почты неправильно отформатирован., Null)» при регистрации нового пользователя. Из других подобных сообщений я не могу найти никаких соглашений об именах, которые мешают мне.

Register.dart:

                    SizedBox(height: 20.0),
                    TextFormField(
                        decoration:
                            textInputDecoration.copyWith(hintText: 'Full Name'),
                        validator: (val) =>
                            val.isEmpty ? 'Enter a Full Name' : null,
                        onChanged: (val) {
                          setState(() => fullname = val);
                        }),
                    SizedBox(height: 20.0),
                    TextFormField(
                        decoration:
                            textInputDecoration.copyWith(hintText: 'Email'),
                        validator: (val) =>
                            val.isEmpty ? 'Enter an email' : null,
                        onChanged: (val) {
                          setState(() => email = val);
                        }),
                    SizedBox(height: 20.0),
                    TextFormField(
                        decoration:
                            textInputDecoration.copyWith(hintText: 'Password'),
                        obscureText: true,
                        validator: (val) => val.length < 6
                            ? 'Enter a password 6+ chars long'
                            : null,
                        onChanged: (val) {
                          setState(() => password = val);
                        }),
                    SizedBox(height: 20.0),
                    RaisedButton(
                        color: Colors.blue[400],
                        child: Text(
                          'Register',
                          style: TextStyle(color: Colors.white),
                        ),
                        onPressed: () async {
                          if (_formKey.currentState.validate()) {
                            setState(() => loading = true);
                            dynamic result =
                                await _auth.registerWithEmailAndPassword(
                                    fullname, email, password);
                            if (result == null) {
                              setState(() {
                                error = 'please supply a valid email';
                                loading = false;
                              });
                            }
                          }
                        }),

auth.dart

Future registerWithEmailAndPassword(String email, String password, String fullname) async {
    try {
      AuthResult result = await _auth.createUserWithEmailAndPassword(
          email: email, password: password);
      FirebaseUser user = result.user;
      return _userFromFirebaseUser(user);
    } catch (e) {
      print(e.toString());
      return null;
    }
  }

1 Ответ

0 голосов
/ 10 июля 2020

В объявлении вашей функции указано, что ваши параметры идут в следующем порядке String email, String password, String fullname, но способ их использования - в этом порядке fullname, email, password. Измените

await _auth.registerWithEmailAndPassword(fullname, email, password);

на

await _auth.registerWithEmailAndPassword(email, password, fullname);

Единственная проблема - это опечатка.

Вы можете использовать именованные параметры, которые могут сделать его более очевидным при возникновении таких проблем, как это, но я считаю, что это полезно только с функцией или конструкторами с большим количеством параметров.

...