在我的main.dart
文件中,我想检查用户是否已登录,以便将他引导到适当的屏幕。我正在使用SharedPreference存储来自Firebase的用户详细信息。如何告诉我的函数等待SharedPreference异步函数完成执行,然后才能呈现适当的小部件。
下面是我的代码:
Widget _gotoHomeScreen() {
AuthService.getuserPrefEmail().then((email) {
print(email);
AuthService.email = email;
if (email == null) {
return LoginScreen();
} else {
AuthService.uid = email;
return HomeMenuScreen();
}
});
}
3条答案
按热度按时间xxe27gdn1#
你不必等待构建,你应该构建一些东西,向用户显示应用程序正在加载一些东西(或黑屏),然后在功能结束时重建。
您可以在创建小部件时将一个Widget变量设置为默认值,比如使用
CircularProgressIndicator
,然后使用setState更改它,如下所示:另一种方法是使用一个变量来通知你加载的情况,比如
bool finishedLoading
,然后调用setState
来改变它的值,使用你设置的email
变量来知道用户什么时候登录,然后执行一个条件构建,如下所示:dhxwm5r42#
使用简单的FutureBuilder!
https://api.flutter.dev/flutter/widgets/FutureBuilder-class.html
mwngjboj3#
有一个异步firebase函数吗?
回答=〉使用FutureBuilder或StreamBuilder
流生成器
未来建筑师