putNestedMapValue method

dynamic putNestedMapValue(
  1. String key,
  2. dynamic value
)

Implementation

putNestedMapValue(String key,dynamic value){
  if(key.indexOf("[")>0) {
    key=key.replaceAll("]","");
    List<String> keysList = key.split("[");
    Map<int,Map> mapTree={};
    for (int i = 0; i < keysList.length-1; i++) {
      Map currentMap=new Map();
      if(i==0){
        if(this.containsKey(keysList[i])){
          currentMap=Map.from(this.getMap(keysList[i]));
        }
        else{
          mapTree[i]={};
        }
      }
      else if(i>0){
        Map previousMap=Map.from(mapTree.getMap(i-1));
        if(previousMap.containsKey(keysList[i])){
          currentMap=previousMap.getMap(keysList[i]);
        }
      }
      mapTree[i]=currentMap;
    }
    Map lastMap=mapTree[keysList.length-2]!;
    lastMap[keysList.last]=value;
    mapTree[keysList.length-2]!=lastMap;
    for (int i = keysList.length-2; i > 0 ; i--) {
      Map parentMap=mapTree.getMap(i-1);
      Map childMap=mapTree.getMap(i);
      parentMap[keysList[i]]=childMap;
      mapTree[i-1]=parentMap;
    }
    this[keysList.first]=mapTree[0];
  }
}