关于Firebase实时数据库

时间:2020-06-04 09:09:22

标签: flutter flutter-dependencies

我正在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中的状态管理。

img

1 个答案:

答案 0 :(得分:0)

到目前为止,我已经使用javascript做到了,但在文档中似乎没有什么不同:

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,