Как получить конкретные данные пользователя из пожарного магазина с помощью флаттера - PullRequest
0 голосов
/ 26 декабря 2018

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

Ключевым идентификатором полей, сохраненных в коллекции пользователей, является автоматически созданный идентификатор пользователя при регистрации.

У меня в контексте сборки моего виджета

child: new FutureBuilder<FirebaseUser>(
        future: _firebaseAuth.currentUser(),
        builder: (BuildContext context, AsyncSnapshot<FirebaseUser> snapshot) {
          if (snapshot.connectionState == ConnectionState.done) {
            String userID = snapshot.data.uid;
            _userDetails(userID);
            return new Text(firstName);
          }
          else {
            return new Text('Loading...');
          }
        },
      ),

И мой метод получения связанных данных:

Future<void> getData(userID) async {
// return await     Firestore.instance.collection('users').document(userID).get();
DocumentSnapshot result = await     Firestore.instance.collection('users').document(userID).get();
return result;

}

Для извлечения пользователядетали

void _userDetails(userID) async {
final userDetails = getData(userID);
            setState(() {
                  firstName =  userDetails.toString();
                  new Text(firstName);
});

}

Я попытался добавить .then () к состоянию set в _userdetails, но его высказывание userDetails является типом void и не может быть назначено на строку.Текущий блок кода здесь возвращает экземпляр «Future» вместо пользовательских сведений.

1 Ответ

0 голосов
/ 26 декабря 2018

Ваш метод помечен как async, поэтому вам нужно дождаться результата:

        Future<void> _userDetails(userID) async {
        final userDetails = await getData(userID);
                    setState(() {
                          firstName =  userDetails.toString();
                          new Text(firstName);
        });
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...