У меня есть Futurebuilder во флаттере, но он никогда ничего не возвращает.
Как вы можете видеть ниже, у меня есть Futurebuilder, который вызывает метод с именем getGamesLost
. Если данных нет, он покажет индикатор загрузки.
FirestoreUserProfile firestoreUserProfile = new FirestoreUserProfile();
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: firestoreUserProfile.getGamesLost(),
builder: (BuildContext context, AsyncSnapshot<int> userProfileData) {
if(userProfileData.hasData) {
print(userProfileData);
}
else {
return Styling.loadingIndicator;
}
}
);
Моя проблема в том, что данных никогда не бывает. Ниже приведен метод getGamesLost.
Future<int> getGamesLost() async {
return await firestoreCollectionReference
.document(FirebaseUserData.currentFirebaseUser.email)
.snapshots().forEach((userData) {
return userData.data[describeEnum(fieldNames.profile)][describeEnum(fieldNames.gamesLost)];
});
}
По какой-то причине getGamesLost, который вызывается futurebuilder, никогда не завершается. Я могу напечатать значение userData
непосредственно перед последним возвратом, что означает, что на самом деле есть данные, возвращаемые из firebase, но это так, как если бы метод никогда не возвращался, а futurebuilder просто продолжает ждать.