flutter 二维数组赋值问题

发布于:2024-04-25 ⋅ 阅读:(17) ⋅ 点赞:(0)
class ExpCellDetailP0J0 {
  int num;//序号
  SizeDetail sizeDetail; //格口尺寸参数
  bool isSelected; //是否选中

  SelectFileData backFillFile;//本地格口规格设置弹窗里填写后的回填中显示用的格口图片、视频文件


  ExpCellDetailP0J0(
      {this.num,
      this.sizeDetail,
      this.isSelected = false,

     // this.backFillFile,
      }) {
    this.sizeDetail = sizeDetail ?? SizeDetail();
  }

  ExpCellDetailP0J0.fromJson(dynamic json) {
    num = json['num'];
    sizeDetail = json['sizeDetail'] != null ? SizeDetail.fromJson(json['sizeDetail']) : null;
  }

  Map<String, dynamic> toJson() {
    final map = <String, dynamic>{};
    map['num'] = num;
    if (sizeDetail != null) {
      map['sizeDetail'] = sizeDetail.toJson();
    }
    return map;
  }
}


class SizeDetail {
  int longSize; //长
  int wideSize; //宽
  int deepSize; //深

  SizeDetail({this.longSize, this.wideSize,this.deepSize});

  SizeDetail.fromJson(dynamic json) {
    longSize = json['longSize'];
    wideSize = json['wideSize'];
    deepSize = json['deepSize'];
  }

  Map<String, dynamic> toJson() {
    final map = <String, dynamic>{};
    map['longSize'] = longSize;
    map['wideSize'] = wideSize;
    map['deepSize'] = deepSize;
    return map;
  }
}
 List<List<ExpCellDetailP0J0>> _expCellSpecsList = [];

//批量设置
  _batchSet(ExpCellDetailP0J0 cellInfo){
    print('批量赋值');
    for (var row in _expCellSpecsList) {
      for (var cell in row) {
        cell.publishStatus = cellInfo.publishStatus;
        cell.row = cellInfo.row;
        cell.column = cellInfo.column;
        cell.buyChargeDetailList = cellInfo.buyChargeDetailList;
        cell.rateChargeDetailList = cellInfo.rateChargeDetailList;
        cell.userCellFileUrlPOJODetail = cellInfo.userCellFileUrlPOJODetail;
        cell.sizeDetail = cellInfo.sizeDetail;
        cell.isSelected = false;
        cell.backFillFile = cellInfo.backFillFile;
      }
    }
    setState(() {});
  }



_singleSet(){
                                        for (var row in _expCellSpecsList) {
                                          for (var cell in row) {
                                            print('cell =${cell.toJson()}');
                                          }
                                        }
                                        print(' row= $row   column= $column');
                                        ExpCellDetailP0J0 resultBean = result;
                                        print('填写前的回填:${_expCellSpecsList[row][column].toJson()}');
                                       // _expCellSpecsList[row][column].sizeDetail = resultBean.sizeDetail;
                                         _expCellSpecsList[row][column].sizeDetail.deepSize = resultBean.sizeDetail.deepSize;
                                         _expCellSpecsList[row][column].sizeDetail.longSize = resultBean.sizeDetail.longSize;
                               
                                      print('填写后的回填:${_expCellSpecsList[row][column].toJson()}');

                                        for (var row in _expCellSpecsList) {
                                          for (var cell in row) {
                                            print('cell2 =${cell.toJson()}');
                                          }
                                        }
                                        _setBackFillFile(row,column);
                                      setState(() {});
                                    }
 

问题描述:给二维数组批量赋值后,再进行单个对象的深度赋值后_expCellSpecsList[row][column].sizeDetail.deepSize = resultBean.sizeDetail.deepSize;查询二维数组 print('cell2 =${cell.toJson()}');打印出来却是整个数组的deepSize参数都被赋值了;
更改:将赋值方法从_expCellSpecsList[row][column].sizeDetail.longSize = resultBean.sizeDetail.longSize;改为_expCellSpecsList[row][column].sizeDetail = resultBean.sizeDetail;后正常了。

问题原因在哪里?求路过的大神指点一下