我的HashMap
为<String, dynamic>
,我想填充映射。我遇到的问题是,它告诉我地图不是动态类型的。下面是我的代码
HashMap<String, dynamic> stuff1 = {"id": 1, "region": "North",
"shippingAddress": "Flyover", "list": []};
我如何创建<String, dynamic>
的HashMap
,我知道有些人会建议使用HashMap<String, Object> stuff
,但我有一个类似下面的list
List<HashMap<String, dynamic>>? stuffList;
它有来自服务器的数据,但我只想把stuff1
添加到列表的顶部,我想用HashMap of <String, dynamic>
添加它,因为如果我用<String, Object>
添加它,就不起作用
DartMap
文本(例如{"id": 1, "region": "North", ...}
创建符合抽象Map
接口的对象。默认情况下,构造的对象是LinkedHashMap
实例,但文本的静态(在编译时已知(类型仅为Map
。
Map
是许多实现(例如LinkedHashMap
和HashMap
(的抽象基类型。通常,不能在需要派生(更具体(类型的地方直接指定基类型;那可能不安全。您也不能仅仅将对象(即LinkedHashMap
(强制转换为HashMap
;CCD_ 20和CCD_。
如果确实想要一个无序的HashMap
,则必须使用HashMap
构造函数。例如:
HashMap<String, dynamic> stuff1 = HashMap.of({
"id": 1,
"region": "North",
"shippingAddress": "Flyover",
"list": [],
});
或者,考虑使用常规的Map
(同样,默认情况下是LinkedHashMap
(,它已经是基于哈希的,但它还维护插入顺序。
尝试显式实例化HashMap
final Map<String, dynamic> stuff1 = HashMap()..addAll({"id": 1, "region": "North", "shippingAddress": "Flyover", "list": []});
另一种可能的解决方案是将as HashMap<String, dynamic>
作为stuff1
的结束
Map<String, dynamic> stuff1 = {"id": 1, "region": "North", "shippingAddress": "Flyover", "list": []} as HashMap<String, dynamic>;