【发布时间】:2021-03-06 15:19:43
【问题描述】:
我正在使用 flutter + firebase(auth 和 firestore)构建一个学生导师应用程序。
我有一个包装小部件,用于检查用户是否已登录。如果未登录,我会将他们引导至身份验证屏幕(登录/注册)。如果他们已登录,那么我想检查他们是学生还是导师。
换句话说,在我的包装器中,我需要一种方法来从 firestore 检索用户数据并检查他们的角色,然后将他们引导到适当的屏幕。我不知道该怎么做。请帮忙。这是我的包装类
`class Wrapper extends StatelessWidget {
static const String id = 'wrapper_screen';
@override
Widget build(BuildContext context) {
final user = Provider.of<User>(context, listen: false); //FirebaseAuth.instance.authStateChanges()
if (user == null) {
return AuthenticationScreen();
}
else {
// I want to get user profile from firestore using user.uid and based on the role, show them different views
return DeciderView();
}
}`.
您可以想到一个 Uber 克隆,我希望乘客和司机看到不同的屏幕。如何添加此功能?这就是我希望我的小部件树的样子:1
【问题讨论】:
-
"我想使用 user.uid 并基于角色从 firestore 获取用户配置文件" 你如何存储角色?在 Firestore 文档中?在自定义声明中?
-
我有一个自定义集合。每个用户都是一个文档,其中 key = uid 和两个字段:电子邮件和角色。当用户注册时,会从表单中获取这些详细信息,并在集合中创建相应的文档。
-
如果您有用户 uid,只需获取 Firestore 文档:pub.dev/documentation/cloud_firestore/latest/cloud_firestore/…
-
我明白了。我的问题可能过于初级,但由于这会返回 Future,我如何在包装类(无状态小部件)中使用 async/await 以确保在将用户引导至相关页面之前获得结果?
-
@siaabd001 使用“() 异步 {}();”技术。这使得函数可以立即运行。将您的代码放入 {}。
标签: firebase flutter google-cloud-firestore