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,
));
final type = value['type'];
switch (type) {
case 'fixed':
result =
FixedColumnWidth(JsonClass.maybeParseDouble(value['value'])!);
break;
case 'flex':
result = FlexColumnWidth(
JsonClass.maybeParseDouble(value['value']) ?? 1.0,
);
break;
case 'fraction':
result = FractionColumnWidth(
JsonClass.maybeParseDouble(value['value'])!,
);
break;
case 'intrinsic':
result = IntrinsicColumnWidth(
flex: JsonClass.maybeParseDouble(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;
}