首页 > 解决方案 > 关于 Firebase 实时数据库

问题描述

我正在 Flutter 中开发 Firebase 实时数据库。我将用户信息及其相应数据存储在数据库中。我的代码如下:

//User Auth Class

class UserAuth{
  final String id;
  final String email;
  final String token;

  UserAuth({@required this.id, @required this.email, @required this.token});
}

//User Details Class for storing data of corresponding user

class UserDetails{
  final String userDetailsId;
  final String name;
  final String email;

  UserDetails({@required this.userDetailsId,@required this.name, @required this.email});
}

//I am using this code to add userDetails in database.

  List<UserDetails> _detailsList = [];
  UserDetails _details;

Future<bool> addUserDetails(String username, String email) async {
    _isLoading = true;
    notifyListeners();
    final Map<String, dynamic> userDetails = {
      'username': username,
      'email': email,
    };
    try {
      final http.Response response = await http.post(
          'https://intro-to-firebase-711d4.firebaseio.com/Users.json',
          body: json.encode(userDetails));

      if (response.statusCode != 200 && response.statusCode != 201) {
        _isLoading = false;
        notifyListeners();
        return false;
      }

      final Map<String, dynamic> responseData = json.decode(response.body);

      _details = UserDetails(
          userDetailsId: responseData['name'], name: username, email: email);

      _detailsList.add(_details);
      _isLoading = false;
      notifyListeners();

      return true;
    } catch (error) {
      _isLoading = false;
      notifyListeners();
      return false;
    }
  }

现在我想获取以下突出显示的用户 id,以便如何获取它。我在 Flutter 中使用作用域模型作为状态管理。

图像

标签: flutterflutter-dependencies

解决方案


到目前为止,我是用 javascript 完成的,但在文档中,flutter 似乎并没有什么不同:

private void writeNewUser(String userId, String name, String email) {
    User user = new User(name, email);

    mDatabase.child("users").child(userId).setValue(user);
}

https://firebase.google.com/docs/database/android/read-and-write?authuser=0

这是文档中显示的示例。有了.child('users')正确的部分,您就可以.child(userId)访问这些值。

您现在要做的就是定义变量userId

您可以按如下方式实现

  stream: FirebaseDatabase.instance
        .reference()
        .child('users')            
        .equalTo(userId)
        .onValue,

推荐阅读