繁体   English   中英

将 Firebase 认证用户与 Flutter 中的“用户”集合链接

[英]Linking Firebase Authenticated user with 'users' collection in Flutter

flutter 的新手,第一次在这里发帖!

我正在使用 flutter,使用 Firebase 和 Cloud Firestore 构建一个移动应用程序。 每个用户在经过身份验证后(通过 email 和密码),目前也被添加到 Firestore 中的“用户”集合中 - 如下所示:

报名方式:

    Future signUp() async {
if (passwordConfirmed()) {
  await FirebaseAuth.instance.createUserWithEmailAndPassword(
    email: _emailController.text.trim(),
    password: _passwordController.text.trim(),
  );

  // add user details
  addUserDetails(
    _firstNameController.text.trim(),
    _lastNameController.text.trim(),
    _emailController.text.trim(),
    _baseStationController.text.trim(),
  );
}
}

Future addUserDetails(String firstName, String lastName, String email,
  String baseStation) async {
await FirebaseFirestore.instance.collection('users').add({
  'first name': firstName,
  'last name': lastName,
  'email': email,
  'base station': baseStation,
});

}

当他们将信息输入表单中的文本字段并单击按钮时,将调用 signup() 方法。 这成功了,我的用户集合收到了数据,并且登录/注销正常工作。

这些用户有一个“基站”(在 Firestore 中存储为该用户文档中的一个字段),这是他们的工作地点。 我想在他们登录时显示一个欢迎屏幕,以便显示当前用户的“基站”。

我可以使用以下方法访问他们的 email 地址:

final thisUser = FirebaseAuth.instance.currentUser!;

然后例如在他们登录时显示:

Text('Hello, ${thisUser.email!}')

这没问题,但是...

我无法弄清楚他们的身份验证如何链接到集合,所以我想显示“当前用户”的“基站”,例如当他们登录时(我不希望他们必须 select 他们的基站每次选择者都已经提供了注册信息时。

顺便说一句 - 我还可以(单独)成功地从集合中读取数据,并(例如)使用用户集合信息创建一个 listView 构建器,但这适用于所有用户,而不是专门针对已登录的“当前用户” .

感激地收到所有帮助,如果我遗漏了任何东西,我们深表歉意。

update addUserDetails as follows    
 
 Future addUserDetails(String firstName, String lastName, String email,
              String baseStation) async {
            await FirebaseFirestore.instance.collection('users').doc(FirebaseAuth.instance.currentUser!.uid).set({
              'first name': firstName,
              'last name': lastName,
              'email': email,
              'base station': baseStation,
            });

如果您想获取特定的用户详细信息,请使用以下代码

  final user = await FirebaseFirestore.instance.collection('users').doc(FirebaseAuth.instance.currentUser!.uid).get();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM