【问题标题】:How can I display on a widget the current user data from Firebase to Flutter如何在小部件上显示从 Firebase 到 Flutter 的当前用户数据
【发布时间】:2021-04-22 05:56:07
【问题描述】:

如何在一个widget上显示当前用户提交的数据? 我已经尝试过使用 streamBuilder 和 FutureBuilder 和 nada。

Firebase Users data

Screen where the current user data should be displayed

我可以通过使用:docs[0]['country'] 设法显示第一个 Firebase 文档中的数据(国家、用户名、电子邮件、密码),但这是不对的......它需要显示数据来自当前用户,并不总是来自第一个文档的数据。

我已经尝试过 ListView.builder(),但是当您向下滚动时,您会看到所有数据都是来自所有用户的列表,这也是错误的。

我期待看到您的回答。 提前感谢各位的帮助。

【问题讨论】:

    标签: firebase flutter


    【解决方案1】:

    据我了解,您希望获取有关当前用户或任何用户的数据。首先检测userId,你就可以使用这段代码了(我为我的项目写了非常简单的代码,你可以应用到你的代码中。)

    这是模型类

    class MyUser{
      String snapshotId;
      String userId;
      String name;
      MyUser({this.userId,this.snapshotId,this.name});
      factory MyUser.fromSnaphot(DocumentSnapshot snapshot){
        return MyUser(
          snapshotId:snapshot.id,
          userId:snapshot.data()['userId'],
          name:snapshot.data()['name'],
          );
      }
    

    这是服务类

      final FirebaseFirestore _fBaseFireStore=FirebaseFirestore.instance;
      CollectionReference _collectionRef;
      UserService(){
        _collectionRef=_fBaseFireStore.collection('Users');
      }
      Stream<MyUser> getUserFromUserId(String userId){
        var ref=_collectionRef.where('userId',isEqualTo:userId);
        return ref.snapshots().map((event) => MyUser.fromSnaphot(event.docs[0]));
      }
    

    获取用户函数

    final UserService _userService = getIt<UserService>();
    return _userService.getUserFromUserId(userId);
    

    【讨论】:

    • 感谢您的帮助!但我已经修复了它...虽然收到了 badstate 消息。
    • 不客气,如果你应用这个架构(服务、模型、视图模型)将有干净的代码,你可以非常快速和干净地解决问题。如果你喜欢我的回答,请点击这个答案很有用按钮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 2019-05-28
    • 2019-09-25
    相关资源
    最近更新 更多