不能将类型'Map<String, Object>'的值分配给类型为"HashMap<字符串,动态>"颤振的变量



我的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是许多实现(例如LinkedHashMapHashMap(的抽象基类型。通常,不能在需要派生(更具体(类型的地方直接指定基类型;那可能不安全。您也不能仅仅将对象(即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>;

最新更新