我有一个关于Map(Object,Object)类型的类,我知道键都是字符串。如何轻松将其转换为Map(String,Object)?
具体来说,该对象来自Firestore查询
Firestore.instance.collection('schedule').document('nfl-2018').snapshots().data.data
Run Code Online (Sandbox Code Playgroud)
Map.from
(此处为文档)作为转换地图的方法似乎效果很好。正如 lrn 在下面的评论中指出的,这会创建所需类型的新Map 副本。它不会投射现有地图。
final Map<Object, Object> first = <Object, Object>{'a': 'test!', 'b': 1};
final Map<String, Object> second = Map<String, Object>.from(first);
Run Code Online (Sandbox Code Playgroud)
您可以在此处的DartPad 中尝试一下!
有多种方法可以转换或包装地图。主要的两个是Map.cast
方法和Map.from
构造函数。
Map<Object, Object> original = ...;
Map<String, Object> wrapped = original.cast<String, Object>();
Map<String, Object> newMap = Map<String, Object>.from(first);
Run Code Online (Sandbox Code Playgroud)
由wrapped
创建的地图Map.cast
是原始地图的包装。如果原始地图发生变化,则也会发生变化wrapped
。它使用起来很简单,但是每次访问都会附带一个额外的类型检查(因为包装程序会在运行时检查类型,并且每次都必须检查,因为原始映射可能已更改)。创建的地图Map.from
是一个新地图,这意味着将复制原始地图中的所有数据,并在创建地图时进行类型检查,但之后便是一个未连接到原始地图的单独地图。
归档时间: |
|
查看次数: |
820 次 |
最近记录: |