Dart中如何向Map添加动态值?新增键值对类型不匹配如何解决?
问题原因
你遇到的报错是Dart的强类型自动推断机制导致的:
初始化temp变量时,receiver字段下的所有值均为Map类型,Dart会自动将temp['receiver']推断为Map<String, Map<String, String>>类型,后续尝试给该Map插入String类型的值时就会触发类型不匹配错误。
解决方案
在初始化时显式声明Map的value类型为dynamic,关闭自动类型推断即可,示例代码如下:
// 方式1:显式指定receiver的value类型为dynamic Map temp = { "receiver": <String, dynamic>{ "Bank": {"account": '123'}, } }; // 方式2:直接指定整个temp的value类型为dynamic // Map<String, dynamic> temp = { // "receiver": { // "Bank": {"account": '123'}, // } // }; if(temp['receiver']['school'] == null){ temp['receiver']['school'] = '12'; }
修改后即可正常给receiver下新增不同类型的字段,符合你期望的最终Map结构要求。
内容的提问来源于stack exchange,提问作者IamVariable
相关产品推荐
相关产品推荐

