makeData method
dynamic
makeData(
- List properties, {
- int? parentId = -1,
})
Implementation
dynamic makeData(List properties, {int? parentId = -1}){
Map data = {};
List propertiesCopy = List.from(properties);
int len = properties.length;
int removeCount = 0;
for(int i = 0; i < len; i++) {
Map v = properties[i];
if(v['parentId'] == parentId) {
propertiesCopy.removeAt(i - removeCount);
removeCount++;
String? type = v['type'];
String? rule = v['rule'] == null || v['rule'] == '' ? '0' : v['rule'];
dynamic index = v['name'];
switch(type) {
case 'Boolean': {
data[index] = Random().nextInt(1) > 0;
}break;
case 'Number': {
if(rule!.contains('-')) {
List ranges = rule.split('-');
int min = int.parse(ranges[0]);
int max = int.parse(ranges[1]);
data[index] = min + Random().nextInt(max - min >= 1 ? max - min : 1);
}else {
int iRule = int.parse(rule);
data[index] = iRule >= 1 ? Random().nextInt(iRule) : iRule;
}
}break;
case 'String': {
List set = ['a', 'b', 'c', 'd', 'e', 'f',
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'p', 'q', 'r', 't', 'u', 'v',
'w', 'x', 'y', 'z', '0', '1', '2', '3',
'4', '5', '6', '7', '8', '9'];
int nums;
if(rule!.contains('-')) {
List ranges = rule.split('-');
int min = int.parse(ranges[0]);
int max = int.parse(ranges[1]);
nums = min + Random().nextInt(max - min >= 1 ? max - min : 1);
}else {
int iRule = int.parse(rule);
nums = iRule >= 1 ? Random().nextInt(iRule) : iRule;
}
data[index] = List.generate(nums, (index){
return set[Random().nextInt(35)];
}).join();
}break;
case 'Array': {
int nums;
if(rule!.contains('-')) {
List ranges = rule.split('-');
int min = int.parse(ranges[0]);
int max = int.parse(ranges[1]);
nums = min + Random().nextInt(max - min >= 1 ? max - min : 1);
}else {
int iRule = int.parse(rule);
nums = iRule >= 1 ? Random().nextInt(iRule) : iRule;
}
List items = [];
for(int aIndex = 0; aIndex < nums; aIndex++) {
items.add(makeData(propertiesCopy, parentId: v['id']));
}
data[index] = items;
}break;
case 'Object': {
data[index] = makeData(propertiesCopy, parentId: v['id']);
}break;
}
}
}
return data;
}