我正在尝试使用Firebase实时数据库在我的flutter项目中实现CRUD操作。 我在Firebase的项目中有一个实时数据库。 firebase数据库结构的结构如下图所示。
我可以成功写入一个条目并从 DeviceTokens 中读取所有条目。但是,面临的问题是尝试从 DeviceTokens 中读取和显示单个条目时。
我想根据 id 从 DeviceTokens 中获取任何条目,并显示 device_token 和已订阅该ID的值。
到目前为止,我已经尝试了两种方法。
方法1:
final dbRef = FirebaseDatabase.instance.reference().child('DeviceTokens');
FutureBuilder(
future: dbRef.once(),
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
if (snapshot.hasData) {
Map<dynamic, dynamic> values = snapshot.data.value;
values.forEach((key, value) {
print('The values are $values');
});
}
},
),
这将返回所有条目作为键值对:
的值是{a136634e4045b9a9:{订阅:1,device_token:asdfadfgb ikfghoiwrutf08rhgk ENF gh98edf7 gu0sdfjnv sdjfu 0sdg},ssdf4r34terf:{订阅:1,device_token:sdfasdfasdfasdfasdf9q04urq3fo4tiq3wrng},b66080b213607d48:{订阅:0,device_token:dmnjjUuuTHWZS5X87x6jwS :APA91bEszXYEVMf6u-IMGoi4RaFgESYzVVtSRX5zJ72OD21vUqLJi47QjshNjmCBngOHyv18EaZL40RKRSTFQWjAJdKFPIFA9rW_EhhLKwmz5KDw_b} b {b}
方法2:到目前为止对我来说最好的情况 在这种情况下,它仅返回我要查找的条目,但是我无法分别打印出 device_token 或 subscribed 数据。 我的问题是FutureBuilder(
future: dbRef
.orderByChild('device_token')
.equalTo(
'asdfadfgb ikfghoiwrutf08rhgk enf gh98edf7 gu0sdfjnv sdjfu 0sdg').once(),
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
if (snapshot.hasData) {
Map<dynamic, dynamic> values = snapshot.data.value;
values.forEach((key, value) {
print('The values are $values');
});
}
},
),