Flutter - Как добавить учетные данные пользователя Firebase-Auth в новые записи (документы FireStore)? - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь создать простое приложение Crud с Flutter и Firebase, записи которого (документы, созданные в FireStore) связаны с пользователем, прошедшим проверку подлинности.Поэтому функции Crud будет выполнять только тот пользователь, который создал запись.IE пользователь сможет только редактировать / обновлять / удалять записи, которые он добавил в первую очередь.

У меня есть функции firebase_auth и crud, прекрасно работающие с firestore.у меня есть проблемы, связанные с двумя.Я решил использовать электронную почту пользователей и уникальный идентификатор (я не уверен, лучше ли использовать автоматически сгенерированный идентификатор пользователя или нет).Я создал отдельную функцию для простого возврата электронной почты текущего пользователя, когда она добавляется в документ пожарного депо.Проблема в том, что когда я добавляю запись в первый раз, электронная почта пользователя возвращает null . Если я снова отправляю форму, она начинает работать нормально.

String _userEmail;
_getUserAuthEmail() {
  FirebaseAuth.instance.currentUser().then((user){
    setState((){this._userEmail = user.email;}); 
  });
  return this._userEmail;
}

Который вызывается из события onPressed

onPressed: () {
  crudObj.addData({
    'itemName': this.itemName,
    'userEmail': _getUserAuthEmail(),
  }).then((result) {
    dialogTrigger(context);
  }).catchError((e) {
    print(e);
  });
},

Поскольку я только начинаю, пожалуйста, дайте мне знать, если есть лучший подход.Приветствия.

1 Ответ

0 голосов
/ 02 октября 2018

Вы получаете нулевое значение, потому что вы не ожидаете завершения метода currentUser.Измените метод _getUserEmail следующим образом:

String _userEmail;
_getUserAuthEmail() async {
  FirebaseUser user = await FirebaseAuth.instance.currentUser();
  setState(() {
      _userEmail = user.email;
    });
  return this._userEmail;
}

Кроме того, об этом «Я решил использовать электронную почту пользователей и уникальный идентификатор (я не уверен, что лучше использовать автоматически сгенерированный идентификатор пользователя илине). "

Я предлагаю вам использовать uid пользователя для сохранения материалов, связанных с пользователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...