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);
上一篇下一篇

猜你喜欢

热点阅读