getMapFromModelData method

Map<String, dynamic> getMapFromModelData({
  1. required Object model,
  2. required Object data,
})

Implementation

Map<String, dynamic> getMapFromModelData({required Object model, required Object data}) {
  List<String>? fieldList = getModelFieldNameList(model);
  Map<String, dynamic> dataMap = {};
  String fieldNamesTemp = data.toString().trim();
  var namesStrings = fieldNamesTemp.split("{");
  String dataWithoutSecondBracketLeft = "";
  for (int i = 0; i < namesStrings.length; i++) {
    if (i == 1) {
      dataWithoutSecondBracketLeft = namesStrings[i];
    } else if (i == namesStrings.length - 1) {
      dataWithoutSecondBracketLeft =
          dataWithoutSecondBracketLeft + "{" + namesStrings[i];
    } else {
      dataWithoutSecondBracketLeft =
          dataWithoutSecondBracketLeft + "{" + namesStrings[i];
    }
  }

  String dataWithoutSecondBracketRight = dataWithoutSecondBracketLeft.substring(0,dataWithoutSecondBracketLeft.length-1);

  var fieldNameListTemp = dataWithoutSecondBracketRight.split(", ");

  for (int j = 0; j < fieldList!.length; j++) {
    bool isStarted = false;
    String key = fieldList[j];
    String value = "";

    for (int i = 0; i < fieldNameListTemp.length; i++) {
      String fieldNameTemp = getFieldName(fieldNameListTemp[i]);
      if (fieldNameTemp == fieldList[j]) {
        value = getValueWithColonValidation(fieldNameListTemp[i]);
        dataMap[key] = value;
        isStarted = true;
      } else {
        if (isStarted) {
          if (j < fieldList.length - 1) {
            if (fieldNameTemp == fieldList[j + 1]) {
              isStarted = false;
              break;
            } else {
              value = value + ", " + fieldNameListTemp[i];
              dataMap[key] = value;
              isStarted = true;
            }
          } else {
            value = value + ", " + fieldNameListTemp[i];
            dataMap[key] = value;
            isStarted = true;
          }
        }
      }
    }
  }

  dataMap.forEach((key, value) {
    if (value == "null") {
      dataMap[key] = null;
    }
  });

  debugPrint("Data map : ${jsonEncode(dataMap)}");

  return dataMap;
}