decodeMarginSpec static method
Decodes the object from an int or Map-like dynamic structure. This expects the JSON format to be of the following structure:
{
"bottomMarginSpec": <MarginSpec>,
"leftMarginSpec": <MarginSpec>,
"rightMarginSpec": <MarginSpec>,
"topMarginSpec": <MarginSpec>
}
Implementation
static charts.MarginSpec? decodeMarginSpec(
dynamic map, {
bool validate = true,
}) {
charts.MarginSpec? result;
if (map is charts.MarginSpec) {
result = map;
} else if ((map is num || map is String) &&
JsonClass.parseInt(map) != null) {
result = charts.MarginSpec.fixedPixel(JsonClass.parseInt(map));
} else if (map != null) {
assert(SchemaValidator.validate(
schemaId: '$_baseSchemaUrl/margin_spec',
value: map,
validate: validate,
));
final type = map['type'];
switch (type) {
case 'percent':
result = charts.MarginSpec.fromPercent(
maxPercent: JsonClass.parseInt(map['maxPercent']),
minPercent: JsonClass.parseInt(map['minPercent']),
);
break;
case 'pixel':
if (map is num || map is String) {
result = charts.MarginSpec.fromPixel(
maxPixel: JsonClass.parseInt(map['maxPixel']),
minPixel: JsonClass.parseInt(map['minPixel']),
);
} else {
result = charts.MarginSpec.fromPixel(
maxPixel: JsonClass.parseInt(
map['maxPixel'],
),
minPixel: JsonClass.parseInt(
map['minPixel'],
),
);
}
break;
default:
throw Exception('Unknown [MarginSpec.type] encountered: [$type]');
}
}
return result;
}