putNestedMapValue method
dynamic
putNestedMapValue(
- String key,
- 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];
}
}