Я пытаюсь получить роль аутентифицированного пользователя, сохраненного в users collection
. Я пытаюсь достичь во время входа в систему запроса к роли пользователя путем обхода выборки документа пользователя в коллекции и просеивания через поля или проверки всех документов и возврата поля role
в виде строки.
Снимок коллекции и документа (извините за терминологию): 
Все документы в users collection
на данный момент имеют одинаковые поля.
Пожалуйста, как мне go о написании этого типа запроса во флаттере? Я пытался использовать AuthResult
в своем сервисе и FirebaseAuth
, чтобы получить текущего пользователя (но не смог получить доступ к полям в документе). Спасибо.
String role;
getUserRoleWithFuture() async {
String currID = await _authService.getCurrentUID();
String mRole;
Firestore.instance.collection(USERS_REF).document(currID).get().then((doc) {
mRole = doc.data['role'];
print(mRole);
});
return mRole;
}
Future<String> getUserRoleWithStream() async {
String currID = await _authService.getCurrentUID();
String sRole;
Firestore.instance
.collection(USERS_REF)
.document(currID)
.snapshots()
.listen((DocumentSnapshot ds) {
if (ds.exists) {
sRole = ds.data['role'];
print('with stream:\t$sRole');
}
});
return sRole;
}
В методе getUserRoleWithStream()
Я пытаюсь получить распечатанное значение как role = getUserRoleWithStream()
, но вместо этого получаю это в консоли a value of type Future<String> can't be assigned to a variable of type string
.
Как мне получить это значение, используя либо поток (потому что он постоянно наблюдает за коллекцией), либо используя другой метод и использовать его в моем виджете? Еще раз спасибо.