У меня есть несколько вопросов, касающихся использования фьючерсов в дротике.Допустим, я работаю с пожарным магазином, и у меня есть такая функция для обновления информации пользователей:
void updateOldUser(User oldUser,String newInfo){
DocumentReference userToUpdateRef = userRef.document(oldUser.id);
Firestore.instance.runTransaction((Transaction transaction) async {
DocumentSnapshot userToUpdateSnapshot = await transaction.get(userToUpdateRef);
if(userToUpdateSnapshot.exists){
await transaction.update(
userToUpdateSnapshot.reference, userToUpdateSnapshot.data[newInfo] + 1
).catchError((e)=> print(e));
}
});
}
Мой вопрос: нужно ли возвращать будущее, поскольку runTransactionБудущее.Кажется, что он работает нормально без него, но мне кажется, что он должен вернуть «Будущее пустое пространство», чтобы иметь возможность ожидать updateOldUser, когда я его использую.Но когда я превращаю его в «Future void», а затем завершаю тело функции с помощью return;У меня есть ошибка, говорящая «ожидаемое значение после возврата».Но что я действительно не понимаю, так это то, что с другим подобным кодом:
Future<void> updateUserPhoto(User user,File userPhoto) async {
String photoUrl = await uploadImage(user.id,userPhoto);
DocumentReference userToUpdateRef = userRef.document(user.id);
Firestore.instance.runTransaction((Transaction transaction) async {
DocumentSnapshot userToUpdateSnapshot = await transaction.get(userToUpdateRef);
if(userToUpdateSnapshot.exists){
await transaction.update(
userToUpdateSnapshot.reference, {
'photoUrl' : photoUrl
}
).catchError((e)=> print(e));
}
});
return;
}
Я не получаю эту ошибку, и она также работает нормально.Зачем ?Заранее спасибо.