美文网首页
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