У меня DocumentReference locationDocumentRef;
в моем состоянии.
Я меняю locationDocumentRef
на основе ссылок, собираю ли я по запросу или добавляя новый документ.
Так что у меня есть эта функция для проверки документов, если есть одна, установите ее ссылку на locationDocumentRef
, или добавьте новую и установите ее ссылку на locationDocumentRef
. Я сбрасываю его значение каждый раз, устанавливая его в ноль, так как я не хотел получать предыдущий результат. Но он печатает ноль.
Итак, мой вопрос, как я могу решить их и получить значение? Я думаю, что я решаю слишком рано в своем коде, поэтому я не могу ожидать не будущее значение. Как я могу это исправить?
void firestoreCheckAndPush() async {
setState(() {
locationDocumentRef = null;
});
bool nameExists = await doesNameAlreadyExist(placeDetail.name);
if (nameExists) {
print('name exist');
} else {
print('name will be pushed on firestore');
pushNameToFirestore(placeDetail);
}
var resolvedRef = await locationDocumentRef;
print(resolvedRef.documentID); // I get null here
}
Это функции, которые я использовал
Future<bool> doesNameAlreadyExist(String name) async {
QuerySnapshot queryDb = await Firestore.instance
.collection('locations')
.where("city", isEqualTo: '${name}')
.limit(1)
.getDocuments();
if (queryDb.documents.length == 1) {
setState(() {
locationDocumentRef = queryDb.documents[0].reference;
});
return true;
} else {
return false;
}
}
А другой
void pushNameToFirestore(PlaceDetails pd) async {
DocumentReference justAddedRef =
await Firestore.instance.collection('locations').add(<String, String>{
'city': '${pd.name}',
'image': '${buildPhotoURL(pd.photos[0].photoReference)}',
});
setState(() {
locationDocumentRef = justAddedRef;
});
}