fromMap method

Record fromMap(
  1. Map<String, Object?>? map
)

Copies the value of the specified Map to this record.

Implementation

Record fromMap(Map<String,Object?>? map){
  if(map == null || _schema == null){
    return this;
  }
  if(_schema!.length <= map.length){
    for(String name in _schema!.fieldMap.keys){
      if(map.containsKey(name)){
          Object? value = map[name];
          FieldSchema field = _schema!.fieldMap[name]!;
          if(!field.isView){
            if(field.isRecord){
              if(value is Map && _dataSet != null && field.schema != null){
                setByName(name, _dataSet!.createNestedRecord(field.schema!).fromMap(value as Map<String,Object?>?));
              }
            }else if(field.isRecordList){
              if(_dataSet != null && field.schema != null){
                if(value is List){
                  setByName(name, _dataSet!.createNestedRecordList(field.schema!).fromMap(value));
                }else if(value is Map){
                  setByName(name, _dataSet!.createNestedRecordList(field.schema!).fromMapByMap(value));
                }
              }
            }else{
              setByName(name, value);
            }
          }
      }
    }
  }else{
    map.forEach(
      (name, value){
        if(containsName(name)){
          FieldSchema field = _schema!.fieldMap[name]!;
          if(!field.isView){
            if(field.isRecord){
              if(value is Map && _dataSet != null && field.schema != null){
                setByName(name, _dataSet!.createNestedRecord(field.schema!).fromMap(value as Map<String, Object?>?));
              }
            }else if(field.isRecordList){
              if(_dataSet != null && field.schema != null){
                if(value is List){
                  setByName(name, _dataSet!.createNestedRecordList(field.schema!).fromMap(value));
                }else if(value is Map){
                  setByName(name, _dataSet!.createNestedRecordList(field.schema!).fromMapByMap(value));
                }
              }
            }else{
              setByName(name, value);
            }
          }
        }
      }
    );
  }
  return this;
}