decodeInputBorder static method
Decodes the given value
to an InputBorder. This expects a specific
"type" attribute to be one of:
outline
underline
The expected structure depends on the exact "type" value passed in.
Type: outline
{
borderRadius: "<BorderRadius>",
borderSide: "<BorderSide>",
gapPadding: "<double>"
}
Type: underline
{
borderRadius: "<BorderRadius>",
borderSide: "<BorderSide>"
}
See also:
Implementation
static InputBorder? decodeInputBorder(
dynamic value, {
bool validate = true,
}) {
InputBorder? result;
if (value is InputBorder) {
result = value;
} else {
assert(value == null || value['type'] is String);
_checkSupported(
'InputBorder.type',
[
'outline',
'underline',
],
value == null ? null : value['type'],
);
if (value != null) {
assert(SchemaValidator.validate(
schemaId: '$_baseSchemaUrl/input_border',
value: value,
validate: validate,
));
final String? type = value['type'];
switch (type) {
case 'outline':
result = OutlineInputBorder(
borderRadius: decodeBorderRadius(
value['borderRadius'],
validate: false,
) ??
const BorderRadius.all(Radius.circular(4.0)),
borderSide: decodeBorderSide(
value['borderSide'],
validate: false,
) ??
const BorderSide(),
gapPadding: JsonClass.maybeParseDouble(value['gapPadding'], 4.0)!,
);
break;
case 'underline':
result = UnderlineInputBorder(
borderRadius: decodeBorderRadius(
value['borderRadius'],
validate: false,
) ??
const BorderRadius.only(
topLeft: Radius.circular(4.0),
topRight: Radius.circular(4.0),
),
borderSide: decodeBorderSide(
value['borderSide'],
validate: false,
) ??
const BorderSide(),
);
break;
}
}
}
return result;
}