从Map<dynamic,dynamic>获取Map<String,dynamic> flutter

Tom*_*652 7 dart firebase firebase-realtime-database flutter

我有下面的代码:

 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);

Run Code Online (Sandbox Code Playgroud)

但数据类型是_InternalLinkedHashMap<String, dynamic>,我无法读取它的值,尽管我在上面做了丑陋的黑客攻击。

直接转换也不起作用:snapshot.value as Map<String, dynamic>抛出错误:'_InternalLinkedHashMap<Object?, Object?>' is not a subtype of type 'Map<String, dynamic>'

我需要有一个 Map<String,dynamic> 类型才能创建我的自定义类对象。

snapshot.value有一种动态类型,但它是一个返回实时数据库查询结果的 json 对象,并且没有关于如何将值检索到 Flutter 对象中的文档。

我已经尝试过这个答案,但我无法使用它,因为它jsonDecode()需要一个字符串作为参数。

Fra*_*len 11

当我尝试汤姆的回答时,我得到:

参数类型“对象?” 无法分配给参数类型“Map<dynamic,dynamic>”

为了解决这个问题,我必须这样做:

Map<String, dynamic>.from(snapshot.value as Map);
Run Code Online (Sandbox Code Playgroud)

事实上,由于我的数据库节点中的所有值都是布尔值,所以我能够这样做:

Map<String, bool>.from(snapshot.value as Map);
Run Code Online (Sandbox Code Playgroud)