decodeTableColumnWidth static method
Decodes the given value
to a TableColumnWidth. This expects the
value
to have the following structure:
{
"a": <TableColumnWidth>,
"b": <TableColumnWidth>,
"type": <"fixed" | "flex" | "fraction" | "intrinsic" | "max" | "min">,
"value": <double>
}
Implementation
static TableColumnWidth? decodeTableColumnWidth(
dynamic value, {
bool validate = true,
}) {
TableColumnWidth? result;
if (value is TableColumnWidth) {
result = value;
} else if (value != null) {
assert(SchemaValidator.validate(
schemaId: '$_baseSchemaUrl/table_column_width',
value: value,
validate: validate,
));
var type = value['type'];
switch (type) {
case 'fixed':
result = FixedColumnWidth(JsonClass.parseDouble(value['value'])!);
break;
case 'flex':
result = FlexColumnWidth(
JsonClass.parseDouble(value['value']) ?? 1.0,
);
break;
case 'fraction':
result = FractionColumnWidth(
JsonClass.parseDouble(value['value'])!,
);
break;
case 'intrinsic':
result = IntrinsicColumnWidth(
flex: JsonClass.parseDouble(value['value']),
);
break;
case 'max':
result = MaxColumnWidth(
decodeTableColumnWidth(value['a'], validate: false)!,
decodeTableColumnWidth(value['b'], validate: false)!,
);
break;
case 'min':
result = MinColumnWidth(
decodeTableColumnWidth(value['a'], validate: false)!,
decodeTableColumnWidth(value['b'], validate: false)!,
);
break;
default:
throw Exception(
'[decodeTableColumnWidth]: unknown type encountered: [$type]',
);
}
}
return result;
}