flutter - 关于 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 中使用作用域模型作为状态管理。
解决方案
到目前为止,我是用 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,
推荐阅读
- c - -ffunction-sections -fdata-sections 和 --gc-sections 不起作用吗?
- javascript - 小部件在其 URL 的查询字符串中使用键时的过程是什么?安全吗?
- react-native - 如何并排对齐图标和下拉菜单?
- php - 如何限制特定时间?
- angular - Angular 6,加载 svg 不会出现在 chrome 中
- serverless-framework - Swagger 定义的 API 无法在 Serverless 框架上本地执行
- angular - 所需的角度 IOS 年历,如 [https://github.com/MariemChaabeni/angular-calendar-year-view] 用于 angular6
- node.js - 使用 Mongoose 在 MongoDB 中设置的时间后文档不会过期
- mysql - 当 authentication_string 正确时,用户 'root'@'localhost' 的访问被拒绝(使用密码:YES)
- testing - 如何在 JMeter 的单个线程中调用的循环控制器之间添加计时器