【发布时间】:2021-04-04 11:45:54
【问题描述】:
我目前正在尝试通过 Firebase 身份验证在 Flutter 中获取用户 ID,并且我正在初始化 initState 中的一个变量,因为我想稍后使用该变量进行 Future 调用,以使用未来的构建器从 Firebase 实时数据库中获取数据. (这不起作用,因为我每次都必须重新加载屏幕,然后获取用户 ID)。 这是我的代码,
final FirebaseAuth auth = FirebaseAuth.instance;
User user;
String currentUId;
String currentEmail;
@override
void initState() {
super.initState();
user = auth.currentUser;
// Future.delayed(Duration(seconds: 5));
// sleep(Duration(seconds: 5));
currentUId = user.uid;
currentEmail = user.email;
print(currentUId);
}
我尝试使用睡眠,但它不起作用,还有其他地方可以让我进入睡眠,这将使程序等待用户 ID 然后运行程序的其余部分吗?
【问题讨论】:
-
我不明白为什么它应该起作用。试试
FirebaseAuth.instance.currentUser.uid。 -
@Andrej 我仍然需要热重新加载应用程序,以便在我提供给 FutureBuilder 时初始化 uid。有没有办法让程序休眠,直到我的变量'currentUId'被初始化然后继续?我已经尝试过 sleep(),但做不到。
-
你想用 uid 做什么?
-
@Andrej 我想要获取 uid,因为我想从 Firebase 实时数据库中获取数据,并且我存储这些数据的密钥基于用户注册时的 uid。所以现在,当我登录时,我必须先获取 uid,然后将其交给 FutureBuilder 以根据该特定 uid 从数据库中获取数据。
-
不用等待加载,直接传入
FutureBuilder即可。
标签: firebase flutter firebase-authentication