【问题标题】:Custom user model to firebase authentication自定义用户模型到 Firebase 身份验证
【发布时间】:2021-03-27 07:12:20
【问题描述】:

我有一个具有以下代码的 AuthService 类

UserData _userDetFromFirebaseUser(User user) {
    if (user != null) {
      return UserData(uid: user.uid);
    } else {
      return null;
    }
  }

  Stream<UserData> get userData {
    return _firebaseAuth.authStateChanges().map(_userDetFromFirebaseUser);
  }

我使用了 Flutter 提供程序包中的 StreamProvider

Widget build(BuildContext context) {
    return StreamProvider<UserData>.value(
      value: AuthService().userData,
      child: MaterialApp(
        home: HomeController(),
      ),
    );
  }

一切正常,但问题是我想将自定义变量添加到 UserData 模型并通过提供程序获取它,但我不知道该怎么做。你能帮帮我吗?

用户模型是这样的

class UserData {
  final String uid;
  String name;
  String phoneNumber;

  UserData({this.uid});
}

另外:我尝试调用 Provider.of 方法并在应用程序中添加字段,但随后应用程序重新启动状态丢失我想保存该状态(模型中的字段变量)我是 Provider 和状态管理的新手所以请详细说明答案。

【问题讨论】:

    标签: firebase flutter dart


    【解决方案1】:

    这是我接下来的任务之一。根据我目前的理解,您在 FireStore 中创建了一个名为 /users 的根级文件夹,并为每个用户添加一个文档,其中用户的 UID 作为文档 ID。

    不幸的是,在我知道这是否足以在登录时获取该用户文档的所有字段以及返回的用户元素之前,我仍在与其他 Firestore 挑战作斗争。

    【讨论】:

    • 这不是我的意思。在主控制器中,我想检查名称和其他一些字段是否为空,如果,我需要向他们显示另一个页面以添加该字段。问题是当应用程序重新启动时,字段变为空并一次又一次地进入同一页面,因为状态不受管理,我不知道如何管理/保存状态
    • 我还是不明白这个问题。当您将字段保存到 FireStore 并重新启动应用程序时,为什么当您从 Firestore 读取它们时,这些字段又是空的?!
    • 我没有使用 Firestore。我正在考虑在本地存储或以共享偏好或其他方式存储
    猜你喜欢
    • 2020-04-01
    • 2022-12-10
    • 1970-01-01
    • 2016-10-18
    • 2021-01-09
    • 1970-01-01
    • 2016-07-09
    • 2014-08-23
    • 1970-01-01
    相关资源
    最近更新 更多