Map赋值的问题
2020-04-23 本文已影响0人
晓函
出错代码如下:
void processData(Map data){
Map<String,dynamic> retData = data;
retData['sign'] = 'abcds';
}
Map data = {'uid':1};
processData(data);
原因:Map赋值单个值后,固定为Map<String,int>类型了,无法赋值其他类型的Map值。
简化后的出错:
Map data = {'uid':1};
data['x'] = 'abc';
简化后的出错:
Map data = {'uid':1};
Map<String, dynamic> b = data;
出错信息:
error:type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'Map<String, dynamic>'
解决办法:
方法一
直接定义Map<String,dynamic> data;
方法二
用Map<String, dynamic>.from(data) 在处理函数中强制转为Map<String, dynamic>
void processData(Map data){
Map<String,dynamic> retData = Map<String, dynamic>.from(data);
retData['sign'] = 'abcds';
}
Map data = {'uid':1};
processData(data);
简化后的解决方式:
Map data = {'uid':1};
Map<String, dynamic> b = Map<String, dynamic>.from(data);