Я новичок в трепетании и пожаре, так что терпите меня.Я использую электронную почту, регистрирующуюся с 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» вместо пользовательских сведений.