firebase-realtime-database - 如何将 Firebase RTDB snapshot.value 传输到 Dart/Flutter 类实例
问题描述
我正在尝试将 Firebase RTDB 节点的数据快照传输到 Flutter 中合适的数据结构中。该节点包含一个键列表(用户ID),每个键都包含一个键列表(用户ID)。每个孩子都包含一个键/值对。我想将此数据传输到 AccessList 类型的对象列表中。我需要关于我的 AccessList 类定义应该是什么样子以及如何将数据移动到它们的实例中的建议——因为键值是可变的,我不能像在地图中那样简单地引用它们。
真的无法理解这一点。:-(
这是数据库节点的屏幕转储:
这是我检索到的 snapshot.value:
snapshot.value: {iSAwyU7bwKO8OBvFDr1DKYZjc5q1: {0cSLt3Sa0FS26QIvOLbin6MFsL43: {accessType: GivenTo}}, xuxkuOjwhOaKVWXtTaK2bP4chdF2: {kblbVzEtkRZ9QREJdSKOqxVJCYg1: {accessType: GivenBy}}, ayEcqzihYEOfTakY5FVaxSgLsjv2: {0cSLt3Sa0FS26QIvOLbin6MFsL43: {accessType: GivenBy}}, as22efYvdjhLeN6U8JF5ozEoQks2: {0cSLt3Sa0FS26QIvOLbin6MFsL43: {accessType: GivenBy}}, 0cSLt3Sa0FS26QIvOLbin6MFsL43: {iSAwyU7bwKO8OBvFDr1DKYZjc5q1: {accessType: GivenBy}, ayEcqzihYEOfTakY5FVaxSgLsjv2: {accessType: GivenTo}, as22efYvdjhLeN6U8JF5ozEoQks2: {accessType: GivenTo}}, kblbVzEtkRZ9QREJdSKOqxVJCYg1: {xuxkuOjwhOaKVWXtTaK2bP4chdF2: {accessType: GivenTo}}}
下面是 Dart 代码的结构,它定义了两个类,一个包含在另一个类中:
class AccessList {
final String authUserId;
final List<AccessListItem> accessListItems;
AccessList({
@required this.authUserId,
this.accessListItems,
});
}
class AccessListItem {
final String sailorId; // Access relates to this sailor id
final String accessType;
AccessListItem({
@required this.sailorId,
@required this.accessType,
});
}
到目前为止我尝试过的代码的简化版本是:
await _referenceSailorBoardAccess.once().then(
(DataSnapshot snapshot) {
final List<AccessList> _testFetchedAccessList = [];
final Map<String, dynamic> _testAccessListData =
Map<String, dynamic>.from(snapshot.value);
if (snapshot.value != null) {
_testAccessListData.forEach((String authId, dynamic accessData) {
final AccessList accessList = AccessList(
authUserId: authId,
accessListItems: accessData.toList,
);
_testFetchedAccessList.add(accessList);
});
}
它显然不起作用,因为我不知道如何处理 accessListItems 列表。我收到以下错误:
NoSuchMethodError:类“_InternalLinkedHashMap”没有实例获取器“toList”。I/flutter (16564):接收方:_LinkedHashMap len:1 I/flutter (16564):尝试调用:toList
真的希望你们能帮助我!
解决方案
推荐阅读
- sql-server - 关于 EXEC、EXECUTE、SP_EXECUTE 和 SP_EXECUTESQL
- c++ - 我如何编码快速视频 rgb 平面格式?
- python - 绘制后,我们可以在 Python 图中对 x 轴进行排序吗?
- python - 使用 python 在 GUI 上显示乳胶
- c++ - 如何运行外部程序,将内存地址传递给读/写?
- angular - Angular 6 project not loading in IE11
- mysql - SELECT GROUP_BY and GROUP_CONCAT same values in a table only if one of the values has a NULL field
- javascript - Make button respond to the Enter Key
- r - GGally::ggpairs 在处理 NA 时对不同的变量表现不同
- xls - 无法从 Excel 文件输入中读取数据