我的代码如下:
Map<dynamic, dynamic> result = snapshot.value;
Map<String, dynamic> data = Map<String, dynamic>();
for (dynamic type in result.keys) {
data[type.toString()] = result[type];
}
print(data);
print(data.runtimeType);但是数据类型是_InternalLinkedHashMap<String, dynamic>,我无法读取它的值,尽管我上面做了一些丑陋的攻击。
直接强制转换也不起作用:snapshot.value as Map<String, dynamic>抛出错误:'_InternalLinkedHashMap<Object?, Object?>' is not a subtype of type 'Map<String, dynamic>'
我需要一个Map类型来创建我的自定义类对象。
snapshot.value有一种动态类型,但它是一个json对象,它返回实时数据库查询的结果,并且没有关于如何将值检索到颤振对象的文档。
我尝试过这个回答,但是我不能使用它,因为jsonDecode()接受一个字符串作为参数。
发布于 2022-02-23 00:24:39
当我尝试汤姆的回答时,我得到了:
参数类型为“Object?”不能分配参数类型'Map‘
为了解决这个问题,我不得不:
Map<String, dynamic>.from(snapshot.value as Map);实际上,由于我的数据库节点中的所有值都是布尔值,所以我能够这样做:
Map<String, bool>.from(snapshot.value as Map);发布于 2021-07-24 09:14:12
最近的这个Firecast视频在27分钟就解决了我的问题。
对于数据模型对象中的另一个嵌套HashMap,我还出现了一个非显式颤振错误,无法直接转换。
解决方案是对数据模型对象中的每个嵌套Map使用Map<String, dynamic>.from(snapshot.value)。
编辑:firebase_database包的最新版本请参见下面的回答--这是正确的答案。
发布于 2021-07-16 17:30:00
我使用DartPad测试了您的代码:
void main() {
//Custom json
Map<dynamic, dynamic> json = {
"window": {
"title": "Sample Konfabulator Widget",
"name": "main_window",
"width": 500,
"height": 500
}
};
Map<dynamic, dynamic> result = json;
Map<String, dynamic> data = Map<String, dynamic>();
for (dynamic type in result.keys) {
data[type.toString()] = result[type];
}
print(data);
print(data['window']);
print(data['window']['title']);
}打印1:
{窗口:{标题:示例Konfabulator,名称: main_window,宽度: 500,高度:500}
打印2:
{标题:示例Konfabulator,名称: main_window,宽度: 500,高度: 500}
打印3:
样例Konfabulator
我不明白这个问题
https://stackoverflow.com/questions/68412968
复制相似问题