美文网首页
Map赋值的问题

Map赋值的问题

作者: 晓函 | 来源:发表于2020-04-23 17:36 被阅读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);

相关文章

网友评论

      本文标题:Map赋值的问题

      本文链接:https://www.haomeiwen.com/subject/hcnaihtx.html