【发布时间】:2021-11-17 17:41:12
【问题描述】:
在我的应用程序中第一次登录后,我想使用 Futurebuilder 获取用户数据。因此,我想从 firestore 获取数据并将值存储在静态 Helper 类中:
/// Helper Class
class UserManager {
static Map<String, dynamic> userdata = null;
}
class FireBaseHandler {
final CollectionReference usersCol = FirebaseFirestore.instance.collection(
'users');
final myUser = FirebaseAuth.instance.currentUser;
/// fetch UserData
Future getUserData() async {
try {
await usersCol
.doc(myUser.uid)
.get().then((value) => UserManager.userdata = value.data());
return UserManager.userdata;
} catch (e) {
print(e.toString());
}
}
}
/// Futurebuilder in main Code
FireBaseHandler handler = FireBaseHandler();
return FutureBuilder(
future: handler.getUserData(), /// get userData and store it in Helper class
builder: (context, userDataSnapshot) {
if (userDataSnapshot.hasData) {
print(UserManager.userdata);
return HomeScreen();
} else {
return Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
);
}
});
问题是来自 Futurebuilder 的快照永远不会有数据,因此userDataSnapshot.hasData 永远不会为真,它会停留在加载屏幕中。只有当我热重载快照有数据并且我进入主屏幕时。有什么问题?
【问题讨论】:
标签: flutter dart future flutter-futurebuilder