【发布时间】:2020-05-17 10:17:14
【问题描述】:
我有一个 Flutter 中的 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)];
});
}
由于某种原因,futurebuilder 调用的 getGamesLost 永远不会完成。我可以在最后一次返回之前打印userData 的值,这意味着实际上有数据从firebase 返回,但好像该方法实际上从未返回,futurebuilder 只是一直在等待。
【问题讨论】:
-
没有错误,我也把它从void改成了int。如果我将其更改为 String 或任何其他数据类型,它会显示错误,但不会无效。
标签: asynchronous flutter dart promise